共用方式為


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

另請參閱

WdfDeviceCreate