Diritti di accesso e sicurezza degli oggetti di sincronizzazione
Il modello di sicurezza di Windows consente di controllare l'accesso a oggetti timer eventi, mutex, semafori e timer in attesa. Le code timer, le variabili interlocked e gli oggetti sezione critica non sono a protezione diretta. Per altre informazioni, vedere Access-Control Model.
È possibile specificare un descrittore di sicurezza per un oggetto di sincronizzazione interprocesso quando si chiama la CreateEvent, CreateMutex, CreateSemaphoreo funzione CreateWaitableTimer. Se si specifica NULL, l'oggetto ottiene un descrittore di sicurezza predefinito. I Access-Control Elenchi (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, mutex, semaforo o timer in attesa, chiamare le funzioniGetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfoo SetSecurityInfo.
Gli handle restituiti da CreateEvent, CreateMutex, CreateSemaphoree CreateWaitableTimer hanno accesso completo al nuovo oggetto. Quando si chiamaOpenEvent, OpenMutex, OpenSemaphoree funzioni 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 utilizzati da tutti gli oggetti .
Valore | Significato |
---|---|
DELETE (0x00010000L) | Obbligatorio per eliminare l'oggetto. |
READ_CONTROL (0x00020000L) | Obbligatorio per leggere le informazioni nel descrittore di sicurezza per l'oggetto, senza includere le informazioni nell'elenco SACL. Per leggere o scrivere sacl, è necessario richiedere il diritto di accesso ACCESS_SYSTEM_SECURITY. Per altre informazioni, vedere SACL Access Right. |
SYNCHRONIZE (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) | Necessario per modificare il DACL 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 di 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 uso futuro. |
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 waitable. 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 waitable. 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 di SetWaitableTimer e CancelWaitableTi mer. |
TIMER_QUERY_STATE (0x0001) | Riservato per uso futuro. |
Per leggere o scrivere l'elenco SACL di un oggetto di sincronizzazione interprocesso, è necessario richiedere il diritto di accesso ACCESS_SYSTEM_SECURITY. Per altre informazioni, vedere elenchi di Access-Control (ACL) e SACL Access Right.