Condividi tramite


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

Vedere anche

KStrIrpListCallback