So Leuts,
nach langer langer suche habe ich die Lösung gefunden...
Eigentlich ganz einfach....
In Fall einer Interprozess Kommunikation zwischen einem Dienst und einer App muss der Namen der MapDatei den Prefix "Global\" beinhalten....
Das wars!!!
Code sieht dann folgender maße aus :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| Constructor TM_MMFInterProcess.Create; var FSA: TSecurityAttributes; FSD: TSecurityDescriptor; Begin inherited;
InitializeSecurityDescriptor(@FSD, SECURITY_DESCRIPTOR_REVISION); SetSecurityDescriptorDacl(@FSD,True,nil,False);
FSA.nLength := sizeof(FSA); FSA.lpSecurityDescriptor := @FSD; FSA.bInheritHandle := True;
_hFileMapping := CreateFileMapping($FFFFFFFF, @FSA, PAGE_READWRITE, 0, sizeof(TMInterProcessMap), 'Global\MMFname');
if _hFileMapping <> 0 then _ptrInterProcess := MapViewOfFile(_hFileMapping, FILE_MAP_READ or FILE_MAP_WRITE, 0, 0, 0); end; |
Kaum macht man's richtig funktionnierts!!!
Moderiert von
Narses: Delphi-Tags hinzugefügt