Fungsi KsForwardAndCatchIrp (ks.h)

Fungsi KsForwardAndCatchIrp meneruskan IRP ke driver yang ditentukan setelah menginisialisasi lokasi tumpukan berikutnya, dan mendapatkan kembali kontrol IRP saat selesai dari driver tersebut. Fungsi ini digunakan dengan perangkat yang dapat ditumpuk dan tidak menggunakan objek file untuk berkomunikasi.

Jika objek file sedang digunakan, pemanggil harus menginisialisasi lokasi tumpukan saat ini dengan objek file tersebut sebelum memanggil fungsi KsForwardAndCatchIrp . Fungsi ini memverifikasi bahwa ada lokasi tumpukan baru untuk disalin sebelum mencoba melakukannya. Jika tidak ada lokasi tumpukan baru, fungsi akan mengembalikan STATUS_INVALID_DEVICE_REQUEST. Terlepas dari apakah lokasi tumpukan baru ada, IRP tidak selesai.

Sintaks

KSDDKAPI NTSTATUS KsForwardAndCatchIrp(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] PIRP           Irp,
  [in] PFILE_OBJECT   FileObject,
  [in] KSSTACK_USE    StackUse
);

Parameter

[in] DeviceObject

Menentukan perangkat yang akan diteruskan ke IRP.

[in] Irp

Menentukan IRP yang sedang diteruskan ke driver yang ditentukan.

[in] FileObject

Menentukan nilai objek file untuk disalin ke lokasi tumpukan berikutnya. Ini bisa NULL untuk mengatur tidak ada objek file, tetapi nilai selalu disalin ke lokasi tumpukan berikutnya. Jika objek file saat ini harus dipertahankan, objek harus diteruskan dalam parameter ini.

[in] StackUse

Menentukan nilai yang dijumlahkan oleh KSSTACK_USE. Jika nilainya adalah KsStackCopyToNewLocation, parameter disalin ke lokasi tumpukan berikutnya. Jika nilainya adalah KsStackReuseCurrentLocation, lokasi tumpukan saat ini digunakan kembali saat IRP diteruskan dan lokasi tumpukan dikembalikan ke lokasi saat ini. Jika nilainya adalah KsStackUseNewLocation, lokasi tumpukan baru digunakan apa adanya.

Nilai kembali

Fungsi KsForwardAndCatchIrp mengembalikan hasil IoCallDriver, atau mengembalikan status yang tidak valid jika tidak ada lagi kedalaman tumpukan yang tersedia.

Keterangan

Jenis KSSTACK_USE enumerasi menentukan bagaimana tumpukan IRP digunakan saat meneruskan IRP ke driver berikutnya.

Enumeration Deskripsi
KsStackCopyToNewLocation Menunjukkan bahwa parameter akan disalin ke lokasi tumpukan berikutnya.
KsStackReuseCurrentLocation Menunjukkan bahwa lokasi tumpukan saat ini akan digunakan kembali.
KsStackUseNewLocation Menunjukkan bahwa lokasi tumpukan berikutnya akan digunakan tanpa modifikasi.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Header ks.h (termasuk Ks.h)
Pustaka Ks.lib