共用方式為


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

NET_PACKET_LAYOUT結構。

針對傳輸佇列,如果主機堆疊已啟用使用通訊協議標頭的工作卸除,請指定每個通訊協定欄位的唯讀位移。 例如,如果已啟用 TCP 總和檢查碼卸除,這個成員會指定 TCP 標頭的位移。 否則,這個成員是空的。

針對接收佇列,如果主機堆疊已啟用使用通訊協議標頭的工作卸除,請設定 Layer2Type、Layer3TypeLayer4Type 旗標。 當沒有任何工作卸除時,此成員是空的。

Ignore

針對接收佇列,客戶端會設定此字段,以防止將封包指示給主機。 例如,如果硬體在將位元組寫入此封包片段的數據緩衝區時發生 DMA 錯誤,則用戶端可以將此位元組設定為卸除部分封包。

對於傳輸佇列,此欄位是唯讀的。 如果設定,表示客戶端不應該傳輸封包。

Scratch

用戶端可用於任何用途的位域值。 重複使用 NET_PACKET 時,此值會重設為零。

Reserved1

保留的。 用戶端驅動程式不得讀取或寫入此值。

備註

每個 NET_PACKET 結構都代表單一網路框架,並包含適用於所有封包的基本元數據,例如框架配置。 NET_PACKET至少包含一個NET_FRAGMENT,描述封包數據所在系統記憶體中的位置。

NET_PACKET 結構可以是NET_RING結構中的專案。

規格需求

需求
最低 KMDF 版本 1.29
最低UMDF版本 2.33
標頭 packet.h