Función DeleteTimerQueueTimer (threadpoollegacyapiset.h)
Quita un temporizador de la cola del temporizador y, opcionalmente, espera a que se completen las funciones de devolución de llamada del temporizador actualmente en ejecución antes de eliminar el temporizador.
Sintaxis
BOOL DeleteTimerQueueTimer(
[in, optional] HANDLE TimerQueue,
[in] HANDLE Timer,
[in, optional] HANDLE CompletionEvent
);
Parámetros
[in, optional] TimerQueue
Identificador de la cola del temporizador. La función CreateTimerQueue devuelve este identificador.
Si el temporizador se creó con la cola de temporizador predeterminada, este parámetro debe ser NULL.
[in] Timer
Identificador del temporizador de la cola del temporizador. La función CreateTimerQueueTimer Devuelve este identificador.
[in, optional] CompletionEvent
Identificador del objeto de evento que se va a indicar cuando el sistema ha cancelado el temporizador y se han completado todas las funciones de devolución de llamada. Este parámetro puede ser NULL.
Si este parámetro es INVALID_HANDLE_VALUE, la función espera a que se completen las funciones de devolución de llamada del temporizador en ejecución antes de devolver.
Si este parámetro es NULL, la función marca el temporizador para su eliminación y devuelve inmediatamente. Si el temporizador ya ha expirado, la función de devolución de llamada del temporizador se ejecutará hasta su finalización. Sin embargo, no se envía ninguna notificación cuando se ha completado la función de devolución de llamada del temporizador. La mayoría de los autores de llamadas no deben usar esta opción y deben esperar a que se completen las funciones de devolución de llamada del temporizador en ejecución para que puedan realizar cualquier limpieza necesaria.
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es distinto de cero.
Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError. Si el código de error está ERROR_IO_PENDING, no es necesario volver a llamar a esta función. Para cualquier otro error, debe reintentar la llamada.
Comentarios
No se puede llamar a esta función mientras el subproceso usa suplantación. El comportamiento resultante no está definido.
Puede establecer CompletionEvent en INVALID_HANDLE_VALUE al llamar a esta función desde dentro de la devolución de llamada del temporizador de otro temporizador siempre que la función de devolución de llamada no se ejecute en el subproceso del temporizador. Sin embargo, puede producirse un interbloqueo si dos funciones de devolución de llamada intentan bloquear una llamada DeleteTimerQueueTimer en los temporizadores de cada uno de los demás. Además, no puede realizar una llamada de eliminación de bloqueo en un temporizador asociado a la devolución de llamada.
Tenga cuidado al realizar una llamada DeleteTimerQueueTimer de bloqueo en un subproceso persistente. Si el temporizador que se va a eliminar se creó con WT_EXECUTEINPERSISTENTTHREAD, puede producirse un interbloqueo.
Si hay funciones de devolución de llamada pendientes y CompletionEvent es NULL, se producirá un error en la función y se establecerá el código de error en ERROR_IO_PENDING. Esto indica que hay funciones de devolución de llamada pendientes. Esas devoluciones de llamada se ejecutarán o se ejecutarán en medio de la ejecución. El temporizador se limpia cuando la función de devolución de llamada termina de ejecutarse.
Para cancelar todos los temporizadores de una cola del temporizador, llame a la función DeleteTimerQueueEx .
Para compilar una aplicación que usa esta función, defina _WIN32_WINNT como 0x0500 o posterior. Para obtener más información, vea Usar los encabezados de Windows.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | threadpoollegacyapiset.h |
Library | Kernel32.lib |
Archivo DLL | Kernel32.dll |