Funzione KsRemoveIrpFromCancelableQueue (ks.h)
La funzione KsRemoveIrpFromCancelableQueue visualizza il successivo IRP non incanceled dalla coda specificata che può essere annullata e ne rimuove lo stato di annullamento. La funzione cerca nell'elenco fino a quando non viene trovato un IRP con una routine di annullamento o fino al raggiungimento della fine dell'elenco. La funzione riduce al minimo l'uso del blocco di selezione annulla usando il blocco di selezione fornito per sincronizzare l'accesso nella maggior parte dei casi. La funzione può essere chiamata a livello di 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 selezione del driver per l'accesso alla coda.
[in] ListLocation
Indica se l'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 non incanceled successiva nell'elenco oppure restituisce NULL se non viene trovato nessuno o se non è stato trovato un IRP non ancora acquisito.
Osservazioni
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;
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
intestazione | ks.h (include Ks.h) |
libreria | Ks.lib |