функция обратного вызова 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 |