Share via


Funzione CreateWaitableTimerExW (synchapi.h)

Crea o apre un oggetto timer waitable e restituisce un handle all'oggetto .

Sintassi

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

Parametri

[in, optional] lpTimerAttributes

Puntatore a una struttura SECURITY_ATTRIBUTES . Se questo parametro è NULL, l'handle timer non può essere ereditato dai processi figlio.

Se lpTimerAttributes è NULL, l'oggetto timer ottiene un descrittore di sicurezza predefinito e l'handle non può essere ereditato. Gli ACL nel descrittore di sicurezza predefinito per un timer provengono dal token primario o di rappresentazione del creatore.

[in, optional] lpTimerName

Nome dell'oggetto timer. Il nome è limitato a MAX_PATH caratteri. Il confronto tra nomi fa distinzione tra maiuscole e minuscole.

Se lpTimerName è NULL, l'oggetto timer viene creato senza un nome.

Se lpTimerName corrisponde al nome di un evento esistente, semaforo, mutex, processo o oggetto di mapping di file, la funzione ha esito negativo e GetLastError restituisce ERROR_INVALID_HANDLE. Ciò si verifica perché questi oggetti condividono lo stesso spazio dei nomi.

Il nome può avere un prefisso "Global" o "Local" per creare in modo esplicito l'oggetto nello spazio dei nomi globale o sessione. Il resto del nome può contenere qualsiasi carattere ad eccezione del carattere barra rovesciata (\). Per altre informazioni, vedere Spazi dei nomi degli oggetti kernel. Il passaggio rapido degli utenti viene implementato usando le sessioni di Servizi terminal. I nomi degli oggetti kernel devono seguire le linee guida descritte per Servizi terminal in modo che le applicazioni possano supportare più utenti.

L'oggetto può essere creato in uno spazio dei nomi privato. Per altre informazioni, vedere Spazi dei nomi degli oggetti.

[in] dwFlags

Questo parametro può essere 0 o i valori seguenti.

valore Significato
CREATE_WAITABLE_TIMER_MANUAL_RESET
0x00000001
Il timer deve essere reimpostato manualmente. In caso contrario, il sistema reimposta automaticamente il timer dopo il rilascio di un singolo thread in attesa.
CREATE_WAITABLE_TIMER_HIGH_RESOLUTION
0x00000002
Crea un timer ad alta risoluzione. Usare questo valore per situazioni critiche in caso di ritardi di scadenza brevi nell'ordine di pochi millisecondi non è accettabile. Questo valore è supportato in Windows 10, versione 1803 e successive.

[in] dwDesiredAccess

Maschera di accesso per l'oggetto timer. Per un elenco dei diritti di accesso, vedere Synchronization Object Security and Access Rights.For a list of access rights, see Synchronization Object Security and Access Rights.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un handle per l'oggetto timer. Se l'oggetto timer denominato esiste prima della chiamata di funzione, la funzione restituisce un handle all'oggetto esistente e GetLastError restituisce ERROR_ALREADY_EXISTS.

Se la funzione ha esito negativo, il valore restituito è NULL. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Qualsiasi thread del processo chiamante può specificare l'handle dell'oggetto timer in una chiamata a una delle funzioni di attesa.

Più processi possono avere handle per lo stesso oggetto timer, consentendo l'uso dell'oggetto per la sincronizzazione tra processi.

  • Un processo creato dalla funzione CreateProcess può ereditare un handle a un oggetto timer se il parametro lpTimerAttributes di CreateWaitableTimerEx abilita l'ereditarietà.
  • Un processo può specificare l'handle dell'oggetto timer in una chiamata alla funzione DuplicateHandle . L'handle risultante può essere usato da un altro processo.
  • Un processo può specificare il nome di un oggetto timer in una chiamata alla funzione OpenWaitableTimer o CreateWaitableTimerEx .

Usare la funzione CloseHandle per chiudere l'handle. Il sistema chiude automaticamente l'handle al termine del processo. L'oggetto timer viene eliminato definitivamente quando l'ultimo handle è stato chiuso.

Per associare un timer a una finestra, usare la funzione SetTimer .

Requisiti

   
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione synchapi.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Closehandle

Funzioni di sincronizzazione

Oggetti timer waitable