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. Il contesto può essere NULL se il driver non userà IoCsqRemoveIrp per rimuovere l'IRP dalla coda.
Valore restituito
nessuno
Osservazioni
IoCsqInsertIrp usa le routine di invio della coda per inserire l'IRP. Routine IoCsqInsertIrp :
- Chiama la routine CsqAcquireLock della coda per bloccare la coda.
- Chiama la routine CsqInsertIrp della coda per inserire l'IRP.
- Contrassegna l'IRP come in sospeso.
- Chiama la routine 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 Code IRP cancel-safe.
Si noti che le routine IoCsqXxx usano il membro DriverContext[3] dell'IRP per contenere le informazioni sul contesto di IRP. I driver che usano queste routine per accodare i provider di integrazione devono lasciare inutilizzati i membri.
I chiamanti di IoCsqInsertIrp devono essere in esecuzione in un irQL <= DISPATCH_LEVEL. Le routine di callback del driver devono funzionare correttamente in quel irQL.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile in Windows XP e versioni successive di Windows. I driver che devono funzionare anche in Windows 2000 e Windows 98/Me possono invece collegarsi a Csq.lib per usare la routine. |
Piattaforma di destinazione | Universale |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (vedere sezione Osservazioni) |
Regole di conformità DDI | IoAllocateFree(wdm), IoReuseIrp(wdm), IrpCancelField(wdm), RemoveLockCheck(wdm), RemoveLockForward(wdm), RemoveLockForward2(wdm), RemoveLockForwardDeviceControl(wdm), RemoveLockForwardDeviceControl2(wdm), RemoveLockForwardDeviceControlInternal(wdm), RemoveLockForwardDeviceControlInternal2(wdm), RemoveLockForwardRead2, RemoveLockForwardRead2(wdm) , RemoveLockForwardWrite(wdm), RemoveLockForwardWrite2(wdm), RemoveLockReleaseCleanup(wdm), RemoveLockReleaseClose(wdm), RemoveLockReleaseCreate(wdm), RemoveLockReleaseDeviceControl(wdm), RemoveLockReleaseDeviceControl(wdm), RemoveLockReleaseDeviceControl(wdm), RemoveLockReleasePower(wdm), RemoveLockReleaseShutdown(wdm),RemoveLockReleaseSystemControl(wdm), RemoveLockReleaseWrite(wdm) |