WdfMemoryCopyFromBuffer 函式 (wdfmemory.h)

[適用於 KMDF 和 UMDF]

WdfMemoryCopyFromBuffer 方法會將指定來源緩衝區的內容複製到指定的記憶體對象的緩衝區。

語法

NTSTATUS WdfMemoryCopyFromBuffer(
  [in] WDFMEMORY DestinationMemory,
  [in] size_t    DestinationOffset,
  [in] PVOID     Buffer,
  [in] size_t    NumBytesToCopyFrom
);

參數

[in] DestinationMemory

表示目的地緩衝區之架構記憶體物件的句柄。

[in] DestinationOffset

從目的地緩衝區開頭的位移,以位元組為單位。 複製作業會從目的地緩衝區中的指定位移開始。

[in] Buffer

來源緩衝區的指標。

[in] NumBytesToCopyFrom

要從來源緩衝區複製到目的地緩衝區的位元組數目。 此值不能大於來源緩衝區的大小。

傳回值

如果作業成功,WdfMemoryCopyFromBuffer 會傳回STATUS_SUCCESS。 否則,此方法可能會傳回下列其中一個值:

傳回碼 Description
STATUS_INVALID_PARAMETER
偵測到無效的參數。
STATUS_INVALID_BUFFER_SIZE
指定 DestinationOffset 參數太大的位元組位移。
STATUS_BUFFER_TOO_SMALL
從目的地位移開始, DestinationOffset 參數指定的目的地緩衝區大小大於 NumBytesToCopyFrom 參數。
 

這個方法也可能傳回其他 NTSTATUS值

如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。

備註

架構會確認目的地緩衝區夠大,足以接收 NumBytesToCopyFrom 參數所指定的數據量。

如需架構記憶體物件的詳細資訊,請參閱 使用記憶體緩衝區

如果來源或目的地緩衝區是從可分頁記憶體集區配置,則必須在 IRQL <= APC_LEVEL呼叫 WdfMemoryCopyFromBuffer 方法。 否則,任何 IRQL 都可以呼叫 方法。

範例

下列程式代碼範例會取得架構記憶體物件的句柄,此物件代表 I/O 要求的輸出緩衝區,然後將另一個緩衝區的內容複製到 I/O 要求的輸出緩衝區。

WDFMEMORY  memoryBuffer;
NTSTATUS  status;

status = WdfRequestRetrieveOutputMemory(
                                        Request,
                                        &memoryBuffer
                                        );
if (!NT_SUCCESS(status)) {
    goto Error;
}
status = WdfMemoryCopyFromBuffer(
                                 memoryBuffer,
                                 0,
                                 deviceContext->Buffer,
                                 Length
                                 );
if (!NT_SUCCESS(status)) {
    goto Error;
}

規格需求

需求
目標平台 Universal
最小 KMDF 版本 1.0
最低UMDF版本 2.0
標頭 wdfmemory.h (包含 Wdf.h)
程式庫 Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF)
IRQL 任何層級 (請參閱一節)
DDI 合規性規則 BufAfterReqCompletedIntIoctlA (kmdf) BufAfterReqCompletedIoctlA (kmdf ) 、 BufAfterReqCompletedReadA (kmdf) BufAfterReqCompletedWriteA (kmdf) DriverCreate (kmdf) MemAfterReqCompletedIntIoctlA (kmdf) MemAfterReqCompletedIoctlA (kmdf) MemAfterReqCompletedReadA (kmdf) MemAfterReqCompletedWriteA (kmdf)

另請參閱

WdfMemoryCopyToBuffer

WdfRequestRetrieveOutputMemory