Fungsi WdfRequestProbeAndLockUserBufferForWrite (wdfrequest.h)
[Berlaku untuk KMDF saja]
Metode WdfRequestProbeAndLockUserBufferForWrite memverifikasi bahwa buffer mode pengguna permintaan I/O dapat ditulis, dan kemudian mengunci halaman memori fisik buffer sehingga driver di tumpukan driver dapat menulis ke dalam buffer.
Sintaks
NTSTATUS WdfRequestProbeAndLockUserBufferForWrite(
[in] WDFREQUEST Request,
[in] PVOID Buffer,
[in] size_t Length,
[out] WDFMEMORY *MemoryObject
);
Parameter
[in] Request
Handel ke objek permintaan kerangka kerja.
[in] Buffer
Penunjuk ke buffer output permintaan. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.
[in] Length
Panjangnya, dalam byte, dari buffer output permintaan.
[out] MemoryObject
Penunjuk ke lokasi yang menerima handel ke objek memori kerangka kerja yang mewakili buffer output pengguna.
Nilai kembali
WdfRequestProbeAndLockUserBufferForWrite mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Parameter input tidak valid. |
|
Parameter Panjang adalah nol. |
|
Permintaan telah selesai atau tidak valid. |
|
Utas saat ini bukan pembuat permintaan I/O. |
|
Memori tidak cukup untuk menyelesaikan operasi. |
Metode ini mungkin juga mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Buffer output pengguna biasanya menerima informasi yang telah dibaca driver dari perangkat.
Hanya driver tingkat atas yang dapat memanggil metode WdfRequestProbeAndLockUserBufferForWrite , karena metode ini memerlukan konteks proses proses yang membuat permintaan I/O.
Buffer mode pengguna yang ditentukan parameter Buffer dapat menjadi buffer yang diambil WdfRequestRetrieveUnsafeUserOutputBuffer , atau dapat menjadi buffer output mode pengguna yang berbeda. Misalnya, kode kontrol I/O yang menggunakan metode akses buffer mungkin melewati struktur yang berisi penunjuk tersemat ke buffer mode pengguna. Dalam kasus seperti itu, driver dapat menggunakanWdfRequestProbeAndLockUserBufferForWrite untuk mendapatkan objek memori untuk buffer.
Panjang buffer yang ditentukan parameter Panjang tidak boleh lebih besar dari ukuran aktual buffer. Jika tidak, driver dapat mengakses memori di luar buffer, yang merupakan risiko keamanan.
Jika WdfRequestProbeAndLockUserBufferForWrite mengembalikan STATUS_SUCCESS, driver menerima handel ke objek memori kerangka kerja yang mewakili buffer mode pengguna. Untuk mengakses buffer, driver harus memanggil WdfMemoryGetBuffer.
Objek memori kerangka kerja secara otomatis dirilis ketika driver memanggil WdfRequestComplete.
Untuk informasi selengkapnya tentang WdfRequestProbeAndLockUserBufferForWrite, lihat Mengakses Buffer Data di Driver Framework-Based.
Contoh
Untuk contoh kode yang menggunakan WdfRequestProbeAndLockUserBufferForWrite, lihat WdfRequestProbeAndLockUserBufferForRead.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Header | wdfrequest.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (lihat Penerapan Versi Pustaka Kerangka Kerja.) |
IRQL | PASSIVE_LEVEL |
Aturan kepatuhan DDI | DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(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