共用方式為


通訊協定驅動程式緩衝區管理

通訊協定驅動程序必須管理 NET_BUFFER_LIST 結構集區和 NET_BUFFER 結構集區,以進行傳送作業。 若要建立這些集區,驅動程式會呼叫下列函式:

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

通訊協定驅動程式可以使用下列函式從集區配置結構:

NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisAllocateNetBuffer

呼叫 NdisAllocateNetBufferAndNetBufferList 比呼叫 NdisAllocateNetBufferList 然後再呼叫 NdisAllocateNetBuffer更有效率。 不過,NdisAllocateNetBufferAndNetBufferList 只會在 NET_BUFFER_LIST 結構上建立一個 NET_BUFFER 結構。 若要使用 NdisAllocateNetBufferAndNetBufferList,驅動程式必須在呼叫 NdisAllocateNetBufferListPool時,將 AllocateNetBuffer 參數設定為 TRUE

通訊協定驅動程式可以使用 OID 要求來查詢基礎驅動程式的回填及上下文空間需求。 通訊協定驅動程式應該在 開啟重新啟動 狀態時判斷系結的回填和上下文需求。 驅動程式應該為整個堆疊配置足夠的回填和內容空間。 如有必要,通訊協定驅動程式可以釋放集區,並在 重新啟動 狀態下重新配置集區。

通訊協定驅動程式會使用下列函式來釋放集區:

NdisFreeNetBufferListPool

NdisFreeNetBufferPool

通訊協定驅動程式會使用下列函式來釋放從集區配置的結構:

NdisFreeNetBufferList

NdisFreeNetBuffer

驅動程式應該先釋放分配給 NdisAllocateNetBuffer 的 NET_BUFFER 結構,然後再釋放相關聯的 NET_BUFFER_LIST 結構。 當驅動程式針對相關聯的 NET_BUFFER_LIST 結構呼叫 NdisFreeNetBufferList 時,會釋放使用 NdisAllocateNetBufferAndNetBufferList 所配置的 NET_BUFFER 結構。