Bagikan melalui


Fungsi IoSetNextIrpStackLocation (wdm.h)

Rutinitas IoSetNextIrpStackLocation mengatur lokasi tumpukan IRP di IRP yang dialokasikan driver ke penelepon.

Sintaks

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

Parameter

[in, out] Irp

Arahkan ke IRP yang lokasi tumpukannya akan diatur.

Nilai kembali

Tidak ada

Keterangan

Secara umum, rutinitas ini jarang digunakan oleh pengemudi. Ini terutama digunakan oleh driver yang memerlukan lokasi tumpukan mereka sendiri di IRP yang telah mereka alokasikan, sendiri, untuk mengirim ke driver lain.

IoSetNextIrpStackLocation umumnya tidak diperlukan karena:

  • Driver menerima IRP yang diteruskan dari driver lain tingkat yang lebih tinggi, sehingga sudah memiliki lokasi tumpukan,
  • Atau, driver mengalokasikan IRP tetapi tidak memerlukan lokasi tumpukannya sendiri karena dapat menyimpan semua yang dibutuhkan dalam blok konteks yang alamatnya dapat diteruskan ke rutinitas IoCompletion-nya .
Perawatan harus diambil jika rutinitas ini dipanggil, terutama ketika mengalokasikan IRP dengan IoAllocateIrp atau IoMakeAssociatedIrp. Penulis driver alokasi harus ingat bahwa lokasi tumpukan khusus penelepon tidak disertakan dalam jumlah lokasi tumpukan yang diperlukan oleh driver tingkat bawah tempatnya mengirim RUN dengan IoCallDriver. Driver harus secara eksplisit menentukan lokasi tumpukan untuk dirinya sendiri dalam panggilannya ke IoAllocateIrp atau IoMakeAssociatedIrp jika memanggil IoSetNextIrpStackLocation dengan IRP yang dikembalikan oleh salah satu rutinitas.

Driver tidak dapat memanggil IoSetNextIrpStackLocation dengan IRP apa pun yang dialokasikannya dengan memanggil IoBuildAsynchronousFsdRequest, IoBuildDeviceIoControlRequest, atau IoBuildSynchronousFsdRequest.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 2000.
Target Platform Desktop
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
IRQL Tingkat apa pun

Lihat juga

IO_STACK_LOCATION

IoAllocateIrp

IoBuildAsynchronousFsdRequest

IoBuildDeviceIoControlRequest

IoBuildSynchronousFsdRequest

IoCallDriver

IoSetCompletionRoutine