Función KeCancelTimer (wdm.h)
La rutina KeCancelTimer quita un objeto de temporizador antes del intervalo del temporizador, si se ha establecido alguno, expira.
Sintaxis
BOOLEAN KeCancelTimer(
[in, out] PKTIMER unnamedParam1
);
Parámetros
[in, out] unnamedParam1
Puntero a un objeto de temporizador inicializado, para el que el autor de la llamada proporciona el almacenamiento.
Valor devuelto
Si el objeto de temporizador especificado está en la cola del temporizador del sistema, KeCancelTimer devuelve TRUE.
Comentarios
Si el objeto de temporizador está actualmente en la cola del temporizador del sistema, se quita de la cola. Si un objeto DPC está asociado al temporizador, también se cancela. De lo contrario, no se realiza ninguna operación.
La rutina devuelve TRUE si el temporizador sigue en la cola del temporizador. Se quita un temporizador noperiódico de la cola del sistema en cuanto expira. Por lo tanto, para temporizadores noperiódicos, KeCancelTimer devuelve FALSE si el DPC del temporizador se ha puesto en cola. Los temporizadores periódicos siempre están en la cola del temporizador, por lo que KeCancelTimer siempre devuelve TRUE para temporizadores periódicos.
Tenga en cuenta que un DPC que ya se está ejecutando se ejecuta hasta la finalización. El controlador debe asegurarse de que el DPC se haya completado antes de liberar los recursos utilizados por el DPC. En el caso de un temporizador noperiódico, puede usar primitivos de sincronización, como objetos de evento, para sincronizar entre el controlador y el DPC. El controlador puede comprobar el código de retorno de KeCancelTimer para determinar si se está ejecutando el DPC. Si es así, el DPC puede indicar el evento antes de salir y el controlador puede esperar a que ese evento se restablezca al estado no señalado.
Dado que para los temporizadores periódicos KeCancelTimer siempre devuelve TRUE, los controladores deben usar una técnica diferente para esperar hasta que se haya completado el DPC. Use la rutina KeFlushQueuedDpcs para bloquear hasta que se ejecute el DPC.
Los controladores no necesitan sincronizarse para los datos almacenados en variables globales o extensiones de objeto de controlador. El sistema llama automáticamente a KeFlushQueuedDpcs antes de desasignar cualquiera de estas regiones.
Para obtener más información sobre los objetos de temporizador, vea Objetos de temporizador y DDC.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 2000. |
Plataforma de destino | Universal |
Encabezado | wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | HwStorPortProhibitedDIs(storport), IrqlKeDispatchLte(wdm) |