Función KsRemoveIrpFromCancelableQueue (ks.h)
La función KsRemoveIrpFromCancelableQueue extrae el siguiente IRP nocelado de la cola especificada que se puede cancelar y quita su estado de cancelación. La función busca en la lista hasta que se encuentre un IRP que tenga una rutina de cancelación o hasta que se alcance el final de la lista. La función minimiza el uso del bloqueo de número de cancelación mediante el bloqueo de número proporcionado para sincronizar el acceso en la mayoría de los casos. Se puede llamar a la función en el nivel irQ DISPATCH_LEVEL o inferior.
Sintaxis
KSDDKAPI PIRP KsRemoveIrpFromCancelableQueue(
[in, out] PLIST_ENTRY QueueHead,
[in] PKSPIN_LOCK SpinLock,
[in] KSLIST_ENTRY_LOCATION ListLocation,
[in] KSIRP_REMOVAL_OPERATION RemovalOperation
);
Parámetros
[in, out] QueueHead
Apunta al encabezado de la cola de la que se va a quitar el IRP.
[in] SpinLock
Apunta al bloqueo de número del controlador para el acceso a la cola.
[in] ListLocation
Indica si este IRP debe proceder del principio o el final de la cola.
[in] RemovalOperation
Especifica si el IRP se quita de la lista o simplemente se adquiere estableciendo la función cancel en NULL. Si solo se adquiere, el IRP debe liberarse posteriormente con KsReleaseIrpOnCancelableQueue o quitarse completamente con KsRemoveSpecificIrpFromCancelableQueue.
Valor devuelto
La función KsRemoveIrpFromCancelableQueue devuelve el siguiente IRP nocelado en la lista, o devuelve NULL si no se encuentra ninguno o si no se encuentra un IRP que aún no se ha adquirido.
Comentarios
Estas enumeraciones se usan en los parámetros anteriores para controlar dónde se quita el IRP y cómo.
typedef enum {
KsListEntryTail,
KsListEntryHead
} KSLIST_ENTRY_LOCATION;
typedef enum {
KsAcquireOnly,
KsAcquireAndRemove
} KSIRP_REMOVAL_OPERATION;
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Encabezado | ks.h (incluye Ks.h) |
Library | Ks.lib |