Fungsi WdfMemoryAssignBuffer (wdfmemory.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfMemoryAssignBuffer menetapkan buffer tertentu ke objek memori yang dibuat driver dengan memanggil WdfMemoryCreatePreallocated.
Sintaks
NTSTATUS WdfMemoryAssignBuffer(
[in] WDFMEMORY Memory,
[in] PVOID Buffer,
[in] size_t BufferSize
);
Parameter
[in] Memory
Handel ke objek memori kerangka kerja yang diperoleh dengan memanggil WdfMemoryCreatePreallocated.
[in] Buffer
Penunjuk ke buffer yang disediakan driver.
[in] BufferSize
Ukuran bukan nol, dalam byte, dari buffer yang ditinjuk Buffer .
Nilai kembali
WdfMemoryAssignBuffer mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Parameter yang tidak valid terdeteksi. |
Metode ini juga dapat mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Metode ini dapat menetapkan buffer ke objek memori yang dibuat WdfMemoryCreatePreallocated , tetapi tidak ke objek memori yang dibuat WdfMemoryCreate .
Buffer yang dirujuk parameter Buffer dapat dialokasikan dari kumpulan memori yang dapat dipaginasi atau tidak dapat di-page. Jika driver mengalokasikan buffer dari kumpulan yang dapat di-pageable, atau jika buffer berasal dari kumpulan pageable karena berasal dari aplikasi mode pengguna, driver harus mengakses buffer hanya di IRQL < DISPATCH_LEVEL. (Perhatikan bahwa fungsi panggilan balik EvtCleanupCallback dan EvtDestroyCallback driver, jika disediakan, dapat dipanggil di IRQL <= DISPATCH_LEVEL.)
Untuk informasi selengkapnya tentang objek memori kerangka kerja, lihat Menggunakan Buffer Memori.
Contoh
Contoh kode berikut mengalokasikan buffer lalu menetapkan buffer ke objek memori kerangka kerja.
PVOID pNewBuffer = NULL;
pNewBuffer = ExAllocatePoolWithTag(
NonPagedPool,
NEW_BUFFER_SIZE,
MY_DRIVER_TAG
);
if (pNewBuffer == NULL){
goto Error;
}
status = WdfMemoryAssignBuffer(
memHandle,
pNewBuffer,
NEW_BUFFER_SIZE
);
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 |
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