-
-
[求助]关于CreateMutex,CloseHandle的调用问题?
-
2021-4-26 10:55
3415
-
[求助]关于CreateMutex,CloseHandle的调用问题?
#include "stdafx.h"
#include <Windows.h>
// 判断是否重复运行
BOOL IsAlreadyRun()
{
HANDLE hMutex = NULL;
hMutex = ::CreateMutex(NULL, FALSE, "TEST");
if (hMutex)
{
if (ERROR_ALREADY_EXISTS == ::GetLastError())
{
CloseHandle(hMutex);//这行加上并没有任何变化
return TRUE;
}
}
return FALSE;
}
int _tmain(int argc, _TCHAR* argv[])
{
// 判断是否重复运行
if (IsAlreadyRun())
{
printf("Already Run!!!!\n");
}
else
{
printf("NOT Already Run!\n");
}
1 2 | system( "pause" );
return 0 ;
|
}
ps:CloseHandle会减少内核对象引用计数。
第二次运行的时候,发现实例已经存在,我选择了CloseHandle(hMutex),第三次运行,第四次运行依然弹出已经有实例存在了,那这个CloseHandle到底有没有起到作用?不是把内核对象的计数已经减少到0了吗,为啥没销毁内核对象?这里求解释?
[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界