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.
[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 |