通訊協定驅動程式緩衝區管理
通訊協定驅動程式必須管理 NET_BUFFER_LIST 結構集區和 傳送作業NET_BUFFER 結構集區。 若要建立這些集區,驅動程式會呼叫下列函式:
通訊協定驅動程式可以使用下列函式從集區配置結構:
NdisAllocateNetBufferAndNetBufferList
呼叫 NdisAllocateNetBufferAndNetBufferList 比呼叫 NdisAllocateNetBufferList 和 NdisAllocateNetBuffer更有效率。 不過, NdisAllocateNetBufferAndNetBufferList 只會在NET_BUFFER_LIST結構上建立一個NET_BUFFER結構。 若要使用NdisAllocateNetBufferAndNetBufferList,驅動程式在呼叫NdisAllocateNetBufferListPool時,必須將AllocateNetBuffer參數設定為TRUE。
通訊協定驅動程式可以使用 OID 要求來查詢基礎驅動程式的後端填滿和內容空間需求。 通訊協定驅動程式應該判斷 開啟 或 重新開機 狀態之系結的後端填滿和內容需求。 驅動程式應該為整個堆疊配置足夠的後端填滿和內容空間。 如有必要,通訊協定驅動程式可以釋放集區,並重新配置它們處於 重新開機 狀態。
通訊協定驅動程式會使用下列函式來釋放集區:
通訊協定驅動程式會使用下列函式來釋放從集區配置的結構:
驅動程式應該釋放使用 NdisAllocateNetBuffer 配置的NET_BUFFER結構,再釋放相關聯的NET_BUFFER_LIST結構。 當驅動程式針對相關聯的NET_BUFFER_LIST結構呼叫NdisFreeNetBufferList時,會釋放以NdisAllocateNetBufferAndNetBufferList配置的NET_BUFFER結構。