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 結構的指標,用戶端驅動程式會藉由呼叫 UCX_CONTROLLER_CONFIG_INIT 初始化。 結構包含建立物件所需的組態資訊。
[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 |
標頭 | ucxcontroller.h (包含 Ucxclass.h) |
IRQL | PASSIVE_LEVEL |