UcxRootHubCreate 関数 (ucxroothub.h)

指定したホスト コントローラーのルート ハブ オブジェクトを作成します。

構文

NTSTATUS UcxRootHubCreate(
  [in]           UCXCONTROLLER          Controller,
  [in]           PUCX_ROOTHUB_CONFIG    Config,
  [in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
  [out]          UCXROOTHUB             *RootHub
);

パラメーター

[in] Controller

コントローラー オブジェクトへのハンドル。 クライアント ドライバーは、 UcxControllerCreate の以前の呼び出しでハンドルを取得しました。

[in] Config

ルート ハブ オブジェクトを作成するためのさまざまな構成操作を記述する UCX_ROOTHUB_CONFIG 構造体へのポインター。

[in, optional] Attributes

ルート ハブ オブジェクトの属性を指定する呼び出し元によって割り当てられた WDF_OBJECT_ATTRIBUTES 構造体へのポインター。

[out] RootHub

新しいルート ハブ オブジェクトへのハンドルを受け取る変数へのポインター。

戻り値

メソッドは、操作が成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合、このメソッドは適切な NTSTATUS エラー コードを返す可能性があります。

注釈

ホスト コントローラーのクライアント ドライバーは、 WdfDeviceCreate 呼び出しの後にこのメソッドを呼び出す必要があります。 新しいルート ハブ オブジェクトの親はコントローラー オブジェクトです。

このメソッドを呼び出す前に、クライアント ドライバーは UCX_ROOTHUB_CONFIG_INIT を呼び出して UCX_ROOTHUB_CONFIG 構造体 を初期化する必要があります。 UCX_ROOTHUB_CONFIGの適切なメンバーを設定する呼び出しによって、ドライバー提供のイベント コールバック実装への関数ポインター 指定します。 ルート ハブ オブジェクトでイベントが発生すると、UCX はこれらのコールバック関数を呼び出します。

    UCX_ROOTHUB_CONFIG                      ucxRootHubConfig;
    UCXROOTHUB                              ucxRootHub;
    PUCX_ROOTHUB_CONTEXT                    ucxRootHubContext;
  

    // Create the root hub
    //
    UCX_ROOTHUB_CONFIG_INIT(&ucxRootHubConfig,
                            RootHub_EvtRootHubClearHubFeature,
                            RootHub_EvtRootHubClearPortFeature,
                            RootHub_EvtRootHubGetHubStatus,
                            RootHub_EvtRootHubGetPortStatus,
                            RootHub_EvtRootHubSetHubFeature,
                            RootHub_EvtRootHubSetPortFeature,
                            RootHub_EvtRootHubGetPortErrorCount,
                            RootHub_EvtRootHubInterruptTx,
                            RootHub_EvtRootHubGetInfo,
                            RootHub_EvtRootHubGet20PortInfo,
                            RootHub_EvtRootHubGet30PortInfo);

    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&objectAttributes, UCX_ROOTHUB_CONTEXT);

    status = UcxRootHubCreate(ucxController,
                              &ucxRootHubConfig,
                              &objectAttributes,
                              &ucxRootHub);

    if (!NT_SUCCESS(status)) {
        DbgTrace(TL_ERROR, Controller, "UcxRootHubCreate Failed %!STATUS!", status);
        goto Controller_WdfEvtDeviceAddEnd;
    }

    DbgTrace(TL_INFO, Controller, "UCX Root Hub created.");

    ucxControllerContext->UcxRootHub = ucxRootHub;

    ucxRootHubContext = GetUcxRootHubContext(ucxRootHub);
    ucxRootHubContext->UcxController = ucxController;

要件

要件
サポートされている最小のクライアント Windows 10
Header ucxroothub.h
IRQL PASSIVE_LEVEL

こちらもご覧ください

UCX_ROOTHUB_CONFIG