Menggunakan Objek Bernama

Contoh berikut mengilustrasikan penggunaan nama objek dengan membuat dan membuka mutex bernama.

Proses Pertama

Proses pertama menggunakan fungsi CreateMutex untuk membuat objek mutex. Perhatikan bahwa fungsi ini berhasil meskipun ada objek yang ada dengan nama yang sama.

#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;
}

Proses Kedua

Proses kedua menggunakan fungsi OpenMutex untuk membuka handel ke mutex yang ada. Fungsi ini gagal jika objek mutex dengan nama yang ditentukan tidak ada. Parameter akses meminta akses penuh ke objek mutex, yang diperlukan agar handel digunakan dalam salah satu fungsi tunggu.

#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;
}

Nama Objek

Menggunakan Objek Mutex