OpenSemaphore函数返回一个现有的命名信号量对象的句柄。
手柄OpenSemaphore(
DWORD 【dwDesiredAccess】, | //访问标志 |
BOOL 【bInheritHandle】, | //继承标志 |
LPCTSTR 【lpName】 | //指向信号量对象名称的指针 |
); |
参数
【dwDesiredAccess】
指定对信号量对象的请求访问。对于支持对象安全性的系统,如果指定对象的安全描述符不允许调用进程的请求访问,则该函数将失败。
此参数可以是以下值的任意组合:
访问 | 描述 |
SEMAPHORE_ALL_ACCESS | 指定信号量对象的所有可能的访问标志。 |
SEMAPHORE_MODIFY_STATE | 使用ReleaseSemaphore函数中的信号量句柄来修改信号量的计数。 |
SYNCHRONIZE | 仅Windows NT:启用在任何等待功能中使用信号量句柄等待信号量状态的信号。 |
【bInheritHandle】
指定返回的句柄是否可继承。如果为TRUE,则CreateProcess函数创建的进程可以继承该句柄;否则,句柄不能被继承。
【lpName】
指向以空字符结尾的字符串,命名要打开的信号量。名称比较区分大小写。
返回值
如果函数成功,则返回值是信号量对象的句柄。
如果函数失败,返回值为NULL。要获取扩展错误信息,请调用GetLastError.
备注
OpenSemaphore功能允许多个进程打开相同信号量对象的句柄。只有某些进程已经使用CreateSemaphore函数创建了信号量,该函数才会成功。调用进程可以使用任何需要信号量对象的句柄的函数(如等待功能)的返回句柄,但必须遵守【dwDesiredAccess】参数中指定的访问限制。
可以使用DuplicateHandle功能复制句柄。使用CloseHandle功能关闭句柄。当过程终止时,系统自动关闭句柄。信号量对象在其最后一个句柄被关闭时被销毁。
也可以看看
CloseHandle, CreateSemaphore, DuplicateHandle, ReleaseSemaphore