Funzione IoStartNextPacket (wdm.h)
La routine IoStartNextPacket rimuove la coda IRP successiva, se presente, dalla coda del dispositivo associata all'oggetto dispositivo specificato e chiama la routine StartIo del driver.
Sintassi
void IoStartNextPacket(
[in] PDEVICE_OBJECT DeviceObject,
[in] BOOLEAN Cancelable
);
Parametri
[in] DeviceObject
Puntatore all'oggetto dispositivo per il quale l'IRP deve essere dequeued.
[in] Cancelable
Specifica se i runtime di integrazione nella coda del dispositivo possono essere annullati.
Valore restituito
Nessuno
Osservazioni
Se non sono attualmente presenti irP nella coda del dispositivo per la destinazione DeviceObject, questa routine restituisce semplicemente il controllo al chiamante.
Se il driver ha passato un puntatore a una routine di annullamento quando ha chiamato IoStartPacket, deve passare TRUE nel parametro Cancelable. Se cancelable è TRUE, il gestore di I/O userà il blocco di selezione annulla per proteggere la coda del dispositivo e l'IRP corrente.
I driver che non dispongono di una routine startIo non possono chiamare IoStartNextPacket.
I driver che chiamano IoStartNextPacket dalla routine startIo devono essere a conoscenza dei problemi di ricorsione. Se un driver può chiamare IoStartNextPacket su un numero elevato di richieste in successione dalla routine StartIo (ad esempio, quando si verifica un errore del dispositivo e il driver lo cancella dalla coda del dispositivo), è necessario impostare l'attributo DeferredStartIo per il dispositivo usando routine IoSetStartIoAttributes. Questo attributo garantisce che il pacchetto successivo non venga emesso fino a quando non viene restituita la precedente StartIo chiamata.
I chiamanti di IoStartNextPacket devono essere in esecuzione in IRQL = DISPATCH_LEVEL. In genere, questa routine viene chiamata dalla routine DpcForIsr di un driver di dispositivo o routine CustomDpc, entrambe eseguite in IRQL = DISPATCH_LEVEL.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile a partire da Windows 2000. |
piattaforma di destinazione | Universale |
intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
libreria | NtosKrnl.lib |
dll | NtosKrnl.exe |
IRQL | DISPATCH_LEVEL (vedere la sezione Osservazioni) |
regole di conformità DDI | HwStorPortProhibitedDDIs(storport), IrqlDispatch(storport), IrqlDispatch(storport), IrqlDispatch(wdm), SpinLockSafe(storport), SpinLockSafe(storport), SpinLockSafe(wdm), StartIoRecursion(wdm) |