Diritti di sicurezza e accesso degli oggetti di sincronizzazione
Il modello di sicurezza di Windows consente di controllare l'accesso agli oggetti timer di evento, mutex, semaforo e timer in attesa. Le code timer, le variabili interlock e gli oggetti di sezione critici non sono a protezione diretta. Per altre informazioni, vedere Modello di controllo di accesso.
È possibile specificare un descrittore di sicurezza per un oggetto di sincronizzazione interprocesso quando si chiama la funzione CreateEvent, CreateMutex, CreateSemaphore o CreateWaitableTimer . Se si specifica NULL, l'oggetto ottiene un descrittore di sicurezza predefinito. Gli elenchi di controllo di accesso (ACL) nel descrittore di sicurezza predefinito per un oggetto di sincronizzazione provengono dal token primario o di rappresentazione dell'autore.
Per ottenere o impostare il descrittore di sicurezza di un evento, un mutex, un semaforo o un oggetto timer in attesa, chiamare le funzioni GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo o SetSecurityInfo.
Gli handle restituiti da CreateEvent, CreateMutex, CreateSemaphore e CreateWaitableTimer hanno accesso completo al nuovo oggetto. Quando si chiamano le funzioni OpenEvent, OpenMutex, OpenSemaphore e OpenWaitableTimer , il sistema controlla i diritti di accesso richiesti rispetto al descrittore di sicurezza dell'oggetto.
I diritti di accesso validi per gli oggetti di sincronizzazione interprocesso includono i diritti di accesso standard e alcuni diritti di accesso specifici dell'oggetto. Nella tabella seguente sono elencati i diritti di accesso standard usati da tutti gli oggetti.
Valore | Significato |
---|---|
DELETE (0x00010000L) | Obbligatorio per eliminare l'oggetto. |
READ_CONTROL (0x00020000L) | Necessario per leggere le informazioni nel descrittore di sicurezza per l'oggetto, non incluse le informazioni contenute in SACL. Per leggere o scrivere SACL, è necessario richiedere il diritto di accesso ACCESS_SYSTEM_SECURITY . Per altre informazioni, vedere SACL Access Right. |
SYNC (0x00100000L) | Diritto di utilizzare l'oggetto per la sincronizzazione. Ciò consente a un thread di attendere fino a quando l'oggetto non si trova nello stato segnalato. |
WRITE_DAC (0x00040000L) | Obbligatorio modificare l'elenco dati nel descrittore di sicurezza per l'oggetto. |
WRITE_OWNER (0x00080000L) | Obbligatorio per modificare il proprietario nel descrittore di sicurezza per l'oggetto. |
Nella tabella seguente sono elencati i diritti di accesso specifici dell'oggetto per gli oggetti evento. Questi diritti sono supportati oltre ai diritti di accesso standard.
Valore | Significato |
---|---|
EVENT_ALL_ACCESS (0x1F0003 ) | Tutti i diritti di accesso possibili per un oggetto evento. Usare questo diritto solo se l'applicazione richiede l'accesso oltre a quello concesso dai diritti di accesso standard e EVENT_MODIFY_STATE. L'uso di questo diritto di accesso aumenta la possibilità che l'applicazione venga eseguita da un amministratore. |
EVENT_MODIFY_STATE (0x0002 ) | Modificare l'accesso allo stato, necessario per le funzioni SetEvent, ResetEvent e PulseEvent. |
Nella tabella seguente sono elencati i diritti di accesso specifici dell'oggetto per gli oggetti mutex. Questi diritti sono supportati oltre ai diritti di accesso standard.
Valore | Significato |
---|---|
MUTEX_ALL_ACCESS (0x1F0001 ) | Tutti i diritti di accesso possibili per un oggetto mutex. Usare questo diritto solo se l'applicazione richiede l'accesso oltre a quello concesso dai diritti di accesso standard. L'uso di questo diritto di accesso aumenta la possibilità che l'applicazione venga eseguita da un amministratore. |
MUTEX_MODIFY_STATE (0x0001 ) | Riservato per utilizzi futuri. |
Nella tabella seguente sono elencati i diritti di accesso specifici dell'oggetto per gli oggetti semafori. Questi diritti sono supportati oltre ai diritti di accesso standard.
Valore | Significato |
---|---|
SEMAPHORE_ALL_ACCESS (0x1F0003 ) | Tutti i diritti di accesso possibili per un oggetto semaforo. Usare questo diritto solo se l'applicazione richiede l'accesso oltre a quello concesso dai diritti di accesso standard e SEMAPHORE_MODIFY_STATE. L'uso di questo diritto di accesso aumenta la possibilità che l'applicazione venga eseguita da un amministratore. |
SEMAPHORE_MODIFY_STATE (0x0002 ) | Modificare l'accesso allo stato, necessario per la funzione ReleaseSemaphore . |
Nella tabella seguente sono elencati i diritti di accesso specifici dell'oggetto per gli oggetti timer in attesa. Questi diritti sono supportati oltre ai diritti di accesso standard.
Valore | Significato |
---|---|
TIMER_ALL_ACCESS (0x1F0003 ) | Tutti i diritti di accesso possibili per un oggetto timer in attesa. Usare questo diritto solo se l'applicazione richiede l'accesso oltre a quello concesso dai diritti di accesso standard e TIMER_MODIFY_STATE. L'uso di questo diritto di accesso aumenta la possibilità che l'applicazione venga eseguita da un amministratore. |
TIMER_MODIFY_STATE (0x0002 ) | Modificare l'accesso allo stato, necessario per le funzioni SetWaitableTimer e CancelWaitableTimer . |
TIMER_QUERY_STATE (0x0001 ) | Riservato per utilizzi futuri. |
Per leggere o scrivere SACL di un oggetto di sincronizzazione interprocesso, è necessario richiedere il diritto di accesso ACCESS_SYSTEM_SECURITY . Per altre informazioni, vedere Elenchi di controllo di accesso (ACL) e SACL Access Right.