函数参考


_WinAPI_CreateMutex

创建或打开一个命名的或者非命名的互斥体对象

#Include <WinAPIEx.au3>
_WinAPI_CreateMutex ( $sMutex [, $fInitial [, $tSecurity]] )

参数

$sMutex 互斥体对象名称. 名称对大小写敏感.
$fInitial [可选参数] 指定调用的子进程是否可以得到此互斥体的权限.有效值:
TRUE - 调用的线程(进程)将获得此互斥体对象的权限. (默认/Default)
FALSE - 调用的线程(进程)将不会获得此互斥体东西的权限.
$tSecurity [可选参数] 指定新互斥体对象使用的安全描述信息数据结构($tagSECURITY_ATTRIBUTES).
如果本参数为0时将使用默认的安全描述符.

返回值

成功: 返回新创建的互斥体对象的句柄
失败: 返回 0并设置@error标志为非0

注意/说明

如果互斥体是一个命名的互斥体,并且在函数调用前已经存在, 返回值为目前存在的互斥体对象的句柄,
_WinAPI_GetLastError() 返回 ERROR_ALREADY_EXISTS(183),$fInitial将被忽略, 并且调用线程不会获得所有权.
同样, 如果已存在的互斥体对象带有限制访问权限, 本次调用将会失败,原因是权限拒绝(ERROR_ACCESS_DENIED).
请使用_WinAPI_OpenMutex()函数对其进行操作.

任何进程都可在一次调用中给一个等待函数指定互斥体对象的句柄. 单一对象等待函数在单一对象状态为终止时返回. 多对象等待函数可在任何一个或所有指定对象终止时返回. 当等待函数返回时, 释放等待线程并继续执行.

两个或多个进程可使用_WinAPI_CreateMutex()创建同名的互斥体. 实际是首个进程创建互斥体并由具有足够访问权限的后续进程简单打开存在互斥体的句柄. 这样可使得多个进程获取相同互斥体的句柄, 同时减轻为确保首次启动创建的进程时用户的责任. 使用该技术时, 应设置$fInitial参数为FALSE; 否则, 将很难确定具有初始所有权的进程.

关闭句柄使用_WinAPI_CloseHandle()函数. 进程终止时系统自动关闭句柄.
互斥体对象将在最后一个句柄关闭时销毁.

相关

详情参考

在MSDN中搜索