Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
USB передает данные по проводу в виде USB-пакетов, которые не следует путать с NDIS или сетевыми пакетами. Максимальная длина USB-пакета в конечную точку USB или из нее ограничена значением поля wMaxPacketSize дескриптора конечной точки. Для bulk-пайпов максимальный размер пакета составляет 64 байта. Из-за ограничений определенных контроллеров USB-узла существует штраф, связанный с использованием коротких USB-пакетов (например, менее 64 байтов при потоковой передаче данных).
Чтобы обойти это ограничение, удаленные USB-устройства NDIS могут добавлять нулевые байты в качестве заполнителя к сообщениям данных, чтобы избежать появления коротких пакетов (в пределах ограничений поля MaxTransferSizeREMOTE_NDIS_INITIALIZE_MSG). Поле MessageLength окончательного REMOTE_NDIS_PACKET_MSG не включает эти добавленные байты заполнения.
Если устройство передало последнюю доступную REMOTE_NDIS_PACKET_MSG, так что в очереди устройства больше ничего не осталось, то можно отправить короткий USB-пакет.
Если последнее REMOTE_NDIS_PACKET_MSG сообщения данных NDIS, отправляемого устройством (без нулевой байтовой выравнивающей вставки), заканчивается USB-пакетом, длина которого точно соответствует wMaxPacketSize для этой конечной точки, устройство может отправить дополнительный однобайтовый нулевой пакет в качестве добавленной части передачи. Некоторые реализации устройств упрощены благодаря этому разрешению.
Аналогичным образом некоторые микросхемы USB на стороне устройства не обнаруживают конец полученной передачи USB, которая заканчивается USB-пакетом, длина которого — wMaxPacketSize для этой конечной точки. По этой причине хост должен добавить нулевой пакет длиной в один байт к передаче данных, которая в противном случае будет иметь длину, кратной wMaxPacketSize конечной точки получателя. Устройства USB Remote NDIS должны допускать добавленный байт. Поле MessageLength окончательного REMOTE_NDIS_PACKET_MSG не включает этот добавленный байт.