Передачи данных
Базисом всех связей клиента и функции является интерфейс: пучек каналов, связанных с отдельным устройством USB.
Данный интерфейс управляется точно одним клиентом на хосте. Клиент инициализирует каждый канал интерфейса, устанавливая стратегию для этого канала. Она включает максимальное количество передаваемых данных в IRP и максимальный интервал обслуживания канала. Интервал обслуживания устанавливается в миллисекундах и описывает интервал, за который данные IRP будут переданы по изохронному каналу. Он описывает интервал опроса для канала прерывания.(It describes the polling interval for an interrupt pipe.) Клиенту сообщают, когда определенный запрос завершен. Клиент управляет размером каждого IRP так, чтобы поддерживать рабочий цикл и ограничения времени отклика. Дополнительная информация стратегии включает информацию уведомления для клиента.
Клиент обеспечивает требуемое пространство буфера, чтобы задержать переданные данные. Система USB использует стратегию, чтобы определить требуемую дополнительную рабочую область.
Клиент видит данные как непрерывный последовательный поток, которым он управляет способом похожим на те же потоки, предоставляемые другими типами технологии шины.(The client views its data as a contiguous serial stream, which it manages in a similar manner to those streams provided over other types of bus technologies.) Внутри, система USB может, в зависимости от собственной стратегии и любых ограничений хост контроллера, разбивать запрос клиента на меньшие запросы, которые будут посланы по USB. Однако, два требования должны быть выполнены всякий раз, когда USB система выбирает, чтобы предпринять такое разделение:
- Разделение потока данных на меньшие куски не видно клиенту.
- USB выборки - не, разбивают по транзакциям шины. Обратитесь к Главе 9 для определения выборки USB и их связи с настоящим размером выборок канала.
Когда клиент хочет передать данные, он пошлет IRP к USBD. В зависимости от направления передачи данных, будет предоставляться полный или пустой буфер данных. Когда запрос завершен (успешно или из-за состояния ошибки), IRP и его состояние возвращаются клиенту. То что относится к этому состоянию также предоставляется как базис транзакции.(Where relevant, this status is also provided on a per transaction basis.)