我想創建一個帶有內核函數NtCreateMutant
的互斥體。如何使用NtCreateMutant(Zw)在C++中創建一個互斥體
我做了這樣的:
Handle hMutex;
NTSTATUS ntMutex = NtOpenMutant(&hMutex,MUTEX_ALL_ACCESS,false);
但是,這是返回的NTSTATUS
值:
C0000024 STATUS_OBJECT_TYPE_MISMATCH
與Windows API OpenMutex(..)
,它的工作就好了... ...
HANDLE hMutex;
hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, "Name");
希望有人能解釋我如何使用本機功能:)
所以我想這樣做與此相同,但與本地功能:
HANDLE hMutex;
hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, "NameOfMyMutex");
if(hMutex == NULL)
{
hMutex = CreateMutex(NULL, FALSE, "NameOfMyMutex");
}
else
{
return FALSE;
}
我希望有人能幫助我打電話NtOpenMutant
的正確方法。
使用本地函數是否有很好的理由?它不是便攜式的,也不推薦。 – nothrow 2010-06-08 12:45:54
是更容易隱藏調試器的功能..你將不得不使用本地API來創建你自己的子組來調用它 – Simon 2010-06-08 12:55:38
是否有任何理由將其隱藏到調試器?我的意思是,無法生成無法反向設計的二進制文件,即使可以讓某人對其進行反向工程更難,但這樣做可能是過度的,而不是防錯的。 – ereOn 2010-06-08 13:55:20