共用方式為


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
因為無法對應數據緩衝區的資源狀況低,所以傳回值也可以 NULL。 即使數據是連續的,或 Storage 參數為非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)

另請參閱

NET_BUFFER

NET_BUFFER_DATA