共用方式為


NET_BUFFER_LIST_CONTEXT結構 (ndis/nbl.h)

NET_BUFFER_LIST_CONTEXT 結構會儲存 NET_BUFFER_LIST 結構的內容資訊。

語法

typedef struct _NET_BUFFER_LIST_CONTEXT {
  NET_BUFFER_LIST_CONTEXT *Next;
  USHORT                  Size;
  USHORT                  Offset;
  UCHAR                   ContextData[];
} NET_BUFFER_LIST_CONTEXT, *PNET_BUFFER_LIST_CONTEXT;

成員

Next

NET_BUFFER_LIST_CONTEXT結構連結清單中的下一個NET_BUFFER_LIST_CONTEXT結構的指標。

Size

NET_BUFFER_LIST_CONTEXT 結構中整個內容空間的大小,以位元組為單位,包括已使用和未使用的內容空間。

Offset

從內容數據緩衝區的開頭到NET_BUFFER_LIST_CONTEXT結構中內容數據的開頭,以位元組為單位的位移。 Offset 成員也會指定NET_BUFFER_LIST_CONTEXT結構中未使用內容空間的位元組大小。

ContextData

內容數據緩衝區。 內容數據可以包含驅動程式所需的任何資訊。

備註

每個 NET_BUFFER_LIST 結構都可以包含預先配置NET_BUFFER_LIST_CONTEXT結構。 當NET_BUFFER_LIST結構通過驅動程式堆疊時,NET_BUFFER_LIST_CONTEXT結構的連結清單可以擴充,以容納每個驅動程式的其他數據空間。

驅動程式應該使用下列 NDIS 宏和函式來存取及操作NET_BUFFER_LIST_CONTEXT結構中的成員:

NET_BUFFER_LIST_CONTEXT 結構的 ContextData 成員會指定NET_BUFFER_LIST_CONTEXT結構的數據部分。 為了改善系統效能,當驅動程式配置NET_BUFFER_LIST結構集區時,驅動程式應該預先配置任何必要的內容數據空間。 若要預先配置此資料空間,驅動程式會呼叫 NdisAllocateNetBufferListPool 函式,然後指定 ContextSize 參數中所需的數據空間量。 預先配置此資料空間可節省 NDIS,以在接收和傳送路徑中配置記憶體。
注意 NDIS 會估計必要的內容數據空間,並視需要調整配置的數據空間,以符合整個驅動程式堆疊的需求。
 
Offset 成員會指定NET_BUFFER_LIST_CONTEXT結構中未使用的內容空間數量。 Offset 成員也會指出從 ContextData 成員開頭到已使用內容數據空間開頭的位移。

NDIS 驅動程式會呼叫 NdisAllocateNetBufferListContext 函式,以在NET_BUFFER_LIST_CONTEXT結構中配置連續緩衝區空間。 如有必要,NDIS 會配置新的NET_BUFFER_LIST_CONTEXT結構,並加上額外的空間以接受要求。 NDIS 驅動程式會呼叫 NdisFreeNetBufferListContext 函式可釋放緩衝區空間。

使用 NET_BUFFER_LIST_CONTEXT_DATA_SIZE 宏,以取得已使用的內容空間大小。 使用 NET_BUFFER_LIST_CONTEXT_DATA_START 宏,以取得已使用內容空間的起始位址。

如需如何使用 net 緩衝區的詳細資訊,請參閱 NET_BUFFER架構

規格需求

需求
最低支援的用戶端 NDIS 6.0 和更新版本支援。
標頭 ndis/nbl.h (include ndis.h)

另請參閱

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_CONTEXT_DATA_SIZE NET_BUFFER_LIST_CONTEXT_DATA_START NdisAllocateNetBufferListContext NdisAllocateNetBufferListPool

NdisFreeNetBufferListContext