Compartir a través de


Función OpenSemaphoreW (synchapi.h)

Abre un objeto de semáforo con nombre existente.

Sintaxis

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

Parámetros

[in] dwDesiredAccess

Acceso al objeto de semáforo. 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, vea Synchronization Object Security and Access Rights.

[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 del semáforo 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 usuarios se implementa mediante sesiones de Terminal Services. El primer usuario en 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 semáforo.

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

Comentarios

La función OpenSemaphore permite que varios procesos abran identificadores del mismo objeto de semáforo. La función solo se realiza correctamente si algún proceso ya ha creado el semáforo mediante la función CreateSemaphore . El proceso de llamada puede usar el identificador devuelto en cualquier función que requiera un identificador para un objeto de semáforo, 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 semáforo se destruye cuando se ha cerrado su último identificador.

Requisitos

   
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 (incluir Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

CloseHandle

CreateSemaphore

DuplicateHandle

Nombres de objeto

ReleaseSemaphore

Objetos de semáforo

Funciones de sincronización