InitOnceBeginInitialize-Funktion (synchapi.h)
Beginnt mit der einmaligen Initialisierung.
Syntax
BOOL InitOnceBeginInitialize(
[in, out] LPINIT_ONCE lpInitOnce,
[in] DWORD dwFlags,
[out] PBOOL fPending,
[out, optional] LPVOID *lpContext
);
Parameter
[in, out] lpInitOnce
Ein Zeiger auf die einmalige Initialisierungsstruktur.
[in] dwFlags
Dieser Parameter kann den Wert 0 oder ein oder mehrere der folgenden Flags haben.
[out] fPending
Wenn die Funktion erfolgreich ist, gibt dieser Parameter die aktuelle Initialisierung status an.
Wenn dieser Parameter TRUE ist und dwFlagsINIT_ONCE_CHECK_ONLY enthält, steht die Initialisierung aus, und die Kontextdaten sind ungültig.
Wenn dieser Parameter FALSE ist, ist die Initialisierung bereits abgeschlossen, und der Aufrufer kann die Kontextdaten aus dem lpContext-Parameter abrufen.
Wenn dieser Parameter TRUE ist und dwFlags keine INIT_ONCE_CHECK_ONLY enthält, wurde die Initialisierung gestartet, und der Aufrufer kann die Initialisierungsaufgaben ausführen.
[out, optional] lpContext
Ein optionaler Parameter, der die daten empfängt, die bei Erfolg mit der einmal initialisierungsstruktur gespeichert sind. Die INIT_ONCE_CTX_RESERVED_BITS Bits der Daten in niedriger Reihenfolge sind immer 0 (null).
Rückgabewert
Wenn INIT_ONCE_CHECK_ONLY nicht angegeben ist und die Funktion erfolgreich ist, ist der Rückgabewert TRUE.
Wenn INIT_ONCE_CHECK_ONLY angegeben ist und die Initialisierung abgeschlossen ist, ist der Rückgabewert TRUE.
Andernfalls ist der Rückgabewert FALSE.
Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Diese Funktion kann entweder für die synchrone oder die asynchrone einmalige Initialisierung verwendet werden. Verwenden Sie für die asynchrone einmalige Initialisierung das Flag INIT_ONCE_ASYNC . Informationen zum Angeben einer Rückruffunktion, die während der synchronen einmaligen Initialisierung ausgeführt werden soll, finden Sie unter in der Funktion InitOnceExecuteOnce .
Wenn diese Funktion erfolgreich ist, kann der Thread ein Synchronisierungsobjekt erstellen und im lpContext-Parameter der InitOnceComplete-Funktion angeben.
Um eine Anwendung zu kompilieren, die diese Funktion verwendet, definieren Sie _WIN32_WINNT als 0x0600 oder höher. Weitere Informationen finden Sie unter Verwenden der Windows-Header.
Ein einmaliges Initialisierungsobjekt kann nicht verschoben oder kopiert werden. Der Prozess darf das Initialisierungsobjekt nicht ändern und muss es stattdessen als logisch undurchsichtig behandeln. Verwenden Sie nur die einmaligen Initialisierungsfunktionen, um einmalige Initialisierungsobjekte zu verwalten.
Beispiele
Ein Beispiel, das diese Funktion verwendet, finden Sie unter Verwenden One-Time Initialisierung.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | synchapi.h (einschließen von Windows.h unter Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |