Fungsi WdfRequestForwardToParentDeviceIoQueue (wdfrequest.h)
[Berlaku untuk KMDF saja]
Metode WdfRequestForwardToParentDeviceIoQueue mengantrekan ulang permintaan I/O dari antrean I/O perangkat anak ke antrean I/O tertentu dari perangkat induk anak.
Sintaks
NTSTATUS WdfRequestForwardToParentDeviceIoQueue(
[in] WDFREQUEST Request,
[in] WDFQUEUE ParentDeviceQueue,
[in] PWDF_REQUEST_FORWARD_OPTIONS ForwardOptions
);
Parameter
[in] Request
Handel ke objek permintaan kerangka kerja.
[in] ParentDeviceQueue
Handel ke objek antrean kerangka kerja.
[in] ForwardOptions
Penunjuk ke struktur WDF_REQUEST_FORWARD_OPTIONS yang dialokasikan penelepon.
Nilai kembali
WdfRequestForwardToParentDeviceIoQueue mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Ukuran struktur WDF_REQUEST_FORWARD_OPTIONS yang disediakan tidak valid. |
|
Anggota struktur WDF_REQUEST_FORWARD_OPTIONS yang disediakan berisi nilai yang tidak valid. |
|
Nilai ini dikembalikan jika salah satu hal berikut ini terjadi:
|
|
Antrean I/O yang ditentukan tidak menerima permintaan baru. |
Metode ini mungkin juga mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Sebelum driver dapat memanggil WdfRequestForwardToParentDeviceIoQueue, driver harus memanggil WdfPdoInitAllowForwardingRequestToParent.
Driver harus menggunakan metode yang sama untuk mengakses buffer data (buffered, direct, atau tidak keduanya) untuk perangkat induk dan perangkat anak.
Jika driver Anda akan memanggil WdfRequestForwardToParentDeviceIoQueue untuk mengantre ulang permintaan I/O, driver tidak boleh menggunakan objek permintaan sebagai induk objek kerangka kerja lainnya, seperti objek timer atau objek item kerja.
Jika driver Anda telah memanggil WdfDeviceInitSetRequestAttributes untuk menentukan ruang konteks untuk objek permintaan perangkat induk , kerangka kerja tidak menambahkan ruang konteks ini untuk meminta objek yang diterima driver dalam antrean perangkat anak. Driver dapat memanggil WdfObjectAllocateContext untuk menambahkan ruang konteks ke objek permintaan sebelum driver memanggil WdfRequestForwardToParentDeviceIoQueue. Di sisi lain, jika driver yang disebut WdfDeviceInitSetRequestAttributes untuk objek permintaan perangkat anak , dan jika objek permintaan perangkat induk menggunakan ruang konteks yang sama dengan atau lebih kecil dari ruang konteks perangkat anak, driver dapat menggunakan ruang konteks objek permintaan tanpa memanggil WdfObjectAllocateContext.
Saat ini, driver harus menggunakan opsi kirim dan lupakan untuk semua permintaan I/O yang diantrekan kembali. Oleh karena itu, ketahuilah bahwa pada saat kerangka kerja menghapus objek permintaan yang diantrekan kembali, mungkin telah menghapus perangkat anak yang awalnya menerima objek permintaan. Dengan demikian, driver tidak boleh menggunakan fungsi EvtCleanupCallback atau EvtDestroyCallback dari objek permintaan yang diantrekan kembali untuk mengakses sumber daya perangkat anak, karena sumber daya mungkin dihapus sebelum fungsi EvtCleanupCallback atau EvtDestroyCallback berjalan.
Untuk informasi selengkapnya tentang WdfRequestForwardToParentDeviceIoQueue, lihat Mengantre ulang Permintaan I/O.
Contoh
Contoh kode berikut pertama-tama menentukan perangkat induk perangkat yang menerima permintaan I/O, lalu mengantrekan ulang permintaan I/O ke antrean I/O default perangkat induk.
WDFDEVICE device, parentDevice;
WDF_REQUEST_FORWARD_OPTIONS forwardOptions;
NTSTATUS status;
device = WdfIoQueueGetDevice(WdfRequestGetIoQueue(Request));
parentDevice = WdfPdoGetParent(device);
WDF_REQUEST_FORWARD_OPTIONS_INIT(&forwardOptions);
status = WdfRequestForwardToParentDeviceIoQueue(
Request,
WdfDeviceGetDefaultQueue(parentDevice),
&forwardOptions
);
if (!NT_SUCCESS(status)) {
WdfRequestComplete(
Request,
status
);
}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1.9 |
Header | wdfrequest.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (lihat Penerapan Versi Pustaka Kerangka Kerja.) |
IRQL | <=DISPATCH_LEVEL |
Aturan kepatuhan DDI | DriverCreate(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