);
函数中主要参数的意义如下。
? lpSemaphoreAttributes:指定SECURITY_ATTRIBUTES 结构的指针。决定返回的句柄
是否可以被子进程继承。如果lpSemaphoreAttributes 为空,则句柄不能被继承。
? lInitialCount:指定Semaphore 对象的初始计数值。该值必须大于或等于零并小于或等
于lMaximumCount。
? lMaximumCount:指定Semaphore 对象的最大数目。必须大于零。
? lpNcom:Semaphore 对象的名称。字符串的最大长度为MAX_PATH 个字符。字符串
区分大小写。
(2)OpenSemaphore
函数OpenSemaphore 用来打开一个存在的有名称的Semaphore 对象。如果调用成功,返
回打开的对象的句柄。反之则返回空值。它的函数原型如下:
HANDLE OpenSemaphore(
DWORD dwDesiredAccess,
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·242·
BOOL bInheritHandle,
LPCTSTR lpNcom
);
函数中主要参数的意义如下。
? dwDesiredAccess:指定想要对Semaphore 对象所作的访问。可以是下面值的任意组合:
· SEMAPHORE_ALL_ACCESS:可以对对象做任何访问。
· SEMAPHORE_MODIFY_STATE:允许在ReleaseSemaphore 中修改对象的数目。
· SYNCHRONIZE:允许任何等待函数使用Semaphore 对象。
? bInheritHandle:指定返回的句柄是否可以被继承。
? lpNcom:要打开对象的句柄。
(3)ReleaseSemaphore
函数ReleaseSemaphore 给指定的Semaphore 对象增加指定的数量。如果调用成功,返回
非零值。反之,返回零。它的函数原型如下:
BOOL ReleaseSemaphore(
HANDLE hSemaphore,
LONG lReleaseCount,
LPLONG lpPreviousCount
);
函数中主要参数的意义如下:
? hSemaphore:Semaphore 对象的句柄。
? lReleaseCount:指定要增加的值。必须大于零。如果指定的值会引起Semaphore 的数
目超过最大值,则函数返回FALSE。
? lpPreviousCount:存储Semaphore 对象增加之前的数目。如果不需要,则该参数可以
为空。
(4)CSemaphore
Semaphore 在MFC 中的相应的类是CSemaphore。CSemaphore 通过构造函数创建一个信