Función KsAddIrpToCancelableQueue (ks.h)
La función KsAddIrpToCancelableQueue agrega un IRP a una cola de IRP cancelable, lo que permite cancelar el IRP. Si el IRP se había establecido previamente en un estado cancelado, la función KsAddIrpToCancelableQueue completa la cancelación de ese IRP.
Sintaxis
KSDDKAPI VOID KsAddIrpToCancelableQueue(
[in, out] PLIST_ENTRY QueueHead,
[in] PKSPIN_LOCK SpinLock,
[in] PIRP Irp,
[in] KSLIST_ENTRY_LOCATION ListLocation,
[in, optional] PDRIVER_CANCEL DriverCancel
);
Parámetros
[in, out] QueueHead
Especifica el almacenamiento asignado por el controlador para el encabezado de la cola en el que se va a agregar el IRP.
[in] SpinLock
Apunta al bloqueo de número del controlador para el acceso de cola a la cola especificada en QueueHead. Si es necesario, se conserva una copia de este puntero en el KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) del IRP para que lo use la rutina de cancelación.
[in] Irp
Especifica el IRP que se va a agregar a la cola especificada en QueueHead.
[in] ListLocation
Indica si este IRP debe colocarse al principio o al final de la cola. Este valor debe ser KsListEntryTail o KsListEntryHead.
[in, optional] DriverCancel
Parámetro opcional que especifica una rutina de cancelación proporcionada por el controlador que se va a usar. Si es NULL, se usa KsCancelRoutine estándar.
Valor devuelto
None
Observaciones
Si el IRP se ha puesto en un estado de cancelación cuando se llama a esta rutina, KsAddIrpToCancelableQueue llamará inmediatamente a la rutina de cancelación especificada en DriverCancel, o si no se especificó ninguna rutina en DriverCancel , se llama a la rutina de cancelación de streaming predeterminada.
La función KsAddIrpToCancelableQueue permite que los IRP se cancelen incluso antes de colocarse en una lista de cancelaciones, o cuando se mueven de una lista a otra. Se puede llamar a esta función en el nivel irQ DISPATCH_LEVEL o inferior, a menos que la cola asignada por el controlador y todas las entradas de la cola sean residentes del sistema o se asignen desde el almacenamiento residente.
La función no usa el bloqueo de número de cancelación para agregar elementos a la lista. El acceso a la lista se sincroniza mediante el bloqueo de número proporcionado y se basa en operaciones atómicas en Irp-CancelRoutine>.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Encabezado | ks.h (incluya Ks.h) |
Library | Ks.lib |