WdfMemoryCopyToBuffer 函式 (wdfmemory.h)
[適用於 KMDF 和 UMDF]
WdfMemoryCopyToBuffer 方法會將指定記憶體物件緩衝區的內容複製到指定的目的地緩衝區。
語法
NTSTATUS WdfMemoryCopyToBuffer(
[in] WDFMEMORY SourceMemory,
[in] size_t SourceOffset,
[out] PVOID Buffer,
[in] size_t NumBytesToCopyTo
);
參數
[in] SourceMemory
表示來源緩衝區之架構記憶體物件的句柄。
[in] SourceOffset
來源緩衝區開頭的位移,以位元組為單位。 複製作業會從來源緩衝區中指定的位移開始。
[out] Buffer
目的地緩衝區的指標。
[in] NumBytesToCopyTo
要從來源緩衝區複製到目的地緩衝區的位元組數目。 這個值不得大於來源緩衝區的大小。
傳回值
如果作業成功,WdfMemoryCopyToBuffer 會傳回STATUS_SUCCESS。 否則,這個方法可能會傳回下列其中一個值:
傳回碼 | Description |
---|---|
|
偵測到無效的參數。 |
|
指定 SourceOffset 參數太大或 NumBytesToCopyTo 參數大於來源緩衝區大小的位元組位移。 |
這個方法也可能傳回其他 NTSTATUS值。
如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。
備註
架構不允許驅動程式複製比 SourceMemory 參數所指定可包含的來源緩衝區更多的位元組。
如需架構記憶體物件的詳細資訊,請參閱 使用記憶體緩衝區。
如果來源或目的地緩衝區是從可分頁記憶體集區配置,則必須在 IRQL <= APC_LEVEL呼叫 WdfMemoryCopyToBuffer 方法。 否則,可以在任何 IRQL 呼叫 方法。
範例
下列程式代碼範例會配置新的緩衝區,並將記憶體物件緩衝區的內容複製到新的緩衝區。
PVOID pOutputBuffer = NULL;
NTSTATUS status = STATUS_SUCCESS;
pOutputBuffer = ExAllocatePoolWithTag(
NonPagedPool,
MY_BUFFER_LENGTH,
MY_POOL_TAG
);
if (pOutputBuffer != NULL){
status = WdfMemoryCopyToBuffer(
outputMemoryHandle,
0,
pOutputBuffer,
MY_BUFFER_LENGTH
);
}
else{
status = STATUS_INSUFFICIENT_RESOURCES;
}
規格需求
需求 | 值 |
---|---|
目標平台 | 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) |