Funzione IoCsqInsertIrp (wdm.h)
La routine IoCsqInsertIrp inserisce un IRP nella coda IRP annulla-sicura del driver.
Sintassi
void IoCsqInsertIrp(
[in, out] PIO_CSQ Csq,
[in, out] PIRP Irp,
[out, optional] PIO_CSQ_IRP_CONTEXT Context
);
Parametri
[in, out] Csq
Puntatore alla struttura IO_CSQ per la coda IRP annullata del driver. Questa struttura deve essere stata inizializzata da IoCsqInitialize o IoCsqInitializeEx.
[in, out] Irp
Puntatore all'IRP da accodare.
[out, optional] Context
Puntatore a una struttura IO_CSQ_IRP_CONTEXT. IoCsqInsertIrp inizializza questa struttura con informazioni di contesto per l'IRP inserito. Il driver passa questo valore a IoCsqRemoveIrp per eliminare l'IRP dalla coda. la context può essere NULL se il driver non userà IoCsqRemoveIrp per rimuovere l'IRP dalla coda.
Valore restituito
Nessuno
Osservazioni
IoCsqInsertIrp usa le routine dispatch della coda per inserire l'IRP. Routine di IoCsqInsertIrp:
- Chiama la routine csqAcquireLock della coda per bloccare la coda.
- Chiama la routine di CsqInsertIrp della coda per inserire l'IRP.
- Contrassegna l'IRP come in sospeso.
- Chiama la routine di CsqReleaseLock della coda per sbloccare la coda.
I driver possono anche usare IoCsqInsertIrpEx per inserire un IRP nella coda. Per una coda specificata da IoCsqInitializeEx, IoCsqInsertIrpEx offre funzionalità aggiuntive. Per altre informazioni, vedere Cancel-Safe code IRP.
Si noti che le routine di IoCsqXxx usano il DriverContext[3] dell'IRP per contenere le informazioni sul contesto IRP. I driver che usano queste routine per accodare i runtime di integrazione devono lasciare inutilizzati il membro.
I chiamanti di IoCsqInsertIrp devono essere in esecuzione in un <IRQL = DISPATCH_LEVEL. Le routine di callback del driver devono funzionare correttamente in quel runtime di integrazione.