NdisRetreatNetBufferDataStart 函式 (ndis/nblapi.h)

呼叫 NdisRetreatNetBufferDataStart 函式,以存取NET_BUFFER結構的 MDL 鏈結中較使用的數據空間

語法

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisRetreatNetBufferDataStart(
  [in]           NET_BUFFER              *NetBuffer,
  [in]           ULONG                   DataOffsetDelta,
  [in]           ULONG                   DataBackFill,
  [in, optional] NET_BUFFER_ALLOCATE_MDL *AllocateMdlHandler
);

參數

[in] NetBuffer

先前配置的NET_BUFFER結構的指標。

[in] DataOffsetDelta

要加入 的已使用數據空間 量。 NDIS 會據以調整NET_BUFFER結構的 DataOffset 成員。 如果沒有足夠的 未使用數據空間 來滿足要求,NDIS 會配置額外的記憶體。

[in] DataBackFill

如果 NDIS 必須配置記憶體,這個參數除了 要配置的 DataOffsetDelta 參數值之外,還會指定數據空間量。

[in, optional] AllocateMdlHandler

NetAllocateMdl 函式的選擇性進入點。 如果呼叫端指定 NetAllocateMdl 函式的進入點,NDIS 會呼叫 NetAllocateMdl 來配置 MDL 和記憶體。

傳回值

NdisRetreatNetBufferDataStart 會傳回下列其中一項:

傳回碼 Description
NDIS_STATUS_SUCCESS
NdisRetreatNetBufferDataStart 使用未使用的數據空間或配置新的記憶體,已成功配置已使用的數據空間
NDIS_STATUS_RESOURCES
NdisRetreatNetBufferDataStart 因為資源不足而失敗。
NDIS_STATUS_FAILURE
NdisRetreatNetBufferDataStart 因資源不足以外的原因而失敗。

備註

NdisRetreatNetBufferDataStart 會藉由減少 NET_BUFFER 結構的DataOffset成員值來嘗試滿足要求。

如果數據 空間不足,此函式會配置新的緩衝區和 MDL 來描述新的緩衝區,並將新的 MDL 鏈結至 MDL 鏈結的開頭。 NDIS 會呼叫 AllocateMdl 中指定的 NetAllocateMdl 函式來配置 MDL 和記憶體。 NetAllocateMdl 函式可以使用符合驅動程序設計需求的任何配置方法。

呼叫 NdisAdvanceNetBufferDataStart 函式,以釋放以 NdisRetreatNetBufferDataStart 新增的已使用數據空間

規格需求

需求
最低支援的用戶端 NDIS 6.0 和更新版本支援。
目標平台 Universal
標頭 ndis/nblapi.h (include ndis.h)
程式庫 Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 合規性規則 Irql_NetBuffer_Function (ndis)

另請參閱

NET_BUFFER

NdisAdvanceNetBufferDataStart

NetAllocateMdl