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 會傳回下列其中一個狀態值:
傳回碼 | Description |
---|---|
|
複製作業已順利完成。 |
|
複製作業失敗,因為資源不足。 |
備註
NdisCopyFromNetBufferToNetBuffer 的呼叫端也會配置目的地NET_BUFFER結構,也可能配置來源NET_BUFFER結構。 目的地NET_BUFFER結構的 MDL 應該有足夠的空間來接收數據。
如果來源NET_BUFFER結構用完數據,或目的地NET_BUFFER結構在複製指定的位元組數目之前用完空間,複製作業就會停止。 在這兩種情況下, NdisCopyFromNetBufferToNetBuffer 會傳回從來源成功複製到目的地NET_BUFFER結構的位元元組數目。
呼叫端必須確保 Source 和 destination NET_BUFFER 結構中的 CurrentMdlOffset 和 CurrentMdl 值正確無誤。 NDIS 不會變更目的地NET_BUFFER中的成員。 呼叫端必須在 NdisCopyFromNetBufferToNetBuffer 傳回之後,更新目的地NET_BUFFER的 DataLength、DataOffset 和 CurrentMdlOffset 值。
NDIS 會使用 NdisCopyFromNetBufferToNetBuffer 的 DestionationOffset 和 SourceOffset 參數中的位移作為目前數據位移的位移。 例如,如果目的地NET_BUFFER中的 CurrentMdlOffset 值為 x,且 DestinationOffset 值為 y,NDIS 會將數據複製到目的地NET_BUFFER,且目前Mdl 值所描述記憶體中的 x+ y 位移。 類似的規則適用於來源NET_BUFFER和SourceOffset值中的 CurrentMdlOffset。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平台 | Universal |
標頭 | ndis/nblapi.h (include ndis.h) |
程式庫 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | Irql_NetBuffer_Function (ndis) |