Изохронные Передачи Данных
Каждый буфер, поставленный в очередь для изохронного канала требуется, чтобы быть видимым как поток выборок.(Each buffer queued for an isochronous pipe is required to be viewable as a stream of samples.) Как и для всех передач по каналу, клиент устанавливает стратегию для использования этого изохронного канала, включая соответствующий интервал обслуживания для этого клиента. Потерянные или отсутствующие байты, которые обнаружены на входе, и проблемы передачи, которые отмечены на выходе, указываются клиенту.
Клиент занимая очередь первого буфера, запускает сервис потока в канале.(The client queues a first buffer, starting the pipe streaming service.) Чтобы поддерживать непрерывную поточную модель передачи, используемую во всех изохронных передачах, очереди клиентов дополнительно буферируются перед, удалением из текущего буфера.(To maintain the continuous streaming transfer model used in all isochronous transfers, the client queues an additional buffer before the current buffer is retired.)
Требуется, чтобы USBD было разрешено предоставить просмотр потока выборок потоку данных клиента.(The USBD is required to be able to provide a sample stream view of the client’s data stream.) Другими словами, при использовании метода синхронизации определенного клиентом, точное пакетирование данных скрыто от клиента.(In other words, using the client’s specified method of synchronization, the precise packetization of the data is hidden from the client.) Дополнительно, данная транзакция всегда полностью содержится внутри некоторого буфера данных клиента.
Для выходного канала, клиент предоставляет буфер данных. USBD распределяет данные по кадрам в течении периода обслуживания, используя выбранный клиентом метод синхронизации.
Для входного канала, клиент должен предоставить пустой буфер, достаточно большой, чтобы удержать максимальное число байтов, поставляемых в период обслуживания устройством клиента. Система USB разделяет определенную USB упаковочную информацию от потока так, что байты непрерывны в буфере клиента.(The USB system strips USB defined packaging information from the stream such that bytes are contiguous in the client’s buffer.) При указании на отсутствие или на недопустимые байты, USBD оставляет пространство, которое байты заняли бы на в буфере и идентифицируют ошибку. Одно из следствий использования метода без синхронизации, - это то, что это зарезервированное место учитывается в максимальном размере пакета. Уведомление об удалении буфера происходит, когда завершается IRP. Обратите внимание, что входной буфер не должен быть полным когда возвращается клиенту.
USBD необязательно может предоставлять дополнительные просмотры изохронных потоков данных. Также требуется, чтобы USBD был способен предоставить просмотр потока пакетов потоку данных клиента.