Fungsi IoCsqInsertIrpEx (wdm.h)
Rutinitas IoCsqInsertIrpEx menyisipkan IRP ke dalam antrean IRP yang aman untuk pembatalan driver.
Sintaks
NTSTATUS IoCsqInsertIrpEx(
[in, out] PIO_CSQ Csq,
[in, out] PIRP Irp,
[out, optional] PIO_CSQ_IRP_CONTEXT Context,
[in, optional] PVOID InsertContext
);
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] Irp
Arahkan ke IRP yang akan diantrekan.
[out, optional] Context
Arahkan ke struktur IO_CSQ_IRP_CONTEXT . IoCsqInsertIrpEx menginisialisasi struktur ini dengan informasi konteks untuk IRP yang disisipkan. Driver meneruskan nilai ini ke IoCsqRemoveIrp untuk menghapus IRP dari antrean. Konteks dapat berupa NULL jika driver tidak akan menggunakan IoCsqRemoveIrp untuk menghapus IRP ini dari antrean.
[in, optional] InsertContext
Penunjuk ke nilai konteks yang ditentukan driver. Parameter ini diteruskan ke rutinitas CsqInsertIrpEx driver, jika memilikinya. Jika tidak, parameter ini diabaikan.
Nilai kembali
Jika parameter Csqdiinisialisasi dengan IoCsqInitialize, IoCsqInsertIrpEx selalu mengembalikan STATUS_SUCCESS. Jika Csqdiinisialisasi dengan IoCsqInitializeEx, IoCsqInsertIrpEx mengembalikan nilai yang dikembalikan oleh rutinitas CsqInsertIrpEx driver.
Keterangan
IoCsqInsertIrpEx menggunakan rutinitas pengiriman antrean untuk menyisipkan IRP. Rutinitas IoCsqInsertIrpEx :
- Memanggil rutinitas CsqAcquireLock antrean untuk mengunci antrean.
- Jika struktur IO_CSQ antrean diinisialisasi oleh IoCsqInitialize, IoCsqInsertIrpEx memanggil rutinitas CsqInsertIrp antrean untuk menyisipkan IRP. Jika struktur IO_CSQ antrean diinisialisasi oleh IoCsqInitializeEx, IoCsqInsertIrpEx memanggil rutinitas CsqInsertIrpEx antrean untuk menyisipkan IRP, dan meneruskan parameter InsertContext sebagai parameter InsertContextCsqInsertIrpEx.
- 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 runtime integrasi harus membiarkan anggota tersebut tidak digunakan.
Penelepon IoCsqInsertIrpEx harus berjalan pada IRQL <= DISPATCH_LEVEL. Rutinitas panggilan balik driver harus berfungsi dengan benar di IRQL ini.
Persyaratan
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