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 會傳回下列其中一項:
傳回碼 | 描述 |
---|---|
|
NdisRetreatNetBufferDataStart 已成功設定 已使用的數據空間, 使用 未使用的數據空間 或配置新的記憶體。 |
|
NdisRetreatNetBufferDataStart 因為資源不足而失敗。 |
|
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) |