NdisAdvanceNetBufferDataStart 函式 (ndis/nblapi.h)
呼叫 NdisAdvanceNetBufferDataStart 函式,以釋放使用 新增的數據空間 NdisRetreatNetBufferDataStart 函式。
語法
NDIS_EXPORTED_ROUTINE VOID NdisAdvanceNetBufferDataStart(
[in] NET_BUFFER *NetBuffer,
[in] ULONG DataOffsetDelta,
[in] BOOLEAN FreeMdl,
[in, optional] NET_BUFFER_FREE_MDL *FreeMdlHandler
);
參數
[in] NetBuffer
先前配置的 NET_BUFFER 結構的指標。
[in] DataOffsetDelta
要釋放 的已使用數據空間 量。 NDIS 會據以調整 NET_BUFFER 結構 之 DataOffset 成員的值。
[in] FreeMdl
BOOLEAN 值,如果 為 TRUE,則要求 NDIS 釋放任何在預先作業中變成未使用的 MDL。 如果 FreeMdl 為 FALSE,NDIS 會保留未使用的 MDL,以供後續的操作使用。
[in, optional] FreeMdlHandler
NetFreeMdl 函式的選擇性進入點。 如果呼叫端指定 NetFreeMdl 函式的進入點,NDIS 會呼叫 NetFreeMdl 以釋放 MDL 和記憶體。
傳回值
無
備註
如果 NDIS 配置記憶體以滿足對 的對應呼叫 NdisRetreatNetBufferDataStart 函式,然後 NdisAdvanceNetBufferDataStart 釋放 NdisRetreatNetBufferDataStart 配置的記憶體。 否則,記憶體會保留在 MDL 中,而且只會修改 NET_BUFFER 結構的 DataOffset 成員值。
如果 NdisAdvanceNetBufferDataStart 必須釋放記憶體,NDIS 會呼叫 FreeMdl 指定的 NetFreeMdl 函式。 NDIS 只會呼叫 NetFreeMdl ,以釋放驅動程式在 NetAllocateMdl 函式中配置的 MDLs 和記憶體。
當通訊協議驅動程式在接收路徑上呼叫 NdisAdvanceNetBufferDataStart 以存取各種傳輸標頭時,不應該修改 MDL 鏈結, 而且 FreeMdl 為 FALSE。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平台 | Universal |
標頭 | ndis/nblapi.h (include ndis.h) |
程式庫 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | Irql_NetBuffer_Function (ndis) |