Fungsi WdfMemoryCopyToBuffer (wdfmemory.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfMemoryCopyToBuffer menyalin konten buffer objek memori tertentu ke dalam buffer tujuan tertentu.
Sintaks
NTSTATUS WdfMemoryCopyToBuffer(
[in] WDFMEMORY SourceMemory,
[in] size_t SourceOffset,
[out] PVOID Buffer,
[in] size_t NumBytesToCopyTo
);
Parameter
[in] SourceMemory
Handel ke objek memori kerangka kerja yang mewakili buffer sumber.
[in] SourceOffset
Offset, dalam byte, dari awal buffer sumber. Operasi salin dimulai pada offset yang ditentukan di buffer sumber.
[out] Buffer
Penunjuk ke buffer tujuan.
[in] NumBytesToCopyTo
Jumlah byte yang akan disalin dari buffer sumber ke buffer tujuan. Nilai ini tidak boleh lebih besar dari ukuran buffer sumber.
Nilai kembali
WdfMemoryCopyToBuffer 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 SourceOffset terlalu besar, atau parameter NumBytesToCopyTo lebih besar dari ukuran buffer sumber. |
Metode ini juga mungkin mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Kerangka kerja tidak mengizinkan driver menyalin lebih banyak byte daripada buffer sumber yang dapat dimuat oleh parameter SourceMemory .
Untuk informasi selengkapnya tentang objek memori kerangka kerja, lihat Menggunakan Buffer Memori.
Jika buffer sumber atau tujuan dialokasikan dari kumpulan memori yang dapat halaman, metode WdfMemoryCopyToBuffer harus dipanggil di IRQL <= APC_LEVEL. Jika tidak, metode dapat dipanggil di IRQL apa pun.
Contoh
Contoh kode berikut mengalokasikan buffer baru dan menyalin konten buffer objek memori ke dalam buffer baru.
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;
}
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