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