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,也可以是以下一个或多个标志。
值 | 含义 |
---|---|
|
允许并行执行多次初始化尝试。 如果使用此标志,则对此函数的后续调用将失败,除非还指定了此标志。 |
|
此函数调用不会开始初始化。 返回值指示初始化是否已完成。 如果函数返回 TRUE,则 lpContext 参数将接收数据。 |
[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 函数。
如果此函数成功,线程可以创建同步对象并在 InitOnceComplete 函数的 lpContext 参数中指定 。
若要编译使用此函数的应用程序, 请将_WIN32_WINNT 定义为 0x0600 或更高版本。 有关详细信息,请参阅 使用 Windows 标头。
无法移动或复制一次性初始化对象。 进程不得修改初始化对象,而必须将其视为逻辑上不透明。 仅使用一次性初始化函数来管理一次性初始化对象。
示例
有关使用此函数的示例,请参阅 Using One-Time Initialization
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | synchapi.h (包括 Windows 7 上的 Windows.h、Windows Server 2008 Windows Server 2008 R2) |
Library | Kernel32.lib |
DLL | Kernel32.dll |