共用方式為


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

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

NdisAllocateNetBufferListPool

NdisAllocateNetBufferPool

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

NdisAllocateNetBufferAndNetBufferList

NdisAllocateNetBufferList

NdisAllocateNetBuffer

呼叫 NdisAllocateNetBufferAndNetBufferList 比呼叫 NdisAllocateNetBufferListNdisAllocateNetBuffer更有效率。 不過, 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結構。