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