Condividi tramite


Funzione KsRemoveIrpFromCancelableQueue (ks.h)

La funzione KsRemoveIrpFromCancelableQueue visualizza l'IRP noncanceled successivo dalla coda specificata che può essere annullata e ne rimuove lo stato di annullamento. La funzione esegue la ricerca nell'elenco fino a quando non viene trovato un IRP con una routine di annullamento o fino a quando non viene raggiunta la fine dell'elenco. La funzione riduce al minimo l'uso del blocco di selezione annulla usando il blocco spin fornito per sincronizzare l'accesso nella maggior parte dei casi. La funzione può essere chiamata a livello irQ DISPATCH_LEVEL o inferiore.

Sintassi

KSDDKAPI PIRP KsRemoveIrpFromCancelableQueue(
  [in, out] PLIST_ENTRY             QueueHead,
  [in]      PKSPIN_LOCK             SpinLock,
  [in]      KSLIST_ENTRY_LOCATION   ListLocation,
  [in]      KSIRP_REMOVAL_OPERATION RemovalOperation
);

Parametri

[in, out] QueueHead

Punta all'intestazione della coda da cui rimuovere l'IRP.

[in] SpinLock

Punta al blocco di rotazione del driver per l'accesso alla coda.

[in] ListLocation

Indica se questo IRP deve provenire dall'inizio o dalla fine della coda.

[in] RemovalOperation

Specifica se l'IRP viene rimosso dall'elenco o appena acquisito impostando la funzione cancel su NULL. Se viene acquistato solo, l'IRP deve essere rilasciato in un secondo momento con KsReleaseIrpOnCancelableQueue o completamente rimosso con KsRemoveSpecificIrpFromCancelableQueue.

Valore restituito

La funzione KsRemoveIrpFromCancelableQueue restituisce l'IRP noncanceled successivo nell'elenco oppure restituisce NULL se non viene trovato alcun oggetto o se non è stato trovato alcun oggetto IRP che non è già stato acquisito.

Commenti

Queste enumerazioni vengono usate nei parametri precedenti per controllare da dove viene rimosso l'IRP e come.

typedef enum {
    KsListEntryTail,
    KsListEntryHead
} KSLIST_ENTRY_LOCATION;

typedef enum {
    KsAcquireOnly,
    KsAcquireAndRemove
} KSIRP_REMOVAL_OPERATION;

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione ks.h (include Ks.h)
Libreria Ks.lib

Vedi anche

KsReleaseIrpOnCancelableQueue

KsRemoveSpecificIrpFromCancelableQueue