Condividi tramite


IO_CSQ_PEEK_NEXT_IRP funzione di callback (wdm.h)

La routine CsqPeekNextIrp viene usata dal sistema per trovare l'IRP corrispondente successivo in una coda IRP annullata e implementata dal driver.

Sintassi

IO_CSQ_PEEK_NEXT_IRP IoCsqPeekNextIrp;

PIRP IoCsqPeekNextIrp(
  [in]           PIO_CSQ Csq,
  [in, optional] PIRP Irp,
  [in, optional] PVOID PeekContext
)
{...}

Parametri

[in] Csq

Puntatore alla struttura IO_CSQ per la coda IRP annullata.

[in, optional] Irp

Puntatore a un IRP nella coda IRP del driver o NULL per specificare l'inizio della coda.

[in, optional] PeekContext

Puntatore alle informazioni sul contesto definite dal driver. La routine CsqPeekNextIrp restituisce il primo IRP che segue Irp e corrisponde a PeekContext.

Valore restituito

CsqPeekNextIrp restituisce il primo IRP che segue Irp nella coda e corrisponde a PeekContext o NULL se non è presente alcun IRP corrispondente. Se Irp è NULL, CsqPeekNextIrp restituisce il primo IRP corrispondente nella coda o NULL se non è presente alcun IRP corrispondente.

Commenti

Il driver specifica la routine CsqPeekNextIrp per una coda IRP sicura di annullamento quando inizializza la struttura di IO_CSQ della coda. Il driver specifica la routine come parametro CsqPeekNextIrp 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 usa CsqPeekNextIrp per scorrere i provider di integrazione nella coda IRP del driver. Ad esempio, la routine IoCsqRemoveNextIrp usa questa routine per trovare l'IRP da rimuovere.

Esempio

Per definire una routine di callback CsqPeekNextIrp , è innanzitutto necessario 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 CsqPeekNextIrp denominata MyCsqPeekNextIrp, usare il tipo IO_CSQ_PEEK_NEXT_IRP come illustrato nell'esempio di codice seguente:

IO_CSQ_PEEK_NEXT_IRP MyCsqPeekNextIrp;

Implementare quindi la routine di callback come indicato di seguito:

_Use_decl_annotations_
PIRP 
 MyCsqPeekNextIrp(
    PIO_CSQ  Csq,
    PIRP  Irp,
    PVOID  PeekContext
    )
  {
      // Function body
  }

Il tipo di funzione IO_CSQ_PEEK_NEXT_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_PEEK_NEXT_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

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp

IoCsqRemoveNextIrp