Je veux créer un mutex avec la fonction noyau NtCreateMutant
.comment utiliser NtCreateMutant (Zw) pour créer un mutex en C++
Je l'ai fait comme ceci:
Handle hMutex;
NTSTATUS ntMutex = NtOpenMutant(&hMutex,MUTEX_ALL_ACCESS,false);
Mais c'est la valeur qui est retournée NTSTATUS
:
C0000024 STATUS_OBJECT_TYPE_MISMATCH
Avec Windows API OpenMutex(..)
, il fonctionne très bien ...
HANDLE hMutex;
hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, "Name");
J'espère que quelqu'un peut m'expliquer comment utiliser la fonction native :)
Je veux faire la même chose que cela, mais avec des fonctions natives:
HANDLE hMutex;
hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, "NameOfMyMutex");
if(hMutex == NULL)
{
hMutex = CreateMutex(NULL, FALSE, "NameOfMyMutex");
}
else
{
return FALSE;
}
J'espère que quelqu'un peut me aider à appeler NtOpenMutant
la bonne façon.
Y a-t-il une bonne raison d'utiliser la fonction native? Ce n'est pas portable, ni recommandé. – nothrow
Oui plus facile de cacher les fonctions pour les débogueurs .. vous devrez utiliser les API natives pour créer votre propre sous pour l'appeler – Simon
Y a-t-il une bonne raison de cacher ceci à un débogueur? Je veux dire, vous ne pouvez pas produire un binaire qui ne peut pas être inversé de toute façon, et même si vous pouvez le rendre plus difficile pour quelqu'un pour le désosser, cela est probablement exagéré et pas à l'épreuve des bugs. – ereOn