共用方式為


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