Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Реализация драйвера клиента, вызываемая 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 |