Miniport 驅動程式通常會從 MiniportInitializeEx 呼叫 NdisAllocateNetBufferListPool,以建立 NET_BUFFER_LIST 結構的集區。 迷你埠驅動程式會使用這些結構來指出已接收的數據。
一般而言,配置NET_BUFFER_LIST結構的迷你埠驅動程式將會在該NET_BUFFER_LIST結構上配置並排入一個 NET_BUFFER 結構。 當您配置NET_BUFFER_LIST結構的集區時,預先配置NET_BUFFER結構比分別配置NET_BUFFER_LIST結構和NET_BUFFER結構更有效率。
迷你埠驅動程式可以呼叫 NdisAllocateNetBufferListPool,並將 AllocateNetBuffer 參數設定為 TRUE,表示已預先配置 NET_BUFFER 結構。 在此情況下,每個 NET_BUFFER_LIST 結構都會與一個事先配置好的 NET_BUFFER 結構一起從驅動程式的集區中配置出來。 這類驅動程式必須呼叫 NdisAllocateNetBufferAndNetBufferList,才能從此集區配置結構。
一般而言,迷你埠驅動程式會在 MiniportInitializeEx 呼叫 NdisAllocateNetBufferAndNetBufferList,以分配所需的多個緩衝區來進行後續接收作業。 在此情況下,驅動程式會管理內部可用緩衝區清單。
MiniportReturnNetBufferLists 函式可以準備傳回的NET_BUFFER_LIST結構,以便在後續接收指示中重複使用。 雖然 MiniportReturnNetBufferLists 可以將NET_BUFFER_LIST結構傳回集區(例如,它可以呼叫 NdisFreeNetBufferList),但是重複使用結構而不將它們傳回集區會更有效率。
當 NDIS 停止配接器時,迷你埠驅動程式應該釋放所有NET_BUFFER_LIST結構和相關聯的數據。 驅動程式可以呼叫 NdisFreeNetBufferList 來釋放結構和 NdisFreeNetBufferListPool 函式,以釋放NET_BUFFER_LIST集區。