CreateMutex, OpenMutex et le Processus de synchronisation

Je suis en train de faire ce qui suit:

Processus doit utiliser OpenMutex pour voir si le Processus B est en cours d'exécution.

Processus B doit utiliser CreateMutex de laisser le Processus de savoir qu'il est en cours d'exécution.
Assez simple en fait...

Voilà ce qui se passe:

  1. Exécuter le processus A -> Il voit que le processus B n'est pas en cours d'exécution. So far So good.
  2. Exécuter le processus B -> Il crée le mutex.
  3. Exécuter le processus d'Un nouveau -> Il voit que le processus B est maintenant en cours d'exécution. Encore bonne.
  4. Je ferme le processus B (qui devrait fermer le mutex).
  5. Exécuter le processus A -> Il voit encore que le processus B est en cours d'exécution ! (OpenMutex ne manque PAS).

Ce que je fais mal ??

Voici la partie de mon code:

//Start of process B
HANDLE hMutex = ::CreateMutex(NULL, TRUE, MY_MUTEX_NAME);
MessageBox(NULL, _T("PROCESS B !"), _T("TEST"), 0); 
CloseHandle(hMutex);
//End of process B


//Start of process A
HANDLE hMutex = ::OpenMutex(SYNCHRONIZE, FALSE, MY_MUTEX_NAME);
if(hMutex != NULL)
{
   MessageBox(NULL, _T("PROCESS B is alive !"), _T("TEST"), 0); 
}
CloseHandle(hMutex);
//End of process A

OriginalL'auteur Shaish | 2012-06-28