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 |
---|---|
|
NdisRetreatNetBufferDataStart 使用未使用的數據空間或配置新的記憶體,已成功配置已使用的數據空間。 |
|
NdisRetreatNetBufferDataStart 因為資源不足而失敗。 |
|
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) |