Freigeben über


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.

Wert Bedeutung
INIT_ONCE_ASYNC
0x00000002UL
Ermöglicht die parallele Ausführung mehrerer Initialisierungsversuche. Wenn dieses Flag verwendet wird, schlagen nachfolgende Aufrufe dieser Funktion fehl, es sei denn, dieses Flag ist ebenfalls angegeben.
INIT_ONCE_CHECK_ONLY
0x000000001UL
Dieser Funktionsaufruf beginnt nicht mit der Initialisierung. Der Rückgabewert gibt an, ob die Initialisierung bereits abgeschlossen wurde. Wenn die Funktion TRUE zurückgibt, empfängt der lpContext-Parameter die Daten.

[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

Siehe auch

InitOnceComplete

InitOnceExecuteOnce

Einmalige Initialisierung

Synchronisierungsfunktionen