Are you sure that we should be acquiring the mutex in the open case?
MSDN says:
bInitialOwner [in] Specifies the initial owner of the mutex object. If this value is TRUE and the caller created the mutex, the calling thread obtains ownership of the mutex object. Otherwise, the calling thread does not obtain ownership of the mutex....
Thanks,
Joseph
hbirr@svn.reactos.com wrote:
If a mutex already exist, open it instead of create. Modified: trunk/reactos/lib/kernel32/synch/mutex.c Modified: trunk/reactos/lib/kernel32/synch/mutex.c --- trunk/reactos/lib/kernel32/synch/mutex.c 2005-07-30 19:00:33
UTC (rev 16900)
+++ trunk/reactos/lib/kernel32/synch/mutex.c 2005-07-30 19:03:34
UTC (rev 16901)
@@ -92,10 +92,24 @@ MUTEX_ALL_ACCESS, &ObjectAttributes, (BOOLEAN)bInitialOwner);
- if (Status == STATUS_OBJECT_NAME_COLLISION)
{Status = NtOpenMutant(&MutantHandle,MUTEX_ALL_ACCESS,&ObjectAttributes);if (NT_SUCCESS(Status)){if(bInitialOwner){WaitForSingleObject(MutantHandle, INFINITE);}SetLastError(ERROR_ALREADY_EXISTS);} if (!NT_SUCCESS(Status)) {}
- SetLastErrorByStatus(Status);
- return NULL;
SetLastErrorByStatus(Status);return NULL; }return MutantHandle;