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 |