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を返します。 それ以外の場合、このメソッドは次のいずれかの値を返す可能性があります。
リターン コード | 説明 |
---|---|
|
無効なパラメーターが検出されました。 |
|
指定された DestinationOffset パラメーターのバイト オフセットが大きすぎます。 |
|
宛先オフセットから始まる、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;
}
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | 普遍 |
最小 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), DriverCre kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf) |