使用具名物件
下列範例說明如何藉由建立和開啟具名 Mutex 來使用 物件名稱 。
第一個程式
第一個程式會使用 CreateMutex 函式來建立 mutex 物件。 請注意,即使有具有相同名稱的現有物件,此函式仍會成功。
#include <windows.h>
#include <stdio.h>
#include <conio.h>
// This process creates the mutex object.
int main(void)
{
HANDLE hMutex;
hMutex = CreateMutex(
NULL, // default security descriptor
FALSE, // mutex not owned
TEXT("NameOfMutexObject")); // object name
if (hMutex == NULL)
printf("CreateMutex error: %d\n", GetLastError() );
else
if ( GetLastError() == ERROR_ALREADY_EXISTS )
printf("CreateMutex opened an existing mutex\n");
else printf("CreateMutex created a new mutex.\n");
// Keep this process around until the second process is run
_getch();
CloseHandle(hMutex);
return 0;
}
第二個進程
第二個進程會使用 OpenMutex 函式來開啟現有 Mutex 的控制碼。 如果具有指定名稱的 Mutex 物件不存在,則此函式會失敗。 access 參數會要求 mutex 物件的完整存取權,這是在任何等候函式中使用控制碼的必要專案。
#include <windows.h>
#include <stdio.h>
// This process opens a handle to a mutex created by another process.
int main(void)
{
HANDLE hMutex;
hMutex = OpenMutex(
MUTEX_ALL_ACCESS, // request full access
FALSE, // handle not inheritable
TEXT("NameOfMutexObject")); // object name
if (hMutex == NULL)
printf("OpenMutex error: %d\n", GetLastError() );
else printf("OpenMutex successfully opened the mutex.\n");
CloseHandle(hMutex);
return 0;
}
相關主題