UcxControllerCreate 関数 (ucxcontroller.h)
ホスト コントローラー オブジェクトを作成します。
構文
NTSTATUS UcxControllerCreate(
[in] WDFDEVICE Device,
[in] PUCX_CONTROLLER_CONFIG Config,
[in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] UCXCONTROLLER *Controller
);
パラメーター
[in] Device
WdfDeviceCreate の前回の呼び出しでクライアント ドライバーが取得したフレームワーク デバイス オブジェクトへのハンドル。
[in] Config
UCX_CONTROLLER_CONFIG_INITを呼び出してクライアント ドライバーが 初期化した呼 び出し元によって割り当てられたUCX_CONTROLLER_CONFIG構造体へのポインター。 構造体には、オブジェクトの作成に必要な構成情報が含まれています。
[in, optional] Attributes
コントローラー オブジェクトの属性を指定する呼び出し元によって割り当てられた WDF_OBJECT_ATTRIBUTES 構造体へのポインター。
[out] Controller
新しいコントローラー オブジェクトへのハンドルを受け取る変数へのポインター。
戻り値
メソッドは、操作が成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合、このメソッドは適切な NTSTATUS エラー コードを返す可能性があります。
注釈
ホスト コントローラーのクライアント ドライバーは、 WdfDeviceCreate 呼び出しの後にこのメソッドを呼び出す必要があります。 新しいホスト コントローラー オブジェクトの親は、フレームワーク デバイス オブジェクトです。
この呼び出し中に、クライアント ドライバーによって提供されるイベント コールバックの実装も登録されます。 UCX_CONTROLLER_CONFIGの適切なメンバーを設定する呼び出しによって、これらの関数への関数ポインター を指定します。
親型が PCI の場合は、 UCX_CONTROLLER_CONFIG_SET_PCI_INFO を呼び出して UCX_CONTROLLER_CONFIGを初期化します。 親が ACPI の場合は、代わりに UCX_CONTROLLER_CONFIG_SET_ACPI_INFO を呼び出します。
メソッドは、USB デバイスに送信された IOCTL 要求を処理するために必要なさまざまなキューを作成します。
メソッドは、デバイス インターフェイス GUID_DEVINTERFACE_USB_HOST_CONTROLLERとシンボリック リンクを登録して、ユーザー モード コンポーネントがコントローラーへのハンドルを開くことができるようにします。
例
WDF_OBJECT_ATTRIBUTES objectAttributes;
UCX_CONTROLLER_CONFIG ucxControllerConfig;
UCXCONTROLLER ucxController;
PUCX_CONTROLLER_CONTEXT ucxControllerContext;
// Create the controller
//
UCX_CONTROLLER_CONFIG_INIT(&ucxControllerConfig, "");
ucxControllerConfig.EvtControllerUsbDeviceAdd = UsbDevice_EvtControllerUsbDeviceAdd;
ucxControllerConfig.EvtControllerQueryUsbCapability = Controller_EvtControllerQueryUsbCapability;
ucxControllerConfig.EvtControllerReset = Controller_EvtControllerReset;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&objectAttributes, UCX_CONTROLLER_CONTEXT);
status = UcxControllerCreate(wdfDevice,
&ucxControllerConfig,
&objectAttributes,
&ucxController);
if (!NT_SUCCESS(status)) {
DbgTrace(TL_ERROR, Controller, "UcxControllerCreate Failed %!STATUS!", status);
goto Controller_WdfEvtDeviceAddEnd;
}
DbgTrace(TL_INFO, Controller, "UCX Controller created.");
controllerContext->UcxController = ucxController;
ucxControllerContext = GetUcxControllerContext(ucxController);
ucxControllerContext->WdfDevice = wdfDevice;
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 |
対象プラットフォーム | Windows |
最小 KMDF バージョン | 1.0 |
最小 UMDF バージョン | 2.0 |
Header | ucxcontroller.h (Ucxclass.h を含む) |
IRQL | PASSIVE_LEVEL |