Função InitOnceBeginInitialize (synchapi.h)

Inicia a inicialização única.

Sintaxe

BOOL InitOnceBeginInitialize(
  [in, out]       LPINIT_ONCE lpInitOnce,
  [in]            DWORD       dwFlags,
  [out]           PBOOL       fPending,
  [out, optional] LPVOID      *lpContext
);

Parâmetros

[in, out] lpInitOnce

Um ponteiro para a estrutura de inicialização única.

[in] dwFlags

Esse parâmetro pode ter um valor igual a 0 ou um ou mais dos sinalizadores a seguir.

Valor Significado
INIT_ONCE_ASYNC
0x00000002UL
Habilita várias tentativas de inicialização a serem executadas em paralelo. Se esse sinalizador for usado, as chamadas subsequentes para essa função falharão, a menos que esse sinalizador também seja especificado.
INIT_ONCE_CHECK_ONLY
0x000000001UL
Essa chamada de função não inicia a inicialização. O valor retornado indica se a inicialização já foi concluída. Se a função retornar TRUE, o parâmetro lpContext receberá os dados.

[out] fPending

Se a função for bem-sucedida, esse parâmetro indicará a inicialização atual status.

Se esse parâmetro for TRUE e dwFlags contiver INIT_ONCE_CHECK_ONLY, a inicialização estará pendente e os dados de contexto serão inválidos.

Se esse parâmetro for FALSE, a inicialização já foi concluída e o chamador poderá recuperar os dados de contexto do parâmetro lpContext .

Se esse parâmetro for TRUE e dwFlags não contiver INIT_ONCE_CHECK_ONLY, a inicialização será iniciada e o chamador poderá executar as tarefas de inicialização.

[out, optional] lpContext

Um parâmetro opcional que recebe os dados armazenados com a estrutura de inicialização única após o êxito. Os bits de INIT_ONCE_CTX_RESERVED_BITS de baixa ordem dos dados são sempre zero.

Retornar valor

Se INIT_ONCE_CHECK_ONLY não for especificado e a função for bem-sucedida, o valor retornado será TRUE.

Se INIT_ONCE_CHECK_ONLY for especificado e a inicialização for concluída, o valor retornado será TRUE.

Caso contrário, o valor retornado será FALSE.

Para obter informações de erro estendidas, chame GetLastError.

Comentários

Essa função pode ser usada para inicialização única síncrona ou assíncrona. Para inicialização única assíncrona, use o sinalizador INIT_ONCE_ASYNC . Para especificar uma função de retorno de chamada a ser executada durante a inicialização única síncrona, consulte a função InitOnceExecuteOnce .

Se essa função for bem-sucedida, o thread poderá criar um objeto de sincronização e especificar no parâmetro lpContext da função InitOnceComplete .

Para compilar um aplicativo que usa essa função, defina _WIN32_WINNT como 0x0600 ou posterior. Para obter mais informações, consulte Usando os cabeçalhos do Windows.

Um objeto de inicialização única não pode ser movido ou copiado. O processo não deve modificar o objeto de inicialização e, em vez disso, deve tratá-lo como logicamente opaco. Use apenas as funções de inicialização única para gerenciar objetos de inicialização únicos.

Exemplos

Para obter um exemplo que usa essa função, consulte Using One-Time Initialization

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho synchapi.h (inclua Windows.h no Windows 7, Windows Server 2008 Windows Server 2008 R2)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

InitOnceComplete

InitOnceExecuteOnce

Inicialização única

Funções de sincronização