IO_CSQ_COMPLETE_CANCELED_IRP funzione di callback (wdm.h)
La routine CsqCompleteCanceledIrp viene utilizzata dal sistema per segnalare al driver che può completare un IRP annullato.
Sintassi
IO_CSQ_COMPLETE_CANCELED_IRP IoCsqCompleteCanceledIrp;
void IoCsqCompleteCanceledIrp(
[in] PIO_CSQ Csq,
[in] PIRP Irp
)
{...}
Parametri
[in] Csq
Puntatore alla struttura IO_CSQ per la coda IRP annullata.
[in] Irp
Puntatore all'IRP da annullare.
Valore restituito
nessuno
Osservazioni
Il driver specifica la routine CsqCompleteCanceledIrp per una coda IRP annullata quando inizializza la struttura IO_CSQ della coda. Il driver specifica la routine come parametro CsqCompleteCanceledIrp di IoCsqInitialize o IoCsqInitializeEx quando inizializza IO_CSQ. Per altre informazioni, vedere Cancel-Safe IRP Queues.For more information, see Cancel-Safe IRP Queues.
Il sistema chiama questa routine per completare un IRP annullato che è stato rimosso dalla coda del driver. In genere, i driver chiamano semplicemente IoCompleteRequest per l'IRP con stato di STATUS_CANCELLED.
I driver non devono rimuovere l'IRP dalla coda prima di completarlo come annullato: il sistema chiama sempre la routine CsqRemoveIrp della coda per rimuovere l'IRP dalla coda prima di chiamare CsqCompleteCanceledIrp.
Esempio
Per definire una routine di callback CsqCompleteCanceledIrp , è necessario innanzitutto fornire una dichiarazione di funzione che identifica il tipo di routine di callback che si sta definendo. Windows fornisce un set di tipi di funzione di callback per i driver. La dichiarazione di una funzione tramite i tipi di funzione di callback consente di analizzare il codice per i driver, l'SDV ( Static Driver Verifier ) e altri strumenti di verifica di trovare errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.
Ad esempio, per definire una routine di callback CsqCompleteCanceledIrp denominata MyCsqCompleteCanceledIrp
, usare il tipo IO_CSQ_COMPLETE_CANCELED_IRP come illustrato nell'esempio di codice seguente:
IO_CSQ_COMPLETE_CANCELED_IRP MyCsqCompleteCanceledIrp;
Implementare quindi la routine di callback come indicato di seguito:
_Use_decl_annotations_
VOID
MyCsqCompleteCanceledIrp(
_In_ PIO_CSQ Csq,
_In_ PIRP Irp
)
{
// Function body
}
Il tipo di funzione IO_CSQ_COMPLETE_CANCELED_IRP è definito nel file di intestazione Wdm.h. Per identificare in modo più accurato gli errori quando si eseguono gli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione _Use_decl_annotations_
alla definizione della funzione. L'annotazione _Use_decl_annotations_
garantisce che vengano utilizzate le annotazioni applicate al tipo di funzione IO_CSQ_COMPLETE_CANCELED_IRP nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo di funzione per i driver WDM. Per informazioni su _Use_decl_annotations_
, vedere Annotazione del comportamento della funzione.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |