Fungsi IoCsqRemoveNextIrp (wdm.h)

Rutinitas IoCsqRemoveNextIrp menghapus IRP yang cocok berikutnya dalam antrean.

Sintaks

PIRP IoCsqRemoveNextIrp(
  [in, out]      PIO_CSQ Csq,
  [in, optional] PVOID   PeekContext
);

Parameter

[in, out] Csq

Arahkan ke tabel pengiriman driver untuk antrean IRP yang batal aman. Tabel pengiriman harus diinisialisasi oleh IoCsqInitialize.

[in, optional] PeekContext

Penunjuk ke nilai konteks yang ditentukan driver. IoCsqRemoveNextIrp meneruskan parameter ini ke rutinitas CsqPeekNextIrp driver. Untuk informasi selengkapnya, lihat bagian Keterangan berikut ini.

Nilai kembali

Rutinitas ini mengembalikan pointer ke IRP yang cocok berikutnya dalam antrean, atau NULL jika tidak ada lagi IRP yang tersedia. Rutinitas hanya mengembalikan IRP yang belum dibatalkan.

Keterangan

IoCsqRemoveNextIrp menggunakan rutinitas pengiriman antrean untuk menghapus IRP. Rutinitas IoCsqRemoveNextIrp :

  1. Memanggil rutinitas CsqAcquireLock antrean untuk mengunci antrean.
  2. Memanggil rutinitas CsqPeekNextIrp antrean untuk menemukan IRP yang cocok berikutnya dalam antrean. IoCsqRemoveNextIrp meneruskan nilai parameter PeekContext sebagai parameter PeekContext dari CsqPeekNextIrp. CsqPeekNextIrp mengembalikan pointer ke IRP yang cocok berikutnya, atau NULL jika tidak ada IRP yang cocok.
  3. Jika nilai pengembalian CsqPeekNextIrp bukan NULL, IoCsqRemoveNextIrp memanggil rutinitas CsqRemoveIrp antrean untuk menghapus IRP.
  4. Memanggil rutinitas CsqReleaseLock antrean untuk membuka kunci antrean.
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 IoCsqRemoveNextIrp 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 pada Windows 2000 dan Windows 98/Me dapat ditautkan 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

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp