共用方式為


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 會傳回下列其中一項:

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

言論

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

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

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

要求

要求 價值
最低支援的用戶端 NDIS 6.0 和更新版本支援。
目標平臺 普遍
標頭 ndis/nblapi.h (include ndis.h)
連結庫 Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 合規性規則 Irql_NetBuffer_Function(ndis)

另請參閱

NET_BUFFER

NdisAdvanceNetBufferDataStart

NetAllocateMdl