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
0x00000001UL
이 함수 호출은 초기화를 시작하지 않습니다. 반환 값은 초기화가 이미 완료되었는지 여부를 나타냅니다. 함수가 TRUE를 반환하면 lpContext 매개 변수가 데이터를 받습니다.

[out] fPending

함수가 성공하면 이 매개 변수는 현재 초기화 상태 나타냅니다.

이 매개 변수가 TRUE 이고 dwFlagsINIT_ONCE_CHECK_ONLY 포함된 경우 초기화가 보류 중이며 컨텍스트 데이터가 잘못되었습니다.

이 매개 변수가 FALSE이면 초기화가 이미 완료되었으며 호출자는 lpContext 매개 변수에서 컨텍스트 데이터를 검색할 수 있습니다.

이 매개 변수가 TRUE 이고 dwFlagsINIT_ONCE_CHECK_ONLY 포함되어 있지 않으면 초기화가 시작되고 호출자가 초기화 작업을 수행할 수 있습니다.

[out, optional] lpContext

성공 시 일회성 초기화 구조로 저장된 데이터를 수신하는 선택적 매개 변수입니다. 데이터의 하위 순서 INIT_ONCE_CTX_RESERVED_BITS 비트는 항상 0입니다.

반환 값

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 Server 2008 Windows Server 2008 R2의 Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

InitOnceComplete

InitOnceExecuteOnce

일회성 초기화

동기화 함수