Funzione InitOnceBeginInitialize (synchapi.h)

Avvia l'inizializzazione una tantum.

Sintassi

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

Parametri

[in, out] lpInitOnce

Puntatore alla struttura di inizializzazione monouso.

[in] dwFlags

Questo parametro può avere un valore pari a 0 o uno o più dei flag seguenti.

Valore Significato
INIT_ONCE_ASYNC
0x00000002UL
Consente l'esecuzione in parallelo di più tentativi di inizializzazione. Se questo flag viene usato, le chiamate successive a questa funzione avranno esito negativo a meno che non venga specificato anche questo flag.
INIT_ONCE_CHECK_ONLY
0x00000001UL
Questa chiamata di funzione non inizia l'inizializzazione. Il valore restituito indica se l'inizializzazione è già stata completata. Se la funzione restituisce TRUE, il parametro lpContext riceve i dati.

[out] fPending

Se la funzione ha esito positivo, questo parametro indica lo stato di inizializzazione corrente.

Se questo parametro è TRUE e dwFlags contiene INIT_ONCE_CHECK_ONLY, l'inizializzazione è in sospeso e i dati di contesto non sono validi.

Se questo parametro è FALSE, l'inizializzazione è già stata completata e il chiamante può recuperare i dati di contesto dal parametro lpContext .

Se questo parametro è TRUE e dwFlags non contiene INIT_ONCE_CHECK_ONLY, l'inizializzazione è stata avviata e il chiamante può eseguire le attività di inizializzazione.

[out, optional] lpContext

Parametro facoltativo che riceve i dati archiviati con la struttura di inizializzazione una tantum in caso di esito positivo. I bit INIT_ONCE_CTX_RESERVED_BITS di ordine basso dei dati sono sempre zero.

Valore restituito

Se non viene specificato INIT_ONCE_CHECK_ONLY e la funzione ha esito positivo, il valore restituito è TRUE.

Se viene specificato INIT_ONCE_CHECK_ONLY e l'inizializzazione è stata completata, il valore restituito è TRUE.

In caso contrario, il valore restituito è FALSE.

Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Questa funzione può essere usata per l'inizializzazione sincrona o asincrona una tantum. Per l'inizializzazione occasionale asincrona, usare il flag INIT_ONCE_ASYNC . Per specificare una funzione di callback da eseguire durante l'inizializzazione una tantum sincrona, vedere la funzione InitOnceExecuteOnce .

Se questa funzione ha esito positivo, il thread può creare un oggetto di sincronizzazione e specificare nel parametro lpContext della funzione InitOnceComplete .

Per compilare un'applicazione che usa questa funzione, definire _WIN32_WINNT come 0x0600 o versione successiva. Per altre informazioni, vedere Uso delle intestazioni di Windows.

Non è possibile spostare o copiare un oggetto di inizializzazione una tantum. Il processo non deve modificare l'oggetto di inizializzazione e deve invece considerarlo opaco in modo logico. Usare solo le funzioni di inizializzazione monouso per gestire gli oggetti di inizializzazione una tantum.

Esempio

Per un esempio che usa questa funzione, vedere Using One-Time Initialization

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione synchapi.h (include Windows.h in Windows 7, Windows Server 2008 Windows Server 2008 R2)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

InitOnceComplete

InitOnceExecuteOnce

Inizializzazione una tantum

Funzioni di sincronizzazione