共用方式為


NET_BUFFER 結構

NDIS 6.0 和更新版本 NET_BUFFER 結構類似于 NDIS 5 所使用的 NDIS_PACKET 結構。x 和舊版驅動程式。 每個NET_BUFFER結構都會封裝網路資料的封包。

下圖顯示NET_BUFFER結構中的欄位。

顯示NET_BUFFER結構中欄位的圖表。

NET_BUFFER 結構包含NetBufferHeader成員中的NET_BUFFER_HEADER結構。 NET_BUFFER_HEADER 結構包含NetBufferData成員中的NET_BUFFER_DATA結構。 您應該使用 NDIS 宏來存取NET_BUFFER結構成員。 如需這些宏的完整清單,請參閱 NET_BUFFER 結構參考頁面。

部分 NET_BUFFER 結構成員僅供 NDIS 使用。 驅動程式通常會使用的成員如下:

ProtocolReserved
保留供通訊協定驅動程式使用。

MiniportReserved
保留供迷你埠驅動程式使用。

NdisPoolHandle
指定集區控制碼,識別配置NET_BUFFER結構的NET_BUFFER集區。


指定NET_BUFFER結構連結清單中的下一個NET_BUFFER結構的指標。 如果這是清單中的最後一個NET_BUFFER結構,則此成員為 Null

DataLength
指定 MDL 鏈結中網路資料的位元組長度。

DataOffset
指定從 MDL 鏈結的記憶體開始到 MDL 鏈結中網路資料的開頭,以位元組為單位的位移。

CurrentMdl
指定目前驅動程式所使用的第一個 MDL 指標。 此指標提供優化,藉由略過目前驅動程式未使用的任何 MDL 來改善效能。

CurrentMdlOffset
指定由 NET_BUFFER 結構 之 CurrentMdl 成員所指定之 MDL 中已使用之資料空間開頭的位移,以位元組為單位。

下圖顯示CurrentMdl、CurrentMdlOffsetDataOffsetDataLength成員與資料空間之間的關聯性。

描述與 CurrentMdl、CurrentMdlOffset、DataOffset 和 DataLength 相關的資料空間配置圖表。

NDIS 提供函式來管理 MDL 鏈結中的資料空間。 驅動程式如何以動態方式使用資料空間與目前驅動程式。 有時候,目前驅動程式目前未使用的資料空間。 雖然 目前未使用的資料空間 ,但它可以包含有效的資料。 例如,在接收路徑上,未使用 的資料空間 可以包含較低層級驅動程式所使用的標頭資訊。

驅動程式會執行進一步的作業,以增加和減少 使用的資料空間。 如需有關進階和進階作業的詳細資訊,請參閱 訂用帳戶和進階作業

下列詞彙和定義描述 NET_BUFFER 資料空間的專案:

已使用的資料空間
已使用的資料空間 包含目前驅動程式在目前使用的資料。 驅動程式會增加具有進階作業 的已使用資料空間 ,並減少進階作業 的已使用資料空間

未使用的資料空間
目前驅動程式目前未使用此資料空間。

資料大小總計
資料大小總計是 已使用資料空間未使用資料空間的大小總和。 若要計算總大小,請將 DataOffset 新增至 DataLength

撤退
活動作業會增加 已使用之資料空間的大小。

進展
進階作業會減少 已使用之資料空間的大小。