REMOTE_NDIS_PACKET_MSG
REMOTE_NDIS_PACKET_MSG封装 NDIS 数据包以形成单个数据消息。
串联多个REMOTE_NDIS_PACKET_MSG元素会形成多包消息。 每个单独的REMOTE_NDIS_PACKET_MSG组件都按如下所述构造。 与单数据包消息的区别在于,每个REMOTE_NDIS_PACKET_MSG标头中的 MessageLength 字段包括一些额外的填充字节。 这些填充字节将追加到除最后一个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 字段开头的偏移量(以字节为单位)。 如果没有 OOB 数据,则设置为零。 否则,这是 4 的整数倍数。 |
20 |
4 |
OOBDataLength |
以字节为单位指定 OOB 数据的总长度。 |
24 |
4 |
NumOOBDataElements |
指定此消息中的 OOB 记录数。 |
28 |
4 |
PerPacketInfoOffset |
指定从REMOTE_NDIS_PACKET_MSG数据消息中 DataOffset 字段的开头到第一个每数据包信息数据记录的开头的偏移量(以字节为单位)。 如果没有每个数据包的数据,则设置为零。 否则,这是 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 驱动程序开发工具包 (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 数据包数据的详细信息,请参阅 Windows 2000 DDK 中的 NDIS 规范。
如果多个 OOB 数据块附加到REMOTE_NDIS_PACKET_MSG消息,则每个后续 OOB 数据记录必须紧跟上一个 OOB 记录的数据。
当前未为 802.3 设备定义 OOB 信息。
每个REMOTE_NDIS_PACKET_MSG可能包含一个或多个每个数据包信息的数据记录。 按数据包信息用于传递数据包元数据,例如 TCP 校验和。 PerPacketInfoOffset 字段指示从 DataOffset 字段的开头到每数据包信息数据记录开头的字节偏移量。 OOBDataLength 字段指示每个数据包信息数据记录的字节长度。 有关每数据包信息数据的详细信息,请参阅 Windows 2000 DDK。
如果存在多个每数据包信息数据块,则每个后续的每个数据包信息数据记录必须紧跟上一个每数据包信息记录的数据。
远程 NDIS 设备必须通过 NDIS 数据包发送和接收数据。 设备使用的总线确定这些数据包如何从主机传递到设备,以及设备到主机。 它可以是共享内存,或者对于 USB、Isoch 和 Bulk 管道。 NDIS 数据包还可能包含带外 (OOB) 数据以及通过网络传输的数据。
远程 NDIS 设备跨数据通道传输封装为 REMOTE_NDIS_PACKET_MSG 的 NDIS 数据包。 无连接 ((如 802.3) )和面向连接的 ((如 ATM) 设备)使用相同的数据包消息结构来简化数据包处理的通用代码。 每个 REMOTE_NDIS_PACKET_MSG 消息都包含有关单个网络数据单元的信息, (以太网 802.3 帧) 。
有关带外数据包数据或每数据包信息数据的详细信息,请参阅 Windows 2000 DDK NDIS 部分。
要求
版本 |
在 Microsoft Windows XP 和更高版本的 Windows 操作系统中可用。 在 Windows 2000 中也可用作可再发行二进制文件。 |
标头 |
Rndis.h (包括 Rndis.h) |