Freigeben über


CreateWaitableTimerExW-Funktion (synchapi.h)

Erstellt oder öffnet ein wartebares Timerobjekt und gibt ein Handle an das Objekt zurück.

Syntax

HANDLE CreateWaitableTimerExW(
  [in, optional] LPSECURITY_ATTRIBUTES lpTimerAttributes,
  [in, optional] LPCWSTR               lpTimerName,
  [in]           DWORD                 dwFlags,
  [in]           DWORD                 dwDesiredAccess
);

Parameter

[in, optional] lpTimerAttributes

Ein Zeiger auf eine SECURITY_ATTRIBUTES Struktur. Wenn dieser Parameter NULL-ist, kann der Timerhandle nicht von untergeordneten Prozessen geerbt werden.

Wenn lpTimerAttributes-NULL-ist, ruft das Timerobjekt einen Standardsicherheitsdeskriptor ab, und der Handle kann nicht geerbt werden. Die ACLs im Standardsicherheitsdeskriptor für einen Timer stammen aus dem primären oder Identitätswechseltoken des Erstellers.

[in, optional] lpTimerName

Der Name des Timerobjekts. Der Name ist auf MAX_PATH Zeichen beschränkt. Bei dem Namensvergleich wird die Groß-/Kleinschreibung beachtet.

Wenn lpTimerName-NULL-ist, wird das Timerobjekt ohne Namen erstellt.

Wenn lpTimerName- mit dem Namen eines vorhandenen Ereignisses, Semaphor, Mutex, Auftrag oder Dateizuordnungsobjekts übereinstimmt, schlägt die Funktion fehl, und GetLastError gibt ERROR_INVALID_HANDLEzurück. Dies geschieht, da diese Objekte denselben Namespace gemeinsam nutzen.

Der Name kann ein Präfix "Global" oder "Local" aufweisen, um das Objekt explizit im globalen oder Sitzungsnamespace zu erstellen. Der Rest des Namens kann ein beliebiges Zeichen mit Ausnahme des umgekehrten Schrägstrichs (\) enthalten. Weitere Informationen finden Sie unter Kernel Object Namespaces. Schnelle Benutzerumschaltung wird mithilfe von Terminaldienstesitzungen implementiert. Kernelobjektnamen müssen den Richtlinien für Terminaldienste entsprechen, damit Anwendungen mehrere Benutzer unterstützen können.

Das Objekt kann in einem privaten Namespace erstellt werden. Weitere Informationen finden Sie unter Object Namespaces.

[in] dwFlags

Dieser Parameter kann 0 oder die folgenden Werte sein.

Wert Bedeutung
CREATE_WAITABLE_TIMER_MANUAL_RESET
0x00000001
Der Timer muss manuell zurückgesetzt werden. Andernfalls setzt das System den Timer automatisch zurück, nachdem ein einzelner Wartethread freigegeben wurde.
CREATE_WAITABLE_TIMER_HIGH_RESOLUTION
0x00000002
Erstellt einen Zeitgeber mit hoher Auflösung. Verwenden Sie diesen Wert für zeitkritische Situationen, wenn kurze Ablaufverzögerungen in der Reihenfolge einiger Millisekunden inakzeptabel sind. Dieser Wert wird in Windows 10, Version 1803 und höher, unterstützt.

[in] dwDesiredAccess

Die Zugriffsmaske für das Timerobjekt. Eine Liste der Zugriffsrechte finden Sie unter Sync Object Security and Access Rights.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Handle für das Timerobjekt. Wenn das benannte Timerobjekt vor dem Funktionsaufruf vorhanden ist, gibt die Funktion ein Handle an das vorhandene Objekt zurück und GetLastError gibt ERROR_ALREADY_EXISTSzurück.

Wenn die Funktion fehlschlägt, ist der Rückgabewert NULL-. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.

Bemerkungen

Jeder Thread des aufrufenden Prozesses kann das Timerobjekthandle in einem Aufruf einer der Wait-Funktionenangeben.

Mehrere Prozesse können Überhandles an dasselbe Timerobjekt verfügen, wodurch die Verwendung des Objekts für die Interprocess-Synchronisierung ermöglicht wird.

  • Ein prozess, der von der CreateProcess-Funktion erstellt wurde, kann ein Handle an ein Timerobjekt erben, wenn der lpTimerAttributes Parameter von CreateWaitableTimerEx die Vererbung ermöglicht.
  • Ein Prozess kann das Timerobjekthandle in einem Aufruf der DuplicateHandle--Funktion angeben. Der resultierende Handle kann von einem anderen Prozess verwendet werden.
  • Ein Prozess kann den Namen eines Timerobjekts in einem Aufruf des OpenWaitableTimer- oder CreateWaitableTimerEx--Funktion angeben.

Verwenden Sie die CloseHandle--Funktion, um den Handle zu schließen. Das System schließt das Handle automatisch, wenn der Prozess beendet wird. Das Timerobjekt wird zerstört, wenn der letzte Handle geschlossen wurde.

Um einem Fenster einen Timer zuzuordnen, verwenden Sie die SetTimer--Funktion.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Vista [Desktop-Apps | UWP-Apps]
mindestens unterstützte Server- Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform- Fenster
Header- synchapi.h (enthalten Windows.h)
Library Kernel32.lib
DLL- Kernel32.dll

Siehe auch

CloseHandle-

Synchronisierungsfunktionen

wartende Timerobjekte