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 |
ターゲット プラットフォーム の | ウィンドウズ |
最小 KMDF バージョン | 1.15 |
ヘッダー | ursdevice.h (Urscx.h を含む) |
ライブラリ | Urscxstub.lib |
IRQL | PASSIVE_LEVEL |