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

Consulte también

KsReleaseIrpOnCancelableQueue

KsRemoveSpecificIrpFromCancelableQueue