Segurança e direitos de acesso do objeto de sincronização

O modelo de segurança do Windows permite controlar o acesso a objetos de evento, mutex, semáforo e temporizador de espera. Filas de temporizador, variáveis interconectadas e objetos de seção críticos não são protegíveis. Para obter mais informações, consulte Modelo de controle de acesso.

Você pode especificar um descritor de segurança para um objeto de sincronização entre processos ao chamar a função CreateEvent, CreateMutex, CreateSemaphore ou CreateWaitableTimer . Se você especificar NULL, o objeto obterá um descritor de segurança padrão. As ACLs (Listas de Controle de Acesso) no descritor de segurança padrão para um objeto de sincronização vêm do token primário ou de representação do criador.

Para obter ou definir o descritor de segurança de um evento, mutex, semáforo ou objeto de temporizador aguardável, chame as funções GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo ou SetSecurityInfo .

Os identificadores retornados por CreateEvent, CreateMutex, CreateSemaphore e CreateWaitableTimer têm acesso completo ao novo objeto. Quando você chama as funções OpenEvent, OpenMutex, OpenSemaphore e OpenWaitableTimer , o sistema verifica os direitos de acesso solicitados no descritor de segurança do objeto.

Os direitos de acesso válidos para os objetos de sincronização entre processos incluem os direitos de acesso padrão e alguns direitos de acesso específicos ao objeto. A tabela a seguir lista os direitos de acesso padrão usados por todos os objetos.

Valor Significado
DELETE (0x00010000L) Necessário para excluir o objeto.
READ_CONTROL (0x00020000L) Necessário para ler informações no descritor de segurança do objeto, não incluindo as informações na SACL. Para ler ou gravar a SACL, você deve solicitar o direito de acesso ACCESS_SYSTEM_SECURITY . Para obter mais informações, confira Direito de Acesso à SACL.
SYNCHRONIZE (0x00100000L) O direito de usar o objeto para sincronização. Isso permite que um thread aguarde até que o objeto esteja no estado sinalizado.
WRITE_DAC (0x00040000L) Necessário para modificar a DACL no descritor de segurança do objeto.
WRITE_OWNER (0x00080000L) Necessário para alterar o proprietário no descritor de segurança para o objeto .

 

A tabela a seguir lista os direitos de acesso específicos do objeto para objetos de evento. Esses direitos têm suporte além dos direitos de acesso padrão.

Valor Significado
EVENT_ALL_ACCESS (0x1F0003) Todos os direitos de acesso possíveis para um objeto de evento. Use esse direito somente se o aplicativo exigir acesso além daquele concedido pelos direitos de acesso padrão e EVENT_MODIFY_STATE. Usar esse direito de acesso aumenta a possibilidade de que seu aplicativo deve ser executado por um Administrador.
EVENT_MODIFY_STATE (0x0002) Modifique o acesso de estado, que é necessário para as funções SetEvent, ResetEvent e PulseEvent .

 

A tabela a seguir lista os direitos de acesso específicos do objeto para objetos mutex. Esses direitos têm suporte além dos direitos de acesso padrão.

Valor Significado
MUTEX_ALL_ACCESS (0x1F0001) Todos os direitos de acesso possíveis para um objeto mutex. Use esse direito somente se o aplicativo exigir acesso além daquele concedido pelos direitos de acesso padrão. Usar esse direito de acesso aumenta a possibilidade de que seu aplicativo deve ser executado por um Administrador.
MUTEX_MODIFY_STATE (0x0001) Reservado para uso futuro.

 

A tabela a seguir lista os direitos de acesso específicos do objeto para objetos de semáforo. Esses direitos têm suporte além dos direitos de acesso padrão.

Valor Significado
SEMAPHORE_ALL_ACCESS (0x1F0003) Todos os direitos de acesso possíveis para um objeto de semáforo. Use esse direito somente se o aplicativo exigir acesso além daquele concedido pelos direitos de acesso padrão e SEMAPHORE_MODIFY_STATE. Usar esse direito de acesso aumenta a possibilidade de que seu aplicativo deve ser executado por um Administrador.
SEMAPHORE_MODIFY_STATE (0x0002) Modifique o acesso de estado, que é necessário para a função ReleaseSemaphore .

 

A tabela a seguir lista os direitos de acesso específicos do objeto para objetos de temporizador de espera. Esses direitos têm suporte além dos direitos de acesso padrão.

Valor Significado
TIMER_ALL_ACCESS (0x1F0003) Todos os direitos de acesso possíveis para um objeto de temporizador de espera. Use esse direito somente se o aplicativo exigir acesso além daquele concedido pelos direitos de acesso padrão e TIMER_MODIFY_STATE. Usar esse direito de acesso aumenta a possibilidade de que seu aplicativo deve ser executado por um Administrador.
TIMER_MODIFY_STATE (0x0002) Modifique o acesso de estado, que é necessário para as funções SetWaitableTimer e CancelWaitableTimer .
TIMER_QUERY_STATE (0x0001) Reservado para uso futuro.

 

Para ler ou gravar a SACL de um objeto de sincronização entre processos, você deve solicitar o direito de acesso ACCESS_SYSTEM_SECURITY . Para obter mais informações, consulte ACLs (Listas de Controle de Acesso) e Direito de Acesso à SACL.