Compartilhar via


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

Confira também

CloseHandle

Createsemaphore

DuplicateHandle

Nomes de objeto

Releasesemaphore

Objetos semáforos

Funções de sincronização