NdisAllocateNetBuffer 函式 (ndis/nblapi.h)
呼叫 NdisAllocateNetBuffer 函式,從 NET_BUFFER 結構集區配置和初始化 NET_BUFFER 結構。
語法
NDIS_EXPORTED_ROUTINE NET_BUFFER * NdisAllocateNetBuffer(
[in] NDIS_HANDLE PoolHandle,
[in, optional] MDL *MdlChain,
[in] ULONG DataOffset,
[in] SIZE_T DataLength
);
參數
[in] PoolHandle
先前從呼叫傳回的 NET_BUFFER 結構集區句柄 NdisAllocateNetBufferPool。
[in, optional] MdlChain
NDIS 用來初始化新 NET_BUFFER 結構的 MDL 鏈結指標。 MdlChain 可以是 NULL。
[in] DataOffset
從緩衝區開頭到 MDL 鏈結中 已使用資料空間 的開頭的初始位移,以位元組為單位。 此位移前的數據空間是 未使用的數據空間。 因此,這個值也代表 MDL 鏈結中可用回填空間的初始數量。 如果 MdlChain 為 NULL,DataOffset 必須為 0。
[in] DataLength
MDL 鏈結中 所用數據空間的長度,以位元組為單位。 如果 MdlChain 為 NULL,DataLength 必須為 0。
傳回值
NdisAllocateNetBuffer 會傳回 NDIS 所配置 之NET_BUFFER 結構的指標。 如果配置失敗,則此指標為 NULL。
備註
呼叫 NdisFreeNetBuffer 以釋放從NET_BUFFER結構集區配置的NET_BUFFER結構。
例如,如果原始 MDL 鏈結包含 XDataLength 和 YDataOffset,而 CurrentMdl 會從原始 MDL 鏈結中的第二個 MDL (M) 開始,則 CurrentMdlOffset 為 Z。然後,NET_BUFFER_DATA中的 MdlChain 字段必須指向包含 X'DataLength 和 Y'DataOffset 的新 MDL 鏈結。 如果 CurrentMdl 從新 MDL 鏈結中的第三個 MDL (M') 開始, 則 CurrentMdlOffset 為 Z',而且必須使用下列宏來設定 NET_BUFFER中的字段:
NET_BUFFER_FIRST_MDL(_NB) = New MDL chain;
NET_BUFFER_DATA_LENGTH(_NB) = X';
NET_BUFFER_DATA_OFFSET(_NB) = Y';
NET_BUFFER_CURRENT_MDL(_NB) = M';
NET_BUFFER_CURRENT_MDL_OFFSET(_NB) = Z';
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平台 | Universal |
標頭 | ndis/nblapi.h (include ndis.h) |
程式庫 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | Irql_NetBuffer_Function (ndis) 、 NdisAllocateNetBuffer (ndis) |