UrsDeviceInitialize 関数 (ursdevice.h)
USB デュアルロール コントローラーに関連する操作をサポートするようにフレームワーク デバイス オブジェクトを初期化し、関連するイベント コールバック関数を USB デュアルロール コントローラー クラス拡張機能に登録します。
構文
NTSTATUS UrsDeviceInitialize(
[in] WDFDEVICE Device,
[in] PURS_CONFIG Config
);
パラメーター
[in] Device
WdfDeviceCreate の前回の呼び出しでクライアント ドライバーが取得したフレームワーク デバイス オブジェクトへのハンドル。
[in] Config
クライアント ドライバーが URS_CONFIG_INIT を呼び出して初期化した URS_CONFIG構造体へのポインター。
戻り値
メソッドは、操作が成功した場合STATUS_SUCCESSを返します。 それ以外の場合、このメソッドは適切な NTSTATUS エラー コードを返す可能性があります。
注釈
USB デュアルロール コントローラーのクライアント ドライバーは、 WdfDeviceCreate 呼び出しの後にこのメソッドを呼び出す必要があります。
クライアント ドライバーは 、EvtDriverDeviceAdd 実装でこのメソッドを呼び出します。
この呼び出し中に、クライアント ドライバーが提供するイベント コールバックの実装も、 URS_CONFIGの適切なメンバーを設定することによって登録されます。
メソッドは、ホスト ロールと関数ロールのリソース リストと、コントローラーに送信される IOCTL 要求を処理するために必要なキューを作成します。 各ロール切り替え操作では、現在のロールの子デバイス スタックが破棄され、新しいロールのデバイス スタックが読み込まれます。 UrsDeviceInitialize メソッドは、これらのデバイス スタックの構築に使用される識別情報を取得します。 メソッドは、基になるバス (ACPI など) からデバイスに関する情報も取得します。
例
EVT_URS_DEVICE_FILTER_RESOURCE_REQUIREMENTS EvtUrsFilterResourceRequirements;
EVT_URS_SET_ROLE EvtUrsSetRole;
EvtDriverDeviceAdd (
_In_ WDFDRIVER Driver,
_Inout_ PWDFDEVICE_INIT DeviceInit
)
{
...
WDFDEVICE device;
NTSTATUS status;
WDF_OBJECT_ATTRIBUTES attributes;
URS_CONFIG ursConfig;
...
status = UrsDeviceInitInitialize(DeviceInit);
if (!NT_SUCCESS(status)) {
//UrsDeviceInitInitialize failed.
return status;
}
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, DRIVER_CONTEXT);
status = WdfDeviceCreate(&DeviceInit, &attributes, &device);
if (!NT_SUCCESS(status)) {
// WdfDeviceCreate failed.
return status;
}
URS_CONFIG_INIT(&ursConfig, UrsHostInterfaceTypeXhci, EvtUrsFilterResourceRequirements);
ursConfig.EvtUrsSetRole = EvtUrsSetRole;
status = UrsDeviceInitialize(device, &ursConfig);
if (!NT_SUCCESS(status)) {
// UrsDeviceInitialize failed.
return status;
}
...
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 |
サポートされている最小のサーバー | Windows Server 2016 |
対象プラットフォーム | Windows |
最小 KMDF バージョン | 1.15 |
Header | ursdevice.h (Urscx.h を含む) |
Library | Urscxstub.lib |
IRQL | PASSIVE_LEVEL |