Função OpenSemaphoreW (synchapi.h)
Abre um objeto de semáforo nomeado existente.
Sintaxe
HANDLE OpenSemaphoreW(
[in] DWORD dwDesiredAccess,
[in] BOOL bInheritHandle,
[in] LPCWSTR lpName
);
Parâmetros
[in] dwDesiredAccess
O acesso ao objeto semáforo. A função falhará se o descritor de segurança do objeto especificado não permitir o acesso solicitado para o processo de chamada. Para obter uma lista de direitos de acesso, confira Direitos de Acesso e Segurança do Objeto de Sincronização.
[in] bInheritHandle
Se esse valor for TRUE, os processos criados por esse processo herdarão o identificador. Caso contrário, os processos não herdam esse identificador.
[in] lpName
O nome do semáforo a ser aberto. As comparações de nomes diferenciam maiúsculas de minúsculas.
Essa função pode abrir objetos em um namespace privado. Para obter mais informações, consulte Namespaces de objeto.
Serviços de Terminal: O nome pode ter um prefixo "Global" ou "Local" para abrir explicitamente um objeto no namespace global ou de sessão. O restante do nome pode conter qualquer caractere, exceto o caractere de barra invertida (\). Para obter mais informações, consulte Namespaces de objeto kernel.
Nota A troca rápida de usuário é implementada usando sessões dos Serviços de Terminal. O primeiro usuário a fazer logon usa a sessão 0, o próximo usuário a fazer logon usa a sessão 1 e assim por diante. Os nomes de objetos kernel devem seguir as diretrizes descritas para os Serviços de Terminal para que os aplicativos possam dar suporte a vários usuários.
Valor retornado
Se a função for bem-sucedida, o valor retornado será um identificador para o objeto semáforo.
Se a função falhar, o valor retornado será NULL. Para obter informações de erro estendidas, chame GetLastError.
Comentários
A função OpenSemaphore permite que vários processos abram identificadores do mesmo objeto semáforo. A função só terá êxito se algum processo já tiver criado o semáforo usando a função CreateSemaphore . O processo de chamada pode usar o identificador retornado em qualquer função que exija um identificador para um objeto semáforo, como as funções de espera, sujeito às limitações do acesso especificado no parâmetro dwDesiredAccess .
O identificador pode ser duplicado usando a função DuplicateHandle . Use a função CloseHandle para fechar o identificador. O sistema fecha o identificador automaticamente quando o processo é encerrado. O objeto semáforo é destruído quando seu último identificador foi fechado.
Requisitos
Cliente mínimo com suporte | Windows XP [aplicativos da área de trabalho | aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | synchapi.h (inclua Windows.h) |
Biblioteca | Kernel32.lib |
DLL | Kernel32.dll |