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,或下列一或多個旗標。

意義
INIT_ONCE_ASYNC
0x00000002UL
啟用多個初始化嘗試以平行方式執行。 如果使用這個旗標,除非同時指定此旗標,否則對此函式的後續呼叫將會失敗。
INIT_ONCE_CHECK_ONLY
0x000000001UL
此函數調用不會開始初始化。 傳回值會指出初始化是否已完成。 如果函式傳回 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 標頭

一次性初始化對象無法移動或複製。 進程不得修改初始化物件,而且必須改為將它視為邏輯不透明。 只使用一次性初始化函式來管理一次性初始化物件。

範例

如需使用此函式的範例,請參閱 使用 One-Time 初始化

規格需求

需求
最低支援的用戶端 Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 synchapi.h (包括 Windows 7 上的 Windows.h、Windows Server 2008 Windows Server 2008 R2)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

InitOnceComplete

InitOnceExecuteOnce

一次性初始化

同步處理函式