NET_PACKET 結構 (packet.h)
表示單一網路封包。
語法
typedef struct _NET_PACKET {
UINT32 FragmentIndex;
UINT16 FragmentCount;
NET_PACKET_LAYOUT Layout;
UINT8 Ignore : 1;
UINT8 Scratch : 1;
UINT8 Reserved1 : 6;
} NET_PACKET;
成員
FragmentIndex
此封包承載中第一個 NET_FRAGMENT 結構片段環中的索引。
FragmentCount
屬於此封包的 NET_FRAGMENT 結構數目。
Layout
針對傳輸佇列,如果主機堆疊已啟用使用通訊協議標頭的工作卸除,請指定每個通訊協定欄位的唯讀位移。 例如,如果已啟用 TCP 總和檢查碼卸除,此成員會指定 TCP 標頭的位移。 否則,這個成員是空的。
針對接收佇列,如果主機堆疊已啟用使用通訊協議標頭的工作卸除,請設定 layer2Type、Layer3Type和 Layer4Type 旗標。 當沒有任何工作卸除時,此成員是空的。
Ignore
針對接收佇列,用戶端會設定此字段,以防止封包被指示給主機。 例如,如果硬體在將此封包片段的位元組寫入此數據緩衝區時遇到 DMA 錯誤,則用戶端可以將此位元組設定為卸載部分封包。
對於傳輸佇列,此欄位是唯讀的。 如果設定,表示客戶端不應該傳輸封包。
Scratch
用戶端可用於任何用途的位域值。 重複使用 NET_PACKET 時,此值會重設為零。
Reserved1
保留。 用戶端驅動程式不得讀取或寫入此值。
言論
每個 NET_PACKET 結構都代表單一網路框架,並包含適用於所有封包的基本元數據,例如框架配置。 NET_PACKET 包含至少一個 NET_FRAGMENT,描述封包數據所在系統記憶體中的位置。
NET_PACKET 結構可以是 NET_RING 結構中的專案。
要求
要求 | 價值 |
---|---|
最低 KMDF 版本 | 1.29 |
最低 UMDF 版本 | 2.33 |
標頭 | packet.h |