EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD コールバック関数 (ucxendpoint.h)

UCX が静的ストリームを作成するために呼び出すクライアント ドライバーの実装。

構文

EVT_UCX_ENDPOINT_STATIC_STREAMS_ADD EvtUcxEndpointStaticStreamsAdd;

NTSTATUS EvtUcxEndpointStaticStreamsAdd(
  [in] UCXENDPOINT UcxEndpoint,
  [in] ULONG NumberOfStreams,
  [in] PUCXSSTREAMS_INIT UcxStaticStreamsInit
)
{...}

パラメーター

[in] UcxEndpoint

エンドポイントを表す UCXENDPOINT オブジェクトへのハンドル。

[in] NumberOfStreams

作成する既定以外のストリームの数。

[in] UcxStaticStreamsInit

初期化情報を含む不透明な構造体へのポインター。 この構造は UCX によって管理されます。

戻り値

操作が成功した場合、コールバック関数は STATUS_SUCCESS、またはNT_SUCCESS(status) が TRUE と等しい別の状態値を返す必要があります。 それ以外の場合は、NT_SUCCESS(status) が FALSE の状態値を返す必要があります。

注釈

UCX クライアント ドライバーは、 UcxEndpointCreate メソッドを呼び出すことによって、USB ホスト コントローラー拡張機能 (UCX) にこのコールバック関数を登録します。

このコールバック関数は、 UcxStaticStreamsCreate メソッドを呼び出して UCX 静的ストリーム オブジェクトを作成します。 1 つのエンドポイントに関連付けることができる UCX 静的ストリーム オブジェクトは 1 つだけです。 次に、ドライバーは UcxStaticStreamsSetStreamInfo をストリームごとに 1 回呼び出して、各ストリームのキューを作成します。

UCX がクライアント ドライバーの EVT_UCX_ENDPOINT_STATIC_STREAMS_ENABLE コールバック関数を呼び出すまで、静的ストリーム オブジェクトは有効になりません。

NTSTATUS
Endpoint_EvtEndpointStaticStreamsAdd(
    UCXENDPOINT         UcxEndpoint,
    ULONG               NumberOfStreams,
    PUCXSSTREAMS_INIT   UcxStaticStreamsInit
    )
{
    NTSTATUS                    status;
    WDF_OBJECT_ATTRIBUTES       wdfAttributes;
    UCXSSTREAMS                 ucxStaticStreams;
    STREAM_INFO                 streamInfo;
    ULONG                       streamId;

    TRY {

        WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&wdfAttributes, STATIC_STREAMS_CONTEXT);

        status = UcxStaticStreamsCreate(UcxEndpoint,
                                        &UcxStaticStreamsInit,
                                        &wdfAttributes,
                                        &ucxStaticStreams);
        // … error handling …

        for (i = 0, streamId = 1; i < NumberOfStreams; i += 1, streamId += 1) {

            // … create WDF queue …

            STREAM_INFO_INIT(&streamInfo,
                             wdfQueue,
                             streamId);

            UcxStaticStreamsSetStreamInfo(ucxStaticStreams, &streamInfo);
        }

要件

要件
対象プラットフォーム Windows
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header ucxendpoint.h (Ucxclass.h、Ucxendpoint.h を含む)
IRQL PASSIVE_LEVEL