Fungsi WdfRequestRetrieveOutputWdmMdl (wdfrequest.h)
[Berlaku untuk KMDF saja]
Metode WdfRequestRetrieveOutputWdmMdl mengambil daftar deskriptor memori (MDL) yang mewakili buffer output permintaan I/O.
Sintaks
NTSTATUS WdfRequestRetrieveOutputWdmMdl(
[in] WDFREQUEST Request,
[out] PMDL *Mdl
);
Parameter
[in] Request
Handel ke objek permintaan kerangka kerja.
[out] Mdl
Penunjuk ke lokasi yang menerima penunjuk ke MDL.
Nilai kembali
WdfRequestRetrieveOutputWdmMdl mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Parameter input tidak valid. |
|
Jenis permintaan tidak valid atau permintaan tidak menggunakan I/O buffer atau langsung. Untuk informasi selengkapnya tentang metode yang didukung untuk mengakses buffer data, lihat bagian Keterangan berikut ini. |
|
Permintaan telah selesai. |
|
Panjang buffer input adalah nol. |
|
Memori tidak cukup. |
Metode ini mungkin juga mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Buffer output permintaan menerima informasi, seperti data dari disk, yang disediakan driver kepada penawali permintaan. Driver Anda dapat memanggil WdfRequestRetrieveOutputWdmMdl untuk permintaan baca atau permintaan kontrol I/O perangkat, tetapi tidak untuk permintaan tulis (karena permintaan tulis tidak menyediakan data output).
Metode WdfRequestRetrieveOutputWdmMdl mengambil MDL buffer output untuk permintaan I/O yang menggunakan metode I/O buffer atau metode I/O langsung untuk mengakses buffer data. Jika kode kontrol I/O permintaan IRP_MJ_INTERNAL_DEVICE_CONTROL, atau jika permintaan berasal dari driver mode kernel lain, WdfRequestRetrieveOutputWdmMdl juga mendukung permintaan I/O yang tidak menggunakan buffer atau I/O langsung.
Jika WdfRequestRetrieveOutputWdmMdl mengembalikan STATUS_SUCCESS, driver menerima pointer ke MDL yang menjelaskan buffer output.
Driver tidak boleh mengakses MDL permintaan setelah menyelesaikan permintaan I/O.
Untuk informasi selengkapnya tentang WdfRequestRetrieveOutputWdmMdl, lihat Mengakses Buffer Data di Driver Framework-Based.
Contoh
Contoh kode berikut adalah bagian dari fungsi panggilan balik EvtIoRead yang mendapatkan MDL untuk buffer input permintaan I/O. Jika panggilan ke WdfRequestRetrieveOutputWdmMdl gagal, driver menyelesaikan permintaan dengan status kesalahan yang dikembalikan WdfRequestRetrieveOutputWdmMdl .
VOID
MyDrvEvtIoRead(
IN WDFQUEUE Queue,
IN WDFREQUEST Request,
IN size_t Length
)
{
NTSTATUS status;
PMDL mdl = NULL;
...
status = WdfRequestRetrieveOutputWdmMdl(
Request,
&mdl
);
if (!NT_SUCCESS(status))
{
WdfRequestCompleteWithInformation(
Request,
status,
0
);
}
...
}
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 | <=DISPATCH_LEVEL |
Aturan kepatuhan DDI | DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), MdlAfterReqCompletedIntIoctl(kmdf), MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctl(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedRead(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWrite(kmdf), OutputBufferAPI(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