次の方法で共有


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

こちらもご覧ください

WdfDeviceCreate