функция 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