Função OpenMutexW (synchapi.h)

Abre um objeto mutex nomeado existente.

Sintaxe

HANDLE OpenMutexW(
  [in] DWORD   dwDesiredAccess,
  [in] BOOL    bInheritHandle,
  [in] LPCWSTR lpName
);

Parâmetros

[in] dwDesiredAccess

O acesso ao objeto mutex. Somente o direito de acesso SYNCHRONIZE é necessário para usar um mutex; para alterar a segurança do mutex, especifique MUTEX_ALL_ACCESS. 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, consulte Segurança do objeto de sincronização e direitos de acesso.

[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 mutex a ser aberto. 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 alternância rápida de usuário é implementada usando sessões de 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 objeto kernel devem seguir as diretrizes descritas para os Serviços de Terminal para que os aplicativos possam dar suporte a vários usuários.

Retornar valor

Se a função for bem-sucedida, o valor retornado será um identificador para o objeto mutex.

Se a função falhar, o valor retornado será NULL. Para obter informações de erro estendidas, chame GetLastError.

Se um mutex nomeado não existir, a função falhará e GetLastError retornará ERROR_FILE_NOT_FOUND.

Comentários

A função OpenMutex permite que vários processos abram identificadores do mesmo objeto mutex. A função só terá êxito se algum processo já tiver criado o mutex usando a função CreateMutex . O processo de chamada pode usar o identificador retornado em qualquer função que exija um identificador para um objeto mutex, 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 mutex é destruído quando seu último identificador é fechado.

Se o aplicativo multithread precisar criar, abrir e fechar repetidamente um objeto mutex nomeado, poderá ocorrer uma condição de corrida. Nessa situação, é melhor usar CreateMutex em vez de OpenMutex, pois CreateMutex abre um mutex se ele existir e o cria se não existir.

Exemplos

Para obter um exemplo que usa OpenMutex, consulte Usando objetos nomeados.

Requisitos

Requisito Valor
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

Createmutex

CreateProcess

DuplicateHandle

Objetos Mutex

Nomes de objeto

Releasemutex

Funções de sincronização