对象名称

命名对象为进程提供了一种简单的方法来共享对象句柄。 进程创建命名事件、互斥体、信号灯或计时器对象后,其他进程可以使用名称调用相应的函数, ( OpenEventOpenMutexOpenSemaphoreOpenWaitableTimer) 打开对象的句柄。 名称比较区分大小写。

事件、信号灯、互斥体、可等待计时器、文件映射和作业对象的名称共享相同的命名空间。 如果尝试使用由另一种类型的对象使用的名称创建对象,该函数将失败, 并且 GetLastError 将返回 ERROR_INVALID_HANDLE。 因此,创建命名对象时,请使用唯一名称,并确保检查重复名称错误的函数返回值。

如果尝试使用同类型对象正在使用的名称创建对象,则函数会成功,返回现有对象的句柄, GetLastError 将返回 ERROR_ALREADY_EXISTS。 例如,如果在对 CreateMutex 函数的调用中指定的名称与现有互斥对象的名称匹配,则函数将返回现有对象的句柄。 在这种情况下,对 CreateMutex 的调用等效于对 OpenMutex 函数的调用。 因此,让多个进程对同一互斥使用 CreateMutex 等效于让一个进程调用 CreateMutex ,而另一个进程调用 OpenMutex,只不过它不需要确保先启动创建过程。 但是,当将此技术用于互斥对象时,任何调用进程都不应立即请求互斥体的所有权。 如果多个进程确实请求即时所有权,则很难预测哪个进程实际获得初始所有权。

终端服务环境具有事件、信号灯、互斥体、可等待计时器、文件映射对象和作业对象的全局命名空间。 此外,对于这些对象,每个终端服务客户端会话都有其自己的单独命名空间。 终端服务客户端进程可以使用带有“Global\”或“Local\”前缀的对象名称在全局命名空间或会话命名空间中显式创建对象。 有关详细信息,请参阅 内核对象命名空间。 使用终端服务会话实现快速用户切换, (每个用户登录到不同的会话) 。 内核对象名称必须遵循终端服务概述的准则,以便应用程序可以支持多个用户。

可以在专用命名空间中创建同步对象。 有关详细信息,请参阅 对象命名空间

使用命名对象