Функция CreateWaitableTimerExW (synchapi.h)
Создает или открывает объект таймера с возможностью ожидания и возвращает дескриптор объекту .
Синтаксис
HANDLE CreateWaitableTimerExW(
[in, optional] LPSECURITY_ATTRIBUTES lpTimerAttributes,
[in, optional] LPCWSTR lpTimerName,
[in] DWORD dwFlags,
[in] DWORD dwDesiredAccess
);
Параметры
[in, optional] lpTimerAttributes
Указатель на структуру SECURITY_ATTRIBUTES . Если этот параметр имеет значение NULL, дескриптор таймера не может наследоваться дочерними процессами.
Если lpTimerAttributes имеет значение NULL, объект таймера получает дескриптор безопасности по умолчанию и дескриптор не может быть унаследован. Списки ACL в дескрипторе безопасности по умолчанию для таймера поступают из основного маркера или токена олицетворения создателя.
[in, optional] lpTimerName
Имя объекта таймера. Имя ограничено MAX_PATH символами. Сравнение имен учитывает регистр.
Если lpTimerName имеет значение NULL, объект таймера создается без имени.
Если lpTimerName соответствует имени существующего объекта события, семафора, мьютекса, задания или сопоставления файлов, функция завершается ошибкой и GetLastError возвращает ERROR_INVALID_HANDLE. Это происходит потому, что эти объекты используют одно и то же пространство имен.
Имя может иметь префикс "Global" или "Local" для явного создания объекта в глобальном пространстве имен или пространстве имен сеанса. Оставшаяся часть имени может содержать любой символ, кроме символа обратной косой черты (\). Дополнительные сведения см. в разделе Пространства имен объектов ядра. Быстрое переключение пользователей реализуется с помощью сеансов служб терминалов. Имена объектов ядра должны соответствовать рекомендациям, описанным для служб терминалов, чтобы приложения могли поддерживать нескольких пользователей.
Объект можно создать в частном пространстве имен. Дополнительные сведения см. в разделе Пространства имен объектов.
[in] dwFlags
Этот параметр может иметь значение 0 или следующие значения.
[in] dwDesiredAccess
Маска доступа для объекта таймера. Список прав доступа см. в разделе Безопасность объектов синхронизации и права доступа.
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение является дескриптором для объекта таймера. Если именованный объект таймера существует до вызова функции, функция возвращает дескриптор существующему объекту, а GetLastError возвращает ERROR_ALREADY_EXISTS.
Если функция завершается сбоем, возвращается значение NULL. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Любой поток вызывающего процесса может указать дескриптор объекта таймера при вызове одной из функций ожидания.
Несколько процессов могут иметь дескриптор одного и того же объекта таймера, что позволяет использовать объект для синхронизации между процессами.
- Процесс, созданный функцией CreateProcess, может наследовать дескриптор объекта таймера, если параметр lpTimerAttributesэлемента CreateWaitableTimerEx включает наследование.
- Процесс может указать дескриптор объекта таймера в вызове функции DuplicateHandle . Результирующий дескриптор может использоваться другим процессом.
- Процесс может указать имя объекта таймера при вызове функции OpenWaitableTimer или CreateWaitableTimerEx .
Используйте функцию CloseHandle , чтобы закрыть дескриптор. Система автоматически закрывает дескриптор при завершении процесса. Объект таймера уничтожается при закрытии последнего дескриптора.
Чтобы связать таймер с окном, используйте функцию SetTimer .
Требования
Минимальная версия клиента | Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | synchapi.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |