Функция InitOnceBeginInitialize (synchapi.h)
Начинает однократную инициализацию.
Синтаксис
BOOL InitOnceBeginInitialize(
[in, out] LPINIT_ONCE lpInitOnce,
[in] DWORD dwFlags,
[out] PBOOL fPending,
[out, optional] LPVOID *lpContext
);
Параметры
[in, out] lpInitOnce
Указатель на структуру одноразовой инициализации.
[in] dwFlags
Этот параметр может иметь значение 0 или один или несколько следующих флагов.
[out] fPending
Если функция выполнена успешно, этот параметр указывает текущее состояние инициализации.
Если этот параметр имеет значение TRUE , а dwFlags содержит INIT_ONCE_CHECK_ONLY, инициализация ожидается, а данные контекста недопустимы.
Если этот параметр имеет значение FALSE, инициализация уже завершена и вызывающий объект может получить данные контекста из параметра lpContext .
Если этот параметр имеет значение TRUE и dwFlags не содержит INIT_ONCE_CHECK_ONLY, инициализация запущена и вызывающий объект может выполнять задачи инициализации.
[out, optional] lpContext
Необязательный параметр, который получает данные, хранящиеся со структурой однократной инициализации, после успешного выполнения. В нижнем порядке INIT_ONCE_CTX_RESERVED_BITS биты данных всегда равны нулю.
Возвращаемое значение
Если INIT_ONCE_CHECK_ONLY не указан и функция выполняется успешно, возвращается значение TRUE.
Если указано INIT_ONCE_CHECK_ONLY и инициализация завершена, возвращается значение TRUE.
В противном случае возвращается значение FALSE.
Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Эту функцию можно использовать для синхронной или асинхронной однократной инициализации. Для асинхронной однократной инициализации используйте флаг INIT_ONCE_ASYNC . Сведения о том, как указать функцию обратного вызова, выполняемую во время синхронной однократной инициализации, см. в разделе Функция InitOnceExecuteOnce .
Если эта функция выполнена успешно, поток может создать объект синхронизации и указать в параметре lpContext функции InitOnceComplete .
Чтобы скомпилировать приложение, использующее эту функцию, определите _WIN32_WINNT как 0x0600 или более поздней версии. Дополнительные сведения см. в разделе Использование заголовков Windows.
Объект однократной инициализации нельзя переместить или скопировать. Процесс не должен изменять объект инициализации и должен рассматривать его как логически непрозрачный. Для управления объектами одноразовой инициализации используйте только функции одноразовой инициализации.
Примеры
Пример использования этой функции см. в разделе Использование инициализации One-Time.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | synchapi.h (включает Windows.h в Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |