Compartir a través de


Nombres de objeto

Los objetos con nombre proporcionan una manera sencilla para que los procesos compartan identificadores de objeto. Después de crear un proceso con nombre de evento, exclusión mutua, semáforo o objeto de temporizador, otros procesos pueden usar el nombre para llamar a la función adecuada ( OpenEvent, OpenMutex, OpenSemaphore, o OpenWaitableTimer) para abrir un identificador al objeto. La comparación de nombres distingue mayúsculas de minúsculas.

Los nombres de los objetos event, semaphore, mutex, waitable timer, file-mapping y job comparten el mismo espacio de nombres. Si intenta crear un objeto con un nombre que está en uso por un objeto de otro tipo, se produce un error en la función y GetLastError devuelve ERROR_INVALID_HANDLE. Por lo tanto, al crear objetos con nombre, use nombres únicos y asegúrese de comprobar los valores devueltos por la función para detectar errores de nombre duplicado.

Si intenta crear un objeto con un nombre que está en uso por un objeto de mismo tipo, la función se realiza correctamente, devuelve un identificador al objeto existente y GetLastError devuelve ERROR_ALREADY_EXISTS. Por ejemplo, si el nombre especificado en una llamada al función CreateMutex coincide con el nombre de un objeto de exclusión mutua existente, la función devuelve un identificador al objeto existente. En este caso, la llamada a CreateMutex equivale a una llamada a la funciónopenMutex de. Tener varios procesos usando CreateMutex para la misma exclusión mutua es equivalente a tener un proceso que llama a createMutex mientras que los demás procesos llaman a OpenMutex, salvo que elimina la necesidad de asegurarse de que el proceso de creación se inicia primero. Sin embargo, al usar esta técnica para objetos de exclusión mutua, ninguno de los procesos de llamada debe solicitar la propiedad inmediata de la exclusión mutua. Si varios procesos solicitan la propiedad inmediata, puede ser difícil predecir qué proceso obtiene realmente la propiedad inicial.

Un entorno de Terminal Services tiene un espacio de nombres global para eventos, semáforos, exclusión mutua, temporizadores esperables, objetos de asignación de archivos y objetos de trabajo. Además, cada sesión de cliente de Terminal Services tiene su propio espacio de nombres independiente para estos objetos. Los procesos de cliente de Terminal Services pueden usar nombres de objeto con un prefijo "Global\" o "Local\" para crear explícitamente un objeto en el espacio de nombres global o de sesión. Para obtener más información, vea espacios de nombres de objeto kernel. El cambio rápido de usuario se implementa mediante sesiones de Terminal Services (cada usuario inicia sesión en una sesión diferente). Los nombres de objeto de kernel deben seguir las directrices descritas para Terminal Services para que las aplicaciones puedan admitir varios usuarios.

Los objetos de sincronización se pueden crear en un espacio de nombres privado. Para obtener más información, vea Espacios de nombres de objeto.

usar objetos con nombre