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 鏈結中可用回填空間的初始數量。 如果 MdlChainNULL,DataOffset 必須是 0。
[in] DataLength
在 MDL 鏈結中使用資料空間的長度,以位元組為單位。 如果 MdlChainNULL,DataLength 必須是 0。
傳回值
NdisAllocateNetBuffer 會傳回 NDIS 配置之 NET_BUFFER 結構的指標。 如果設定失敗,此指標會 NULL。
言論
呼叫 NdisFreeNetBuffer,以釋放從 NET_BUFFER 結構集區配置的 NET_BUFFER 結構。
例如,如果原始 MDL 鏈結包含 XDataLength 和 YDataOffset,而 CurrentMdl 會從原始 MDL 鏈結中的第二個 MDL (M) 開始,CurrentMdlOffsetZ。NET_BUFFER_DATA 中的 [MdlChain] 字段必須指向新的 MDL 鏈結,其中包含 X 的DataLength,Y'DataOffset。 如果 CurrentMdl 從新 MDL 鏈結中的第三個 MDL (M'開始,CurrentMdlOffsetZ',而且下列巨集必須用來設定 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 和更新版本支援。 |
目標平臺 | 普遍 |
標頭 | ndis/nblapi.h (include ndis.h) |
連結庫 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | Irql_NetBuffer_Function(ndis),NdisAllocateNetBuffer(ndis) |