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) |