Fungsi WdfRequestRetrieveUnsafeUserOutputBuffer (wdfrequest.h)

[Hanya berlaku untuk KMDF]

Metode WdfRequestRetrieveUnsafeUserOutputBuffer mengambil buffer output permintaan I/O, jika teknik permintaan untuk mengakses buffer data tidak di-buffer atau I/O langsung.

Sintaks

NTSTATUS WdfRequestRetrieveUnsafeUserOutputBuffer(
  [in]            WDFREQUEST Request,
  [in]            size_t     MinimumRequiredLength,
  [out]           PVOID      *OutputBuffer,
  [out, optional] size_t     *Length
);

Parameter

[in] Request

Handel ke objek permintaan kerangka kerja.

[in] MinimumRequiredLength

Ukuran buffer minimum, dalam byte, yang dibutuhkan driver untuk memproses permintaan I/O.

[out] OutputBuffer

Penunjuk ke lokasi yang menerima alamat buffer.

[out, optional] Length

Penunjuk ke lokasi yang menerima ukuran buffer, dalam byte. Parameter ini bersifat opsional dan dapat berupa NULL.

Nilai kembali

WdfRequestRetrieveUnsafeUserOutputBuffer 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_DEVICE_REQUEST
Nilai ini dikembalikan jika salah satu hal berikut ini terjadi:
STATUS_BUFFER_TOO_SMALL
Parameter MinimumRequiredLength menentukan ukuran buffer yang lebih besar dari ukuran aktual buffer.
 

Metode ini mungkin juga mengembalikan nilai NTSTATUS lainnya.

Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.

Keterangan

Metode WdfRequestRetrieveUnsafeUserOutputBuffer harus dipanggil dari fungsi panggilan balik EvtIoInCallerContext . Setelah memanggil WdfRequestRetrieveUnsafeUserOutputBuffer, driver harus memanggil WdfRequestProbeAndLockUserBufferForWrite.

Driver dapat memanggil WdfRequestRetrieveUnsafeUserOutputBuffer jika kode kontrol I/O permintaan IRP_MJ_READ atau IRP_MJ_DEVICE_CONTROL.

Driver dapat mengakses buffer yang diambil sampai menyelesaikan permintaan I/O yang diwakili parameter Permintaan .

Untuk informasi selengkapnya tentang WdfRequestRetrieveUnsafeUserOutputBuffer, lihat Mengakses Buffer Data di Driver Framework-Based.

Contoh

Untuk contoh kode yang menggunakan WdfRequestRetrieveUnsafeUserOutputBuffer, 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 BufAfterReqCompletedIntIoctl(kmdf), BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctl(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedRead(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWrite(kmdf), DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), OutputBufferAPI(kmdf)

Lihat juga

EvtIoInCallerContext

WdfRequestProbeAndLockUserBufferForWrite

WdfRequestRetrieveUnsafeUserInputBuffer