NdisGetDataBuffer 函式 (ndis/nblapi.h)
呼叫 NdisGetDataBuffer 函式,以從 NET_BUFFER 結構取得連續數據區塊的存取權。
語法
NDIS_EXPORTED_ROUTINE PVOID NdisGetDataBuffer(
[in] NET_BUFFER *NetBuffer,
[in] ULONG BytesNeeded,
[in, optional] PVOID Storage,
[in] ULONG AlignMultiple,
[in] ULONG AlignOffset
);
參數
[in] NetBuffer
NET_BUFFER 結構的指標。
[in] BytesNeeded
要求的連續位元組數目。
[in, optional] Storage
緩衝區的指標,如果呼叫端未提供任何緩衝區,則為 NULL 。 緩衝區的大小必須大於或等於 BytesNeeded 中指定的位元元組數目。 如果此值為非 NULL,而且所要求的數據不連續,NDIS 會將要求的數據複製到 記憶體 所指示的區域。
[in] AlignMultiple
以兩個乘冪表示的對齊方式。 例如,2、4、8、16 等等。 如果 AlignMultiple 為1,則不需要對齊。
[in] AlignOffset
位移,以位元組為單位,從對齊倍數。
傳回值
NdisGetDataBuffer 會傳回連續數據開頭的指標,或傳回 NULL。
如果 NetBuffer 參數指向的 NET_BUFFER 結構中NET_BUFFER_DATA結構的 DataLength 成員小於 BytesNeeded 參數中的值,則傳回值為 NULL。
如果緩衝區中要求的數據連續,則傳回值是 NDIS 提供之位置的指標。 如果數據不是連續的,NDIS 會使用 Storage 參數,如下所示:
- 如果 Storage 參數不是 NULL,NDIS 會將數據複製到 記憶體上的緩衝區。 傳回值是傳遞至 Storage 參數的指標。
- 如果 Storage 參數為 NULL,則傳回值為 NULL。
備註
呼叫此函式,以取得 NET_BUFFER 結構中包含的 網路數據標頭指標。 您可以輕鬆地剖析此函式傳回之連續數據區塊中所儲存的標頭。
要求的對齊需求會以兩個乘冪加上位移來表示。 例如,如果 AlignMultiple 為 4 且 AlignOffset 為 3,則數據地址應該是 4 加上 3 的倍數。 如有必要,NDIS 會配置記憶體以滿足對齊需求。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平台 | Universal |
標頭 | ndis/nblapi.h (include ndis.h) |
程式庫 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | Irql_NetBuffer_Function (ndis) |