Schön das Ihr euch einigen konntet.
Während ich mit meinem C#-Code die Werte verglichen habe, ist mir gar nicht aufgefallen das die Funktion _WinAPI_OpenFileMapping("MumbleLink") natürlich nur funktioniert, wenn die Datei "MumbleLink" bereits vorhanden ist. Das ist natürlich zum Start des Programms nicht der Fall. Im C#-Code kann das elegant mit der Funktion MemoryMappedFile.CreateOrOpen gelöst werden, welche es so in AutoIT leider nicht gibt. Stattdessen habe ich die Funktion _WinAPI_CreateFileMapping gefunden. Ich wollte das ganze also nun so lösen:
Func _openMumbleLink()
if $hMappedFile = 0 Then
$hMappedFile = _WinAPI_CreateFileMapping(Null, 5716, "MumbleLink")
Else
$hMappedFile = _WinAPI_OpenFileMapping("MumbleLink")
EndIf
$pViewAdress = _WinAPI_MapViewOfFile($hMappedFile)
if $pViewAdress = 0 then SetError(2)
EndFunc
Leider werden dann keine Werte ausgelesen. Das ganze funktioniert erst, wenn ich einmalig den C#-Code ausgeführt habe, dann kann ich über die Funktion _WinAPI_OpenFileMapping("MumbleLink") oder auch _WinAPI_CreateFileMapping aus die Daten zugreifen. Bei der Angabe der Größe habe ich verschiedene Sachen probiert. Einmal die Größe meiner Struktur (5460) $sStructure32 und einmal die Größe der C#-Struktur (5716) - vielleicht übersehe ich hier was anderes?
Edit: Funktioniert nun. Ich musste nur einen "SecurityIdentifier" setzen. Die Lösung fand ich hier:
http://stackoverflow.com/questions/2291…ss-in-to-winapi
Einfach Local $sid = _Security__StringSidToSid("S-1-0") erstellen und der _WinAPI_CreateFileMapping übergeben. Die richtige Struktur-Größe war auch wichtig. Ich musste die originale C#-Struktur Größe verwenden (5714) damit es schlussendlich funktionierte.