CreateWatchDogTimer (Windows CE 5.0)
This function creates a watchdog timer.
HANDLECreateWatchDogTimer(LPCWSTR pszWatchDogName,DWORD dwPeriod,DWORD dwWait,DWORD dwDfltAction,DWORD dwParam,DWORD dwFlags);
Parameters
pszWatchDogName
[in] Name of the watchdog timer to be created. Each object type, such as memory maps, semaphores, events, message queues, mutexes, and watchdog timers, has its own separate namespace. Empty strings, "", are handled as named objects. On Windows desktop-based platforms, synchronization objects all share the same namespace.dwPeriod
[in] Watchdog period, in milliseconds.dwWait
[in] Time to wait, in milliseconds, when the watchdog timer is not refreshed within the watchdog period before the default action is taken.This is useful when handling false alarms or saving important information before system reset.
dwDfltAction
[in] Default action to be taken when the watchdog timer is not refreshed within dwPeriod.The following values can be used to specify the default action to take.
Value Description WDOG_NO_DFLT_ACTION Take no default action WDOG_KILL_PROCESS Terminate the process to be watched WDOG_RESET_DEVICE Reset the device by calling IOCTL_HAL_REBOOT dwParam
[in] Parameter to be passed to IOCTL_HAL_REBOOT.The OAL can use this information to determine if an immediate system reboot is needed or to perform a delayed system reboot.
dwFlags
[in] Reserved; must be set this value to 0.
Return Values
A handle to the watchdog timer indicates success.
NULL indicates failure.
The returned handle can be used in WaitForSingleObject or WaitForMultipleObjects, and is signaled when the watchdog is not refreshed within the specified watchdog period, dwPeriod. Use the CloseHandle function to release the memory used by the watchdog timer.
If a watchdog timer of the given name exists, the handle to the existing watchdog timer is returned and GetLastError returns ERROR_ALREADY_EXISTS.
Remarks
Watchdog is used to make sure critical processes are running as expected. Typically, every critical process creates a watchdog timer and refreshes it by calling the RefreshWatchDogTimer function from time to time to determine that the watchdog is working correctly.
You can create a monitor process to wait on the watchdog handles to perform actions when the critical processes fail to signal the watchdog timers.
If the critical process fails to refresh its watchdog timer within the watchdog period (specified by dwPeriod), the watchdog is signaled.
The monitor process, if it exists, has up to dwWait milliseconds to determine if it is a false alarm or save critical information before the default action is taken.
In case of a false alarm, the monitor process should refresh the watchdog to prevent the default action from being taken.
When the default action is taken, the watchdog is considered stopped. That is, the same watchdog timer is not signaled again until it is started again.
CreateWatchDogTimer is a trusted API because it gives you the ability to reset the device. Only trusted applications can access this function. For more information, see Trusted APIs.
Requirements
OS Versions: Windows CE 5.0 and later.
Header: Pkfuncs.h.
Link Library: Coredll.lib.
See Also
IOCTL_HAL_REBOOT | WaitForSingleObject | WaitForMultipleObjects | CloseHandle | OpenWatchDogTimer | StartWatchDogTimer | StopWatchDogTimer | RefreshWatchDogTimer | GetLastError
Send Feedback on this topic to the authors