Compartir a través de


Función OpenMutexW (synchapi.h)

Abre un objeto de exclusión mutua con nombre existente.

Sintaxis

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

Parámetros

[in] dwDesiredAccess

Acceso al objeto de exclusión mutua. Solo se requiere el derecho de acceso SYNCHRONIZE para usar una exclusión mutua; para cambiar la seguridad de la exclusión mutua, especifique MUTEX_ALL_ACCESS. Se produce un error en la función si el descriptor de seguridad del objeto especificado no permite el acceso solicitado para el proceso de llamada. Para obtener una lista de los derechos de acceso, consulte Synchronization Object Security and Access Rights(Derechos de acceso y seguridad de objetos de sincronización).

[in] bInheritHandle

Si este valor es TRUE, los procesos creados por este proceso heredarán el identificador. De lo contrario, los procesos no heredan este identificador.

[in] lpName

Nombre de la exclusión mutua que se va a abrir. Las comparaciones de nombres distinguen mayúsculas de minúsculas.

Esta función puede abrir objetos en un espacio de nombres privado. Para obtener más información, vea Espacios de nombres de objeto.

Terminal Services: El nombre puede tener un prefijo "Global" o "Local" para abrir explícitamente un objeto en el espacio de nombres global o de sesión. El resto del nombre puede contener cualquier carácter excepto el carácter de barra diagonal inversa (\). Para obtener más información, vea Espacios de nombres de objeto kernel.

Nota El cambio rápido de usuario se implementa mediante sesiones de Terminal Services. El primer usuario para iniciar sesión usa la sesión 0, el siguiente usuario para iniciar sesión usa la sesión 1, etc. Los nombres de objeto de kernel deben seguir las directrices descritas para Terminal Services para que las aplicaciones puedan admitir varios usuarios.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es un identificador para el objeto de exclusión mutua.

Si la función no se realiza correctamente, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.

Si no existe una exclusión mutua con nombre, se produce un error en la función y GetLastError devuelve ERROR_FILE_NOT_FOUND.

Comentarios

La función OpenMutex permite que varios procesos abran identificadores del mismo objeto de exclusión mutua. La función solo se realiza correctamente si algún proceso ya ha creado la exclusión mutua mediante la función CreateMutex . El proceso de llamada puede usar el identificador devuelto en cualquier función que requiera un identificador para un objeto de exclusión mutua, como las funciones de espera, sujeto a las limitaciones del acceso especificado en el parámetro dwDesiredAccess .

El identificador se puede duplicar mediante la función DuplicateHandle . Use la función CloseHandle para cerrar el identificador. El sistema cierra el identificador automáticamente cuando finaliza el proceso. El objeto de exclusión mutua se destruye cuando se ha cerrado su último identificador.

Si la aplicación multiproceso debe crear, abrir y cerrar repetidamente un objeto de exclusión mutua con nombre, se puede producir una condición de carrera. En esta situación, es mejor usar CreateMutex en lugar de OpenMutex, ya que CreateMutex abre una exclusión mutua si existe y la crea si no lo hace.

Ejemplos

Para obtener un ejemplo que usa OpenMutex, vea Using Named Objects( Usar objetos con nombre).

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado synchapi.h (incluya Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

CloseHandle

CreateMutex

CreateProcess

DuplicateHandle

Objetos de exclusión mutua

Nombres de objeto

ReleaseMutex

Funciones de sincronización