Funzione KsMoveIrpsOnCancelableQueue (ks.h)
La funzione KsMoveIrpsOnCancelableQueue sposta gli IRPs specificati dal parametro SourceList al parametro DestinationList a seconda del valore restituito dalla funzione KStrIrpListCallback definita dal minidriver.
Sintassi
KSDDKAPI NTSTATUS KsMoveIrpsOnCancelableQueue(
[in, out] PLIST_ENTRY SourceList,
[in] PKSPIN_LOCK SourceLock,
[in, out] PLIST_ENTRY DestinationList,
[in, optional] PKSPIN_LOCK DestinationLock,
[in] KSLIST_ENTRY_LOCATION ListLocation,
[in] PFNKSIRPLISTCALLBACK ListCallback,
[in] PVOID Context
);
Parametri
[in, out] SourceList
Specifica l'intestazione della coda da cui rimuovere i runtime di integrazione.
[in] SourceLock
Puntatore al blocco spin del driver per l'accesso alla coda di origine.
[in, out] DestinationList
Specifica l'intestazione della coda in cui aggiungere i runtime di integrazione.
[in, optional] DestinationLock
Facoltativamente, contiene un puntatore al blocco di selezione del driver per l'accesso alla coda di destinazione. Se non viene specificato, si presuppone che il parametro SourceLock controlli entrambe le code. Se specificato, questo blocco viene sempre acquisito dopo il parametro SourceLock. Se l'elenco di destinazione ha un blocco di selezione separato, il blocco di selezione annulla a livello di sistema viene prima acquisito per spostare i runtime di integrazione e consentire l'aggiornamento del blocco di selezione KSQUEUE_SPINLOCK_IRP_STORAGE().
[in] ListLocation
Indica se gli IRP devono essere enumerati dalla testa o dalla parte finale della coda di origine. Tutti i runtime di integrazione spostati vengono posizionati sull'estremità opposta della coda di destinazione in modo che l'ordinamento venga mantenuto.
[in] ListCallback
Specifica la funzione di definita dal minidriver KStrIrpListCallback per indicare se deve essere spostato da SourceList a DestinationListo se l'enumerazione deve essere terminata.
[in] Context
Contesto passato a ListCallback.
Valore restituito
Restituisce STATUS_SUCCESS se l'elenco è stato completamente enumerato; in caso contrario, restituisce qualsiasi avviso o errore restituito dal minidriver definito KStrIrpListCallback funzione di callback che ha interrotto l'enumerazione.
Osservazioni
Un IRP viene spostato se la funzione KStrIrpListCallback indica che deve essere spostata, indipendentemente dal fatto che sia attualmente acquisita. Se KStrIrpListCallback restituisce STATUS_SUCCESS, l'IRP viene spostato. Se restituisce STATUS_NO_MATCH, l'IRP non viene spostato. Qualsiasi altro valore di avviso restituito o di errore terminerà l'enumerazione e verrà restituito dalla funzione . Il valore STATUS_NO_MATCH non deve essere restituito come errore KStrIrpListCallback. viene chiamato KStrIrpListCallback in DISPATCH_LEVEL. KStrIrpListCallback viene sempre chiamato almeno una volta alla fine con un valore NULL NULL IRP per completare l'enumerazione dell'elenco.
KsMoveIrpsOnCancelableQueue continua fino a quando la funzione di callback non indica che la ricerca deve essere terminata o viene raggiunta la fine dell'elenco. KsMoveIrpsOnCancelableQueue riduce al minimo l'uso del blocco di selezione annulla a livello di sistema usando i blocchi di selezione forniti per sincronizzare l'accesso quando possibile. KsMoveIrpsOnCancelableQueue non consente la modifica della routine di annullamento durante lo spostamento dei runtime di integrazione.
La funzione può essere chiamata in DISPATCH_LEVEL o inferiore.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
intestazione | ks.h (include Ks.h) |
libreria | Ks.lib |