共用方式為


NdisCopyFromNetBufferToNetBuffer 函式 (ndis/nblapi.h)

呼叫 NdisCopyFromNetBufferToNetBuffer 函式,將數據從來源 NET_BUFFER 結構複製到目的地NET_BUFFER結構。

語法

NDIS_EXPORTED_ROUTINE NDIS_STATUS NdisCopyFromNetBufferToNetBuffer(
  [in]  NET_BUFFER       *Destination,
  [in]  ULONG            DestinationOffset,
  [in]  ULONG            BytesToCopy,
  [in]  NET_BUFFER const *Source,
  [in]  ULONG            SourceOffset,
  [out] ULONG            *BytesCopied
);

參數

[in] Destination

先前配置的目的地NET_BUFFER結構的指標。

[in] DestinationOffset

目的地NET_BUFFER結構內的位元移,開始寫入複製的數據。 如需 DestinationOffset的詳細資訊,請參閱下列一節。

[in] BytesToCopy

要複製的位元組數目。

[in] Source

先前配置之來源NET_BUFFER結構的指標。

[in] SourceOffset

來源NET_BUFFER結構內的位元組位移,開始複製數據。 如需 sourceOffset 的詳細資訊,請參閱下列一節。

[out] BytesCopied

呼叫端提供的變數指標,在此變數中,此函式會傳回實際複製的位元組數目。 如果來源用盡數據或目的地用盡空間,則這個數位可能小於 BytesToCopy 的值

傳回值

NdisCopyFromNetBufferToNetBuffer 會傳回下列其中一個狀態值:

傳回碼 描述
NDIS_STATUS_SUCCESS
複製作業成功完成。
NDIS_STATUS_RESOURCES
複製作業因為資源不足而失敗。

言論

NdisCopyFromNetBufferToNetBuffer 的呼叫端 也會配置目的地 NET_BUFFER 結構,也可能配置來源NET_BUFFER結構。 目的地NET_BUFFER結構的 MDL 應該有足夠的空間來接收數據。

如果來源NET_BUFFER結構用盡數據,或目的地NET_BUFFER結構在複製指定的位元組數目之前用盡空間,複製作業就會停止。 在任一情況下,NdisCopyFromNetBufferToNetBuffer 會傳回從來源成功複製到目的地NET_BUFFER結構的位元組數目。

呼叫端必須確保 CurrentMdlOffsetCurrentMdl 值在來源和目的地 NET_BUFFER 結構中都正確。 NDIS 不會變更目的地NET_BUFFER中的成員。 呼叫端必須在 NdisCopyFromNetBufferToNetBuffer 傳回之後,更新 DataLengthDataOffsetCurrentMdlOffset NET_BUFFER 值。

NDIS 會使用 DestionationOffsetSourceOffsetNdisCopyFromNetBufferToNetBuffer 中的位移,作為目前數據位移的位移。 例如, 如果目的地NET_BUFFER中的 CurrentMdlOffset 值是 x,且 DestinationOffset 值為 y,則 NDIS 會將數據複製到目的地NET_BUFFER x+ y 位移,CurrentMdl 值所描述的記憶體中。 類似的規則適用於來源NET_BUFFER中的 CurrentMdlOffsetSourceOffset 值。

要求

要求 價值
最低支援的用戶端 NDIS 6.0 和更新版本支援。
目標平臺 普遍
標頭 ndis/nblapi.h (include ndis.h)
連結庫 Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 合規性規則 Irql_NetBuffer_Function(ndis)

另請參閱

NET_BUFFER