Erzeugt oder öffnet ein benanntes oder unbenanntes Mutex-Objekt.
#include <WinAPIProc.au3>
_WinAPI_CreateMutex ( $sMutex [, $bInitial = True [, $tSecurity = 0]] )
| $sMutex | Der Name des Mutex-Objektes. Groß-/ Kleinschreibung wird bei dem Namensvergleich beachtet. |
| $bInitial | [optional] Gibt an, ob der aufrufende Prozess die ursprünglichen Besitzrechte des Mutex-Objektes erhält. Gültige Werte sind: True - Der aufrufende Thread erhält die ursprünglichen Besitzrechte des Mutex-Objektes (Standard). False - Der aufrufende Thread erhält nicht die ursprünglichen Besitzrechte des Mutex-Objektes. |
| $tSecurity | [optional] Die $tagSECURITY_ATTRIBUTES Struktur welche den Sicherheitsdeskriptor für das Mutex-Objekt angibt. Wenn dieser Parameter 0 ist (Standard), so erhält das Mutex-Objekt einen Standardsicherheitsdeskriptor. |
| Erfolg: | Das Handle zu dem neu erstellten Mutex-Objekt. |
| Fehler: | 0. Es ist _WinAPI_GetLastError() aufzurufen um erweiterte Fehlerinformationen zu erhalten. |
Wenn das Mutex-Objekt ein benanntes Mutex-Objekt ist und das Objekt vor dem Aufruf dieser Funktion bereits existiert, so ist das Handle im Rückgabewert das des bereits existierenden Mutex-Objektes und _WinAPI_GetLastError() gibt ERROR_ACCESS_EXISTS (183) zurück. Des Weiteren wird $bInitial ignoriert und der aufrufende Thread erhält keine Besitzrechte.
Sollte der Aufrufer aber limitierte Zugriffsrechte haben, so wird die Funktion fehlschlagen mit ERROR_ACCESS_DENIED (5) und der Aufrufer sollte die _WinAPI_OpenMutex() Funktion verwenden.
Jeder Prozess kann das Mutex-Objekthandle in einem Aufruf der Wartefunktionen angeben.
Die Einzel-Objekt-Wartefunktionen beenden sich, wenn der Status des angegebenen Objektes signalisiert wurde.
Die Mehrere-Objekt-Wartefunktionen können angewiesen werden entweder entweder einer der Objekte oder alle signalisiert wurden.
Wenn eine Wartefunktionen sich beendet, dann wird der Wartethread freigegeben um mit der Ausführung fortzufahren.
Zwei oder mehrere Prozess können die _WinAPI_CreateMutex() Funktion aufrufen um ein gleich benanntes Mutex zu erzeugen.
Der erste Prozess erzeugt das Mutex-Objekt und nachfolgende Prozesse, mit genügenden Zugriffsrechten, öffnen das Handle zum bereits existierenden Mutex.
Das erlaubt mehreren Prozessen das Handle zum gemeinsamen Mutex zu erhalten während dem Nutzer die Verantwortung erleichtert und zugesichert wird, dass der erzeugende Prozess zuerst gestartet wird.
Mit dieser Technik sollte der $bInitial Parameter auf False gesetzt werden; anderenfalls kann es schwierig werden zu entscheiden welcher Prozess die ursprünglichen Besitzrechte hat.
Mit der _WinAPI_CloseHandle() Funktion kann man das Handle schließen.
Das System schließt das Handle automatisch wenn der Prozess terminiert.
Das Mutex-Objekt wird zerstört wenn der letzte Handle geschlossen wird.
_WinAPI_CloseHandle, _WinAPI_OpenMutex
Suche nach CreateMutex in der MSDN Bibliothek.