Поделиться через


функция обратного вызова 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 регистрирует эту функцию обратного вызова в расширении 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);
        }

Требования

Требование Значение
Целевая платформа Windows
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть ucxendpoint.h (включая Ucxclass.h, Ucxendpoint.h)
IRQL PASSIVE_LEVEL