Функция 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, дескриптор таймера не может наследоваться дочерними процессами.
Если lpTimerAttributesNULL, то объект таймера получает дескриптор безопасности по умолчанию и дескриптор не может наследоваться. Списки управления доступом в дескрипторе безопасности по умолчанию для таймера получены из первичного или олицетворения маркера создателя.
[in, optional] lpTimerName
Имя объекта таймера. Имя ограничено MAX_PATH символами. Сравнение имен учитывает регистр.
Если lpTimerNameNULL, то объект таймера создается без имени.
Если lpTimerName соответствует имени существующего события, семафора, мьютекса, задания или объекта сопоставления файлов, функция завершается ошибкой и GetLastError возвращает ERROR_INVALID_HANDLE. Это происходит, так как эти объекты используют одно и то же пространство имен.
Имя может иметь префикс "Глобальный" или "Локальный", чтобы явно создать объект в глобальном или пространстве имен сеанса. Оставшаяся часть имени может содержать любой символ, кроме символа обратной косой черты (\). Дополнительные сведения см. в разделе пространства имен объектов ядра. Быстрое переключение пользователей реализуется с помощью сеансов служб терминалов. Имена объектов ядра должны соответствовать рекомендациям, описанным для служб терминалов, чтобы приложения могли поддерживать несколько пользователей.
Объект можно создать в частном пространстве имен. Дополнительные сведения см. в пространствах имен объектов.
[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] |
целевая платформа | Виндоус |
заголовка | synchapi.h (включая Windows.h) |
библиотеки |
Kernel32.lib |
DLL | Kernel32.dll |