Compartir a través de


Función KsRemoveIrpFromCancelableQueue (ks.h)

La función KsRemoveIrpFromCancelableQueue aparece el siguiente IRP no canceled 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 giro 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 desde la que se va a quitar el IRP.

[in] SpinLock

Apunta al bloqueo de giro 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 publicarse más adelante con KsReleaseIrpOnCancelableQueue o quitarse completamente con KsRemoveSpecificIrpFromCancelableQueue.

Valor devuelto

La función KsRemoveIrpFromCancelableQueue devuelve el siguiente IRP no generado 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.

Observaciones

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 Valor
de la plataforma de destino de Universal
encabezado de ks.h (incluya Ks.h)
biblioteca de Ks.lib

Consulte también

KsReleaseIrpOnCancelableQueue

KsRemoveSpecificIrpFromCancelableQueue