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