1、CreateMutex
HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes, // 指向安全属性的指针
BOOL bInitialOwner, // 初始化互斥对象的所有者
LPCTSTR lpName // 指向互斥对象名的指针
);
功能:
来创建一个有名或无名的互斥量对象。首先找出当前系统是否已经存在指定进程的实例,如果没有则创建一个互斥体。
参数:
lpMutexAttributes :指定一个SECURITY_ATTRIBUTES结构,或传递零值(将参数声明为ByVal As Long,并传递零值,或者传递NULL),表示使用不允许继承的默认描述符。
bInitialOwner:BOOL类型,如创建进程希望立即拥有互斥体,则设为TRUE,否则,该线程将不获得所创建的互斥对象的所有权。一个互斥体同时只能由一个线程拥有。
lpName:指定互斥体对象的名字。用vbNullString创建一个未命名的互斥体对象。如已经存在拥有这个名字的一个事件,则打开现有的已命名互斥体,如果为NULL,则创建一个匿名的互斥对象。这个名字可能不与现有的事件、信号机、可等待计时器或文件映射相符。
返回值:
成功,就返回互斥体对象的句柄;失败,返回0,可用GetLastError获取错误值,如果返回的是一个有效句柄,但指定的名字已经存在,GetLastError也会设为ERROR_ALREADY_EXISTS,bInitialOwner的值将会被忽略。如果调用者限制了权限,GetLastError将会返回ERROR_ACCESS_DENIED,这个时候应该使用OpenMutex函数。
注:
线程中止前,一定要调用ReleaseMutex释放互斥体,如不慎未采取这个措施,就会将这个互斥体标记为废弃(下一个释放的等待函数会返回WAIT_ABANDONED),并自动释放所有权。共享这个互斥体的其他应用程序也许仍然能够用它,但会接收到一个废弃状态信息,指出上一个所有进程未能正常关闭。这种状况是否会造成影响取决于涉及到的具体应用程序。
在