Fungsi WdfMemoryCopyFromBuffer (wdfmemory.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfMemoryCopyFromBuffer menyalin konten buffer sumber tertentu ke dalam buffer objek memori tertentu.
Sintaks
NTSTATUS WdfMemoryCopyFromBuffer(
[in] WDFMEMORY DestinationMemory,
[in] size_t DestinationOffset,
[in] PVOID Buffer,
[in] size_t NumBytesToCopyFrom
);
Parameter
[in] DestinationMemory
Handel ke objek memori kerangka kerja yang mewakili buffer tujuan.
[in] DestinationOffset
Offset, dalam byte, dari awal buffer tujuan. Operasi salin dimulai pada offset yang ditentukan di buffer tujuan.
[in] Buffer
Penunjuk ke buffer sumber.
[in] NumBytesToCopyFrom
Jumlah byte yang akan disalin dari buffer sumber ke buffer tujuan. Nilai ini tidak boleh lebih besar dari ukuran buffer sumber.
Nilai kembali
WdfMemoryCopyFromBuffer mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Parameter yang tidak valid terdeteksi. |
|
Offset byte yang ditentukan parameter DestinationOffset terlalu besar. |
|
Ukuran buffer tujuan yang ditentukan parameter DestinationOffset , dimulai dari offset tujuan, lebih besar dari parameter NumBytesToCopyFrom . |
Metode ini juga dapat mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Kerangka kerja memverifikasi bahwa buffer tujuan cukup besar untuk menerima jumlah data yang ditentukan parameter NumBytesToCopyFrom .
Untuk informasi selengkapnya tentang objek memori kerangka kerja, lihat Menggunakan Buffer Memori.
Jika buffer sumber atau tujuan dialokasikan dari kumpulan memori yang dapat dipaginasi, metode WdfMemoryCopyFromBuffer harus dipanggil di IRQL <= APC_LEVEL. Jika tidak, metode dapat dipanggil di IRQL apa pun.
Contoh
Contoh kode berikut mendapatkan handel ke objek memori kerangka kerja yang mewakili buffer output permintaan I/O, dan kemudian menyalin konten buffer lain ke dalam buffer output permintaan 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;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdfmemory.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | Tingkat apa pun (lihat bagian Keterangan) |
Aturan kepatuhan DDI | BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf) |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk