Fungsi IoCsqRemoveIrp (wdm.h)
Rutinitas IoCsqRemoveIrp menghapus IRP tertentu dari antrean.
Sintaks
PIRP IoCsqRemoveIrp(
[in, out] PIO_CSQ Csq,
[in, out] PIO_CSQ_IRP_CONTEXT Context
);
Parameter
[in, out] Csq
Arahkan ke struktur IO_CSQ untuk antrean IRP pembatalan aman driver. Struktur ini harus diinisialisasi oleh IoCsqInitialize atau IoCsqInitializeEx.
[in, out] Context
Penunjuk ke struktur IO_CSQ_IRP_CONTEXT yang mengidentifikasi IRP yang akan dihapus. Struktur IO_CSQ_IRP_CONTEXT diinisialisasi oleh IoCsqInsertIrp atau IoCsqInsertIrpEx ketika IRP pertama kali dimasukkan dalam antrean.
Nilai kembali
Rutinitas ini mengembalikan pointer ke IRP yang dihapus dari antrean, atau NULL jika IRP tersebut telah dibatalkan.
Keterangan
IoCsqRemoveIrp menggunakan rutinitas pengiriman antrean untuk menghapus IRP. Rutinitas IoCsqRemoveIrp :
- Memanggil rutinitas CsqAcquireLock antrean untuk mengunci antrean.
- Menggunakan parameter IrpContext untuk menentukan IRP mana yang akan dihapus, dan memanggil rutinitas CsqRemoveIrp antrean untuk menghapus IRP tersebut.
- Memanggil rutinitas CsqReleaseLock antrean untuk membuka kunci antrean.
Perhatikan bahwa rutinitas IoCsqXxx menggunakan anggota DriverContext[3] dari IRP untuk menyimpan informasi konteks IRP. Driver yang menggunakan rutinitas ini untuk mengantre IRP harus membiarkan anggota tersebut tidak digunakan.
Penelepon IoCsqRemoveIrp harus berjalan pada IRQL <= DISPATCH_LEVEL. Rutinitas panggilan balik driver harus bekerja dengan benar di IRQL tersebut.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Tersedia di Windows XP dan versi Windows yang lebih baru. Driver yang juga harus bekerja di Windows 2000 dan Windows 98/Me dapat menautkan ke Csq.lib untuk menggunakan rutinitas. |
Target Platform | Universal |
Header | wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (lihat bagian Keterangan) |