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
STATUS_INVALID_PARAMETER
Parameter input tidak valid.
STATUS_INVALID_USER_BUFFER
Parameter Panjang adalah nol.
STATUS_INVALID_DEVICE_REQUEST
Permintaan telah selesai atau tidak valid.
STATUS_ACCESS_VIOLATION
Utas saat ini bukan pembuat permintaan I/O.
STATUS_INSUFFICIENT_RESOURCES
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

WdfMemoryGetBuffer

WdfRequestProbeAndLockUserBufferForRead

WdfRequestRetrieveUnsafeUserOutputBuffer