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 |