对象名称

【勇芳软件工作室】汉化HomePreviousNext

命名对象为进程共享对象句柄提供了一种简单的方法。创建过程指定的名称限制为MAX_PATH个字符,并且可以包括除反斜杠路径分隔符(\\)之外的任何字符。一旦进程创建了一个命名事件,互斥体,信号量或计时器对象,其他进程可以使用名称来调用相应的函数(OpenEventOpenMutexOpenSemaphoreOpenWaitableTimer)来打开句柄对象。名称比较区分大小写。

事件,互斥,信号量,定时器和文件映射对象的名称共享相同的名称空间。如果在创建对象时指定另一类对象正在使用的名称,则此函数成功,但GetLastError返回ERROR_ALREADY_EXISTS。因此,创建命名对象时,请使用唯一的名称,并确保检查重复名称错误的函数返回值。

例如,如果调用CreateMutex函数中指定的名称与现有互斥对象的名称相匹配,则该函数将返回现有对象的句柄。在这种情况下,对CreateMutex的调用等同于对OpenMutex功能的调用。因此,对于相同的互斥体,使用CreateMutex的多个进程相当于有一个进程调用CreateMutex,而其他进程调用OpenMutex,除了它不需要确保创建进程首先启动。然而,当将这种技术用于互斥体对象时,任何调用进程都不应要求立即拥有互斥体。如果多个流程确实需要立即拥有,那么很难预测哪个流程实际获得初始所有权。