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


REMOTE_NDIS_PACKET_MSG

REMOTE_NDIS_PACKET_MSG инкапсулирует пакеты данных NDIS для формирования одного сообщения данных.

Объединение нескольких элементов REMOTE_NDIS_PACKET_MSG формирует сообщение с несколькими пакетами. Каждый отдельный компонент REMOTE_NDIS_PACKET_MSG создается, как описано ниже. Отличие от сообщения с одним пакетом заключается в том, что поле MessageLength в каждом заголовке REMOTE_NDIS_PACKET_MSG содержит несколько дополнительных байтов заполнения. Эти байты заполнения добавляются ко всем REMOTE_NDIS_PACKET_MSG, кроме последнего, чтобы последующие REMOTE_NDIS_PACKET_MSG начинались с соответствующей границы байтов. Для сообщений, отправляемых с устройства на узел, это заполнение должно привести к каждому REMOTE_NDIS_PACKET_MSG начиная с байтового смещения, кратного 8 байтам, начиная с начала сообщения с несколькими пакетами. Когда узел отправляет на устройство сообщение с несколькими пакетами, он будет соответствовать параметру PacketAlignmentFactor , заданному устройством.

Формат REMOTE_NDIS_PACKET_MSG определен в следующей таблице.

Offset Размер Поле Описание

0

4

MessageType

Указывает тип отправляемого сообщения. Задайте значение 0x1.

4

4

MessageLength

Длина сообщения в байтах, включая добавленные данные пакетов, данные OOB, сведения о каждом пакете, а также внутреннее и внешнее заполнение.

8

4

DataOffset

Задает смещение в байтах от начала поля DataOffset этого сообщения до начала данных. Это целое число, кратное 4.

12

4

DataLength

Указывает количество байтов в содержимом данных этого сообщения.

16

4

OOBDataOffset

Задает смещение в байтах первой записи данных OOB с начала поля DataOffset этого сообщения. Установите значение 0, если нет данных OOB. В противном случае это целое число, кратное 4.

20

4

OOBDataLength

Указывает в байтах общую длину данных OOB.

24

4

NumOOBDataElements

Указывает количество OOB-записей в этом сообщении.

28

4

PerPacketInfoOffset

Указывает в байтах смещение от начала поля DataOffset в сообщении REMOTE_NDIS_PACKET_MSG данных до начала первой записи данных для каждого пакета. Установите значение 0, если нет данных для каждого пакета. В противном случае это целое число, кратное 4.

32

4

PerPacketInfoLength

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

36

4

VcHandle

Зарезервировано для устройств, ориентированных на подключение. Задайте нулевое значение.

40

4

Зарезервировано

Зарезервировано. Задайте нулевое значение.

Формат одной записи данных OOB указан в следующей таблице.

Offset Размер Поле Описание

0

4

Размер

Длина этого заголовка OOB в байтах и добавленные данные OOB и заполнение. Это целое число, кратное 4.

4

4

Тип

Не определено для устройств версии 802.3.

8

4

ClassInformationOffset

Смещение в байтах от начала этой записи данных OOB до начала данных OOB.

(N)

...

Данные OOB

Данные OOB; Дополнительные сведения см. в документации microsoft Windows Driver Development Kit (DDK).

Примечание ( N) равно значению ClassInformationOffset.

В следующей таблице определяется формат записи данных для каждого пакета.

Offset Размер Поле Описание

0

4

Размер

Длина в байтах этого заголовка для каждого пакета и добавление данных и заполнений для каждого пакета. Это целое число, кратное 4.

4

4

Тип

Задайте одно из допустимых значений для NDIS_PER_PACKET_INFO_FROM_PACKET, как описано в пакете средств разработки драйверов для Windows 2000 (DDK).

8

4

PerPacketInformationOffset

Смещение в байтах от начала этой записи данных о пакете до начала информационных данных для каждого пакета.

(N)

...

Данные Per-Packet

данные Per-Packet; Дополнительные сведения см. в документации по Windows 2000 DDK.

Примечание . Значение (N) равно значению Параметра PerPacketInformationOffset.

Комментарии

Каждая REMOTE_NDIS_PACKET_MSG может содержать одну или несколько записей данных OOB. NumOOBDataElements указывает количество записей данных OOB в этом сообщении. Записи данных OOB должны отображаться последовательно. Поле OOBDataLength указывает длину всего блока данных OOB в байтах. Поле OOBDataOffset указывает смещение байтов от начала поля DataOffset до начала блока данных OOB. Дополнительные сведения о данных пакетов OOB см. в спецификации NDIS в Windows 2000 DDK.

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

Сведения об OOB в настоящее время не определены для устройств 802.3.

Каждая REMOTE_NDIS_PACKET_MSG может содержать одну или несколько записей данных для каждого пакета. Сведения о каждом пакете используются для передачи метаданных пакетов, таких как контрольная сумма TCP. Поле PerPacketInfoOffset указывает смещение в байтах от начала поля DataOffset до начала записи данных для каждого пакета. Поле OOBDataLength указывает длину байтов для записи данных для каждого пакета. Дополнительные сведения о данных для каждого пакета см. в разделе Windows 2000 DDK.

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

Удаленное устройство NDIS должно отправлять и получать данные через пакеты данных NDIS. Шина, которую использует устройство, определяет, как эти пакеты передаются с узла на устройство и от устройства к узлу. Это может быть общая память или, в случае USB, Isoch и Bulk. Пакеты NDIS также могут содержать данные вне диапазона (OOB), а также данные, передаваемые по сети.

Удаленное устройство NDIS передает пакеты NDIS, инкапсулированные как REMOTE_NDIS_PACKET_MSG через канал данных. Как устройства без подключения (например, 802.3), так и устройства, ориентированные на подключение (например, ATM), используют одну и ту же структуру сообщений пакетов, чтобы упростить общий код для обработки пакетов. Каждое сообщение REMOTE_NDIS_PACKET_MSG содержит сведения об одной сетевой единице данных (например, кадр Ethernet 802.3).

Дополнительные сведения о данных о внеполосных пакетах или данных для каждого пакета см. в разделах Windows 2000 DDK NDIS.

Требования

Версия

Доступно в Microsoft Windows XP и более поздних версиях операционных систем Windows. Также доступно в Windows 2000 в виде распространяемых двоичных файлов.

Заголовок

Rndis.h (включая Rndis.h)