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 das Timerhandle nicht von untergeordneten Prozessen geerbt werden.

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

[in, optional] lpTimerName

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

Wenn lpTimerNameNULL ist, wird das Timerobjekt ohne Namen erstellt.

Wenn lpTimerName mit dem Namen eines vorhandenen Ereignis-, Semaphor-, Mutex-, Auftrags- oder Dateizuordnungsobjekts übereinstimmt, schlägt die Funktion fehl, und GetLastError gibt ERROR_INVALID_HANDLE zurück. Dies liegt daran, dass diese Objekte denselben Namespace verwenden.

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 Kernelobjektnamespaces. Der schnelle Benutzerwechsel 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 Objektnamespaces.

[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 wartenden Thread freigegeben wurde.
CREATE_WAITABLE_TIMER_HIGH_RESOLUTION
0x00000002
Erstellt einen Timer mit hoher Auflösung. Verwenden Sie diesen Wert für zeitkritische Situationen, in denen kurze Ablaufverzögerungen in der Größenordnung von einigen 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 Sicherheit und Zugriffsrechte für Synchronisierungsobjekte.

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_EXISTS zurück.

Wenn bei der Funktion ein Fehler auftritt, ist der Rückgabewert NULL. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Jeder Thread des aufrufenden Prozesses kann das Timerobjekthandle in einem Aufruf einer der Wartefunktionen angeben.

Mehrere Prozesse können Über Handles für dasselbe Timerobjekt verfügen, sodass das -Objekt für die Prozessübergreifende Synchronisierung verwendet werden kann.

  • Ein von der CreateProcess-Funktion erstellter Prozess 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. Das resultierende Handle kann von einem anderen Prozess verwendet werden.
  • Ein Prozess kann den Namen eines Timerobjekts in einem Aufruf der OpenWaitableTimer- oder CreateWaitableTimerEx-Funktion angeben.

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

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

Anforderungen

   
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 (windows.h einschließen)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

CloseHandle

Synchronisierungsfunktionen

Wartebare Timerobjekte