функция обратного вызова 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(состояние) равно TRUE. В противном случае он должен вернуть значение состояния, для которого значение NT_SUCCESS(status) равно FALSE.

Замечания

Драйвер клиента UCX регистрирует эту функцию обратного вызова с расширением контроллера USB-узла (UCX), вызывая метод UcxEndpointCreate.

Эта функция обратного вызова создает объект статических потоков UCX путем вызова метода UcxStaticStreamsCreate. С одной конечной точкой может быть связан только один объект статических потоков UCX. Затем драйвер вызывает UcxStaticStreamsSetStreamInfo один раз на поток, чтобы создать очередь для каждого потока.

Объект статических потоков не включен, пока 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);
        }

Требования

Требование Ценность
целевая платформа Виндоус
минимальная версия KMDF 1.0
минимальная версия UMDF 2.0
заголовка ucxendpoint.h (include Ucxclass.h, Ucxendpoint.h)
IRQL PASSIVE_LEVEL