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


функция WinUsb_ReadIsochPipeAsap (winusb.h)

Функция WinUsb_ReadIsochPipeAsap отправляет запрос, который считывает данные из изохронной конечной точки IN.

Синтаксис

BOOL WinUsb_ReadIsochPipeAsap(
  [in]           WINUSB_ISOCH_BUFFER_HANDLE  BufferHandle,
  [in]           ULONG                       Offset,
  [in]           ULONG                       Length,
  [in]           BOOL                        ContinueStream,
  [in]           ULONG                       NumberOfPackets,
                 PUSBD_ISO_PACKET_DESCRIPTOR IsoPacketDescriptors,
  [in, optional] LPOVERLAPPED                Overlapped
);

Параметры

[in] BufferHandle

Непрозрачный дескриптор буфера передачи, зарегистрированный при предыдущем вызове WinUsb_RegisterIsochBuffer.

[in] Offset

Смещение в буфер относительно начала передачи.

[in] Length

Длина буфера передачи в байтах.

[in] ContinueStream

Указывает, что передача должна быть отправлена только в том случае, если ее можно запланировать в первом кадре после последней ожидающей передачи.

[in] NumberOfPackets

Общее количество изохронных пакетов, необходимых для хранения буфера передачи. Также указывает количество элементов в массиве, на который указывает isoPacketDescriptors.

IsoPacketDescriptors

Массив USBD_ISO_PACKET_DESCRIPTOR , который получает сведения о каждом изохронном пакете при передаче.

[in, optional] Overlapped

Указатель на структуру OVERLAPPED , используемую для асинхронных операций.

Возвращаемое значение

WinUsb_ReadIsochPipeAsap возвращает значение TRUE, если операция выполнена успешно. В противном случае эта функция возвращает значение FALSE, и вызывающий объект может получить зарегистрированную ошибку, вызвав Метод GetLastError.

Если вызывающий объект задает для ContinueStream значение TRUE, передача завершается ошибкой, если Winusb.sys не может запланировать передачу для продолжения потока без удаления одного или нескольких кадров.

Комментарии

WinUsb_ReadIsochPipeAsap позволяет стеку драйверов USB выбрать начальный номер кадра для передачи. Если одна или несколько передач уже находятся в ожидании в конечной точке, передача будет запланирована для номера кадра, следующего за номером последнего кадра последней ожидающей передачи.

WinUsb_ReadIsochPipeAsap пакетизирует буфер передачи, чтобы в каждом интервале узел получал максимально допустимое количество байтов для каждого интервала. Максимальное значение в байтах определяется дескриптором конечной точки для полной и высокоскоростной конечных точек, а также дескриптором-компаньоном для конечных точек SuperSpeed. Если вызывающий объект отправляет несколько запросов на чтение для потоковой передачи данных с устройства, размер передачи должен быть кратным максимальному значению байтов на интервал (возвращаемый WinUsb_QueryPipeEx) * 8 / интервал.

Из-за упаковки передачи, используемой в базовом интерфейсе режима ядра, минимальная задержка уведомления для приложения или драйвера составляет 1 мс.

Требования

   
Минимальная версия клиента Windows 8.1
Минимальная версия сервера Windows Server 2012 R2
Целевая платформа Универсальное
Верхняя часть winusb.h (включая Winusb.h)
Библиотека Winusb.lib
DLL Winusb.dll

См. также раздел

Отправка изохронных передач по USB из классического приложения WinUSB

Функции WinUSB