b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

createmutex failure_createsemaphore用法_createmutex

电脑杂谈  发布时间:2017-01-18 05:00:56  来源:网络整理

因为偶尔会遇到对那些不能支持双开的程序进行多开。。

根据前一阵转的一篇文件了解到,现在大多程序都用CreateMutex方式来限制多开,

于是有个想法:它Create了,我Release它,然后不就可以多开了吗?

然而。。。经过一些小程序的验证及网上的搜索,我失败了。

原因是:对于一个Mutex来说,只有Create它的进程才可以Release它。createmutex所以想用这种方式是不可能了。

不过并不是没有收获,经过这次“失败”的试验对Mutex的认识也增加了一些。基本的用法也了解了~

一些小总结:

CreateMutex和OpenMutex在该Mutex已存在时,结果一样,都会返回一个副本HANDLE。createmutex

当该Muxtex不存在时,OpenMutex会返回0出错,并可用GetLastError得到错误信息。

ReleaseMutex只能由创建该Mutex的进程执行,不然总是返回错误。

用CloseHandle来释放Mutex时,只是释放当前进程获得的副本句柄,而不会删除该Mutex内核对象。

另:虽然不能用其它进程对某个Mutex进行Release,但可以通过特殊的方式进行。如远程注入,不过远程注入后更方便使用API Hook的方法对CreateMutex进行Hook,那样原则上可以是个“万能”多开了。等有时间了去验证实现一下吧。

----------------------------

CloseHandle(handle);

是关闭一个句柄,并将这个句柄的引用计数减一,如果这个句柄的引用计数减到0,那么操作系统将释放这个核心对象的句柄

ReleaseMutex();让当前线程释放对该互斥体的拥有权,把他交给另一个等待中的线程

例如:

WaitForSingleObject(hMutex,INFINITE);等待hMutex标识的对象变为激发状态,如果变为激发状态,这个函数就会返回,继续往下执行

这个时候就可以访问共享资源了,而不会发生冲突

访问完共享资源以后应该释放对Mutex对象的拥有权,让其他要访问共享资源的线程拥有这个Mutex对象

基本的流程如下:

WaitForSingleObject();//想要取得对互斥对象的拥有权,进而来访问共享资源

//访问共享资源

ReleaseMutex()访问完共享资源以后,释放对这个核心对象的拥有权

CloseHandle(); 清除


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-27067-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 郑梦珂
        郑梦珂

        司机坐在左边开车艾玛英国拍摄鉴定完毕

      • 张金刚
        张金刚

        再来击沉

      热点图片
      拼命载入中...