Fungsi IoSkipCurrentIrpStackLocation (wdm.h)

Makro IoSkipCurrentIrpStackLocation memodifikasi penunjuk array IO_STACK_LOCATION sistem, sehingga ketika driver saat ini memanggil driver berikutnya yang lebih rendah, driver tersebut menerima struktur IO_STACK_LOCATION yang sama dengan yang diterima driver saat ini.

Sintaks

void IoSkipCurrentIrpStackLocation(
  [in, out] PIRP Irp
);

Parameter

[in, out] Irp

Penunjuk ke IRP.

Mengembalikan nilai

Tidak ada

Keterangan

Ketika driver Anda mengirim IRP ke driver yang lebih rendah berikutnya, driver Anda dapat memanggil IoSkipCurrentIrpStackLocation jika Anda tidak bermaksud untuk memberikan rutinitas IoCompletion (alamat yang disimpan dalam struktur IO_STACK_LOCATION driver). Jika Anda memanggil IoSkipCurrentIrpStackLocation sebelum memanggil IoCallDriver, driver berikutnya yang lebih rendah menerima IO_STACK_LOCATION yang sama dengan yang diterima driver Anda.

Jika Anda ingin memberikan rutinitas IoCompletion untuk IRP, driver Anda harus memanggil IoCopyCurrentIrpStackLocationToNext alih-alih IoSkipCurrentIrpStackLocation. Jika driver yang ditulis dengan buruk membuat kesalahan memanggil IoSkipCurrentIrpStackLocation dan kemudian mengatur rutinitas penyelesaian, driver ini mungkin menimpa rutinitas penyelesaian yang ditetapkan oleh driver di atasnya.

Jika driver telah menunggu IRP, driver tidak boleh memanggil IoSkipCurrentIrpStackLocation sebelum meneruskan IRP ke driver yang lebih rendah berikutnya. Jika driver memanggil IoSkipCurrentIrpStackLocation pada IRP yang tertunda sebelum meneruskannya ke driver bawah berikutnya, bendera SL_PENDING_RETURNED masih diatur di anggota Kontrol lokasi tumpukan I/O untuk driver berikutnya. Karena driver berikutnya memiliki lokasi tumpukan tersebut dan mungkin memodifikasinya, maka berpotensi menghapus bendera yang tertunda. Situasi ini dapat menyebabkan sistem operasi mengeluarkan pemeriksaan bug atau pemrosesan IRP tidak pernah selesai.

Sebagai gantinya, driver yang telah menunggu IRP harus memanggil IoCopyCurrentIrpStackLocationToNext untuk menyiapkan lokasi tumpukan baru untuk driver bawah berikutnya sebelum memanggil IoCallDriver.

Jika driver Anda memanggil IoSkipCurrentIrpStackLocation, berhati-hatilah untuk tidak memodifikasi struktur IO_STACK_LOCATION dengan cara yang tidak sengaja dapat memengaruhi driver yang lebih rendah atau perilaku sistem sehubungan dengan driver tersebut. Contohnya termasuk memodifikasi gabungan Parameter struktur IO_STACK_LOCATION atau memanggil IoMarkIrpPending.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000
Header wdm.h
IRQL Tingkat apa pun