Fungsi IoStartNextPacket (ntifs.h)

IoStartNextPacket rutin menghapus antrean IRP berikutnya, jika ada, dari antrean perangkat terkait objek perangkat yang diberikan dan memanggil rutinitas StartIo driver.

Sintaks

void IoStartNextPacket(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] BOOLEAN        Cancelable
);

Parameter

[in] DeviceObject

Arahkan ke objek perangkat tempat IRP akan dilepas antreannya.

[in] Cancelable

Menentukan apakah RUNP dalam antrean perangkat dapat dibatalkan.

Nilai kembali

Tidak ada

Keterangan

Jika saat ini tidak ada IRP dalam antrean perangkat untuk DeviceObject target, rutinitas ini hanya mengembalikan kontrol ke pemanggil.

Jika driver meneruskan pointer ke rutinitas pembatalan ketika disebut IoStartPacket, driver harus meneruskan TRUE dalam parameter Yang Dapat Dibatalkan rutin ini. Jika Dapat Dibatalkan TRUE, manajer I/O akan menggunakan kunci putar batal untuk melindungi antrean perangkat dan IRP saat ini.

Driver yang tidak memiliki rutinitas StartIo tidak dapat memanggil IoStartNextPacket.

Driver yang memanggil IoStartNextPacket dari rutinitas StartIo mereka harus menyadari masalah rekursi. Jika driver dapat memanggil IoStartNextPacket pada sejumlah besar permintaan berturut-turut dari rutinitas StartIo -nya (misalnya, ketika kesalahan perangkat terjadi dan driver membersihkan antrean perangkat), Anda harus mengatur atribut DeferredStartIo untuk perangkat dengan menggunakan rutinitas IoSetStartIoAttributes . Atribut ini memastikan bahwa paket berikutnya tidak akan dikeluarkan sampai panggilan StartIo sebelumnya kembali.

Penelepon IoStartNextPacket harus berjalan di IRQL = DISPATCH_LEVEL. Biasanya, rutinitas ini dipanggil dari rutinitas DpcForIsr atau CustomDpc driver perangkat, yang keduanya dijalankan di IRQL = DISPATCH_LEVEL.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000
Target Platform Universal
Header ntifs.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL DISPATCH_LEVEL (lihat bagian Keterangan)
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport), IrqlDispatch(storport), IrqlDispatch(storport), IrqlDispatch(wdm), SpinLockSafe(storport), SpinLockSafe(storport), SpinLockSafe(wdm), StartIoRecursion(wdm)

Lihat juga

DEVICE_OBJECT

IoSetStartIoAttributes

IoStartNextPacketByKey

IoStartPacket