IO_CSQ_REMOVE_IRP funzione di callback (wdm.h)

La routine CsqRemoveIrp viene usata dal sistema per rimuovere l'IRP specificato da una coda IRP annullata implementata dal driver.

Sintassi

IO_CSQ_REMOVE_IRP IoCsqRemoveIrp;

void IoCsqRemoveIrp(
  [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 rimuovere dalla coda IRP.

Valore restituito

nessuno

Osservazioni

Il driver specifica la routine CsqRemoveIrp per una coda IRP annullata quando inizializza la struttura di IO_CSQ della coda. Il driver specifica la routine come parametro CsqRemoveIrp di IoCsqInitialize o IoCsqInitializeEx quando inizializza IO_CSQ. Per altre informazioni, vedere Cancel-Safe IRP Queues.For more information, see Cancel-Safe IRP Queues.

Le routine IoCsqRemoveIrp e IoCsqRemoveNextIrp chiamano la routine CsqRemoveIrp della coda IRP sicura cancel per rimuovere l'IRP specificato dalla coda. Il sistema usa anche CsqRemoveIrp per rimuovere un IRP annullato dalla coda.

Esempio

Per definire una routine di callback CsqRemoveIrp , è 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 CsqRemoveIrp denominata MyCsqRemoveIrp, usare il tipo IO_CSQ_REMOVE_IRP, come illustrato in questo esempio di codice:

IO_CSQ_REMOVE_IRP MyCsqRemoveIrp;

Implementare quindi la routine di callback come indicato di seguito:

_Use_decl_annotations_
VOID 
 MyCsqRemoveIrp(
    PIO_CSQ  Csq,
    PIRP  Irp
    )
  {
      // Function body
  }

Il tipo di funzione IO_CSQ_REMOVE_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_REMOVE_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)

Vedi anche

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

IO_CSQ

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp

IoCsqRemoveNextIrp