Bagikan melalui


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 :

  1. Memanggil rutinitas CsqAcquireLock antrean untuk mengunci antrean.
  2. Menggunakan parameter IrpContext untuk menentukan IRP mana yang akan dihapus, dan memanggil rutinitas CsqRemoveIrp antrean untuk menghapus IRP tersebut.
  3. Memanggil rutinitas CsqReleaseLock antrean untuk membuka kunci antrean.
Driver dapat menggunakan rutinitas IoCsqRemoveNextIrp untuk menghapus IRP yang cocok dengan kriteria tertentu. Untuk informasi selengkapnya, lihat Antrean IRP Batal-Aman.

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)

Lihat juga

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IO_CSQ_IRP_CONTEXT

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveNextIrp