草庐IT

CreateMutex

全部标签

c++ - Windows 2012 上的 CreateMutex,错误代码为 ERROR_ACCESS_DENIED

我正在尝试使用以下代码在Windows2012上创建互斥量:CreateMutex(securityAttributes,FALSE,TEXT("Global\\test"));它总是给出错误代码5(ERROR_ACCESS_DENIED)。我试图创建我发现的安全属性here但没有成功。请注意,此代码适用于Windows7。这里可能有什么问题?我想创建可由Windows服务(系统帐户)和用户帐户使用的全局互斥锁。 最佳答案 问题似乎出在不适当的安全属性上。现在可以了。以下是创建安全属性的代码。DWORDdwRes;PSIDpEver

c++ - CreateMutex 和 OpenMutex 返回 NULL

我正在编写一个具有共享内存的应用程序,并正在创建名称上带有适当"Local\"前缀的命名互斥体。但是,每次我调用CreateMutex函数来创建句柄时,我都会得到一个NULL返回值。我什至尝试在那之后调用OpenMutex并获得NULL返回。GetLastError()函数返回6,这意味着ERROR_INVALID_HANDLE。我相信这发生在第一次尝试在任何进程中创建这个命名互斥锁时。我在包含一些MFC组件之后包含了windows.h,并在应用程序的其他地方使用了CMutex;所以我不知道这是否是一个问题。我始终为前两个参数传递NULL和FALSE,并且我使用的是WindowsXP。

windows - CreateMutex() 和 OpenMutex() 返回不同的句柄

我认为这两个函数将返回相同的内核句柄。并且我写了一个测试程序来证明我的观点:在我的程序中,我创建了一个名为“_MYTEST”的内核句柄hHandle1=CreateMutex(NULL,false,_T("_MYTEST"));然后我启动一个线程并使用以下代码在该线程中打开上面的句柄:hHandle2=OpenMutex(MUTEX_ALL_ACCESS,false,_T("_MYTEST"));当我运行程序时,我发现两个返回值不相等!hHandle2的值比hHandle1的值大4。为什么?我的代码有什么问题吗?如果没有,为什么两个值不相等? 最佳答案

c++ - 模拟后CreateMutex失败

这是我要模拟用户然后创建互斥量的代码。未创建互斥锁。我收到ERROR_ACCESS_DENIED错误。voidImpersonate(){DWORDlogonType=LOGON32_LOGON_INTERACTIVE;DWORDlogonProvider=LOGON32_PROVIDER_DEFAULT;HANDLEuserToken;HANDLEhMutex;DWORDerr;LPSTRuser="zoom";//theuserIcreatedmyselfonmymachine.//IthasAdministratorprivileges,andmyaccount,//fromwh

c++ - 对 CreateMutex 的困惑

假设我调用CreateMutex。HANDLEh;h=CreateMutex(NULL,TRUE,NULL);waitforsingleobject(h,INFINITE);////RandomCodeReleaseMutex(h);假设我有多个线程在运行,第一个到达函数createmutex的线程实质上会阻塞//random代码部分的所有其他线程,直到调用releasemutex对吗? 最佳答案 它不会,因为您创建了一个未命名的互斥量(第三个参数是名称)。假设示例代码在多个线程中运行,每个线程都会创建一个新的未命名互斥量,并会立即

c - 哪个更适合windows? pthreads 还是 CreateMutex?

我正在将我的应用程序从Linux移植到Windows。我对跨平台移植应用程序的艺术相当陌生。据我所知,Windows本身并不支持POSIX线程实现。这是真的?我听说过windows的一些pthreads实现(包装器或其他东西),使用它们或使用CreateMutex和windows提供的其他API会更好吗????有人请。用两个世界的优点和缺点启发我。一些关于移植的杂项技巧会与答案相得益彰。提前致谢。 最佳答案 一切都是一样的东西(pthreads只是调用EnterCriticalSection等),所以如果你有一个pthreads包装

c - 哪个更适合windows? pthreads 还是 CreateMutex?

我正在将我的应用程序从Linux移植到Windows。我对跨平台移植应用程序的艺术相当陌生。据我所知,Windows本身并不支持POSIX线程实现。这是真的?我听说过windows的一些pthreads实现(包装器或其他东西),使用它们或使用CreateMutex和windows提供的其他API会更好吗????有人请。用两个世界的优点和缺点启发我。一些关于移植的杂项技巧会与答案相得益彰。提前致谢。 最佳答案 一切都是一样的东西(pthreads只是调用EnterCriticalSection等),所以如果你有一个pthreads包装

c++ - CreateMutex、OpenMutex 和进程同步

我正在尝试执行以下操作:进程A应该使用OpenMutex来查看进程B是否正在运行。进程B应该使用CreateMutex让进程A知道它正在运行。其实很简单...这是怎么回事:运行进程A->它看到进程B没有运行。到目前为止一切顺利。运行进程B->它创建互斥量。再次运行进程A->它看到进程B现在正在运行。还是不错的。我关闭进程B(它也应该关闭互斥量)。运行进程A->它仍然看到进程B正在运行!(OpenMutex不会失败)。我在这里做错了什么??这是我的部分代码://StartofprocessBHANDLEhMutex=::CreateMutex(NULL,TRUE,MY_MUTEX_NAM

c++ - boost::interprocess::named_mutex 与 CreateMutex

我想从CreatMutex切换到boost::interprocess::named_mutex以将我的应用程序限制为单个实例。当应用程序正常运行和结束时,这两种方法都有效。但是,当应用程序崩溃并使用boost::interprocess::named_mutex时,锁不会被释放。我可以通过使用两个name_mutex来解决这个问题,但我真的不明白这个问题。为什么boost::interprocess::named_mutex的锁在应用程序崩溃时没有释放,但它是通过CreatMutex释放的?有什么区别?boost::interprocess::named_mutexmutex(boo