NET_BUFFER結構 (ndis/nbl.h)
NET_BUFFER結構會指定透過網路傳輸或接收的數據。
語法
typedef struct _NET_BUFFER {
union {
struct {
NET_BUFFER *Next;
MDL *CurrentMdl;
ULONG CurrentMdlOffset;
union {
ULONG DataLength;
SIZE_T stDataLength;
};
MDL *MdlChain;
ULONG DataOffset;
};
SLIST_HEADER Link;
NET_BUFFER_HEADER NetBufferHeader;
};
USHORT ChecksumBias;
USHORT Reserved;
NDIS_HANDLE NdisPoolHandle;
PVOID NdisReserved[2];
PVOID ProtocolReserved[6];
PVOID MiniportReserved[4];
PHYSICAL_ADDRESS DataPhysicalAddress;
union {
NET_BUFFER_SHARED_MEMORY *SharedMemoryInfo;
SCATTER_GATHER_LIST *ScatterGatherList;
};
} NET_BUFFER, *PNET_BUFFER;
成員
Next
NET_BUFFER結構連結清單中下一個NET_BUFFER結構的指標。 如果此結構是清單中的最後一個NET_BUFFER結構,則此成員為 NULL。
CurrentMdl
目前驅動程式所使用的第一個 MDL 指標。 此成員提供優化,可略過目前驅動程式未使用的任何 MDL 來改善效能。
CurrentMdlOffset
目前Mdl 成員所指定 MDL 中已使用資料空間開頭的位移,以位元組為單位。
DataLength
MDL 鏈結中已使用之數據空間的長度,以位元組為單位。 最大長度為 0xFFFFFFFF 個字節。
stDataLength
MDL 鏈結中已使用之數據空間的長度,以位元組為單位。 最大長度為 0xFFFFFFFF 個字節。 這個成員與 DataLength 相同,但其類型 SIZE_T 而非 ULONG。
MdlChain
對應數據緩衝區之 MDL 連結清單的指標。 數據緩衝區會儲存網路數據。
DataOffset
從 MDL 鏈結的開頭到 MDL 鏈結中網路數據的開頭,以位元組為單位的位移。 此位移也是 未使用數據空間的大小,以位元組為單位。
Link
保留給 NDIS。
NetBufferHeader
NET_BUFFER_HEADER結構。 基於相容性考慮,這是上述等位的重複專案。
ChecksumBias
計算總和檢查碼時,要略過數據緩衝區開頭的位元元組數目。 TCP/IP 通訊協定會使用此成員。
Reserved
保留供未來使用。
NdisPoolHandle
集區句柄,識別配置NET_BUFFER結構的NET_BUFFER集區。
NdisReserved[2]
保留給 NDIS。
ProtocolReserved[6]
保留供通訊協定驅動程式使用。 通訊協定驅動程式和 NDIS 中繼驅動程式可以針對自己的用途使用此區域。 中繼驅動程式只有在尚未使用時,才能使用此成員。
MiniportReserved[4]
保留供迷你埠驅動程式使用。 迷你埠驅動程式和 NDIS 中繼驅動程式可以針對自己的用途使用此區域。
DataPhysicalAddress
SharedMemoryInfo
的指標 NET_BUFFER_SHARED_MEMORY 結構。
ScatterGatherList
SCATTER_GATHER_LIST結構描述 DMA 的散佈/收集清單。
備註
NDIS 驅動程式可以呼叫下列函式來配置和初始化NET_BUFFER結構:
NDIS 驅動程式可以呼叫 NdisAllocateNetBufferListPool 函式,然後在配置NET_BUFFER_LIST結構集區時,將NET_BUFFER_LIST_POOL_PARAMETERS結構的 fAllocateNetBuffer 成員設定為 TRUE。 在此情況下,NET_BUFFER結構會預先配置驅動程式從集區配置的每個NET_BUFFER_LIST結構。鏈結至每個NET_BUFFER結構,是對應包含網路封包數據的緩衝區的一或多個緩衝區描述項。 這些緩衝區描述項會指定為 NetBufferHeader 成員中的 MDL 鏈結。 已接收或傳輸這類網路封包數據。
若要存取 MDL 鏈結中的其他資料空間,NDIS 驅動程式可以呼叫下列函式:
NDIS 驅動程式通常會使用 NET_BUFFER結構的 MiniportReserved 或 ProtocolReserved 成員來維護NET_BUFFER結構內容資訊。如需如何使用 net 緩衝區的詳細資訊,請參閱 NET_BUFFER架構。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
標頭 | ndis/nbl.h (包含 ndis.h) |
另請參閱
NET_BUFFER_LIST_POOL_PARAMETERS
NdisAllocateNetBufferAndNetBufferList NdisAllocateNetBufferListPool NdisMSendNetBufferListsComplete NdisRetreatNetBufferDataStart NdisRetreatNetBufferListDataStart