Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi MMF und IIS (ISAPI) - Mapfile kann nicht erstellt werden (https://www.delphipraxis.net/126853-mmf-und-iis-isapi-mapfile-kann-nicht-erstellt-werden.html)

LD93 3. Jan 2009 17:12


MMF und IIS (ISAPI) - Mapfile kann nicht erstellt werden
 
Hallo alle zusammen,

ich habe bei euch schon oft helfende Informationen gefunden, aber jetzt muss ich doch aktiv fragen:
Ich habe vor Daten zwischen einem Delphi-Programm (exe) und einem Webservermodul (dll fürn iis) auszutauschen. Ich habe MMF ausgewählt, nur leider hänge ich hier schon beim ausprobieren fest.

Zusammengeklauter Code zum Initialisiren in IIS-Modul:
Delphi-Quellcode:
procedure TWebModule1.WebModuleCreate(Sender: TObject);
begin
  //MapFile erstellen falls noch nicht vorhanden
  MapHandle:= CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,Sizeof(TData),MapName);
  If MapHandle > 0 then
   Begin
    //Auf den Speicherbereich zugreifen
    PData := MapViewOfFile(MapHandle,FILE_MAP_ALL_ACCESS,0,0,0);
      else
       Begin
        raise exception.create('Mapfile konnte nicht geöffnet werden.');

       End;
   End
    else
     begin
      raise exception.Create('Mapfile konnte nicht erstellt werden.');

     end;
end;
Definitionen:
Delphi-Quellcode:
Const MapName = 'Austausch';

Type TData = Packed Record
      Ready : Boolean;
      Data2 : String[20];
End;
  PTData = ^TData;

...
  private
     MapHandle: THandle;
   PData: PTData;
Aufruf:
Delphi-Quellcode:
response.Content:=pdata.Data2;
Destroy:
Delphi-Quellcode:
 UnMapViewOfFile(PData);
 CloseHandle(MapHandle);

Nun habe ich noch das Programm, welches (eigentlich) in diese MMF schreiben soll (änderung bei aufruf: PData.Data2 := Edit1.Text;).

Wenn ich das Programm mehrfach starte klappt (zwischen den programmen) alles, mit dem Webservermodul auch (also, wenn ich statt Programm die DLL mehrfach lade).

Sobald ich die DLL ausführen lasse und (unter dem Adminstratorkonto) das Programm starte bekomme ich die Meldung "'Mapfile konnte nicht erstellt werden.'"


Ich kann mir nicht helfen - wisst ihr weiter??

mfg

Lucas

himitsu 4. Jan 2009 13:13

Re: MMF und IIS (ISAPI) - Mapfile kann nicht erstellt werden
 
Hast du mal geschaut, warum es nicht geht? (bzw. was sagt GetLastError)

LD93 5. Jan 2009 13:08

Re: MMF und IIS (ISAPI) - Mapfile kann nicht erstellt werden
 
Hallo,

ich wüsste ja selber gerne, warum es nicht funktioniert...

Die Funktion gibt 0 zurück (ich rufe sie nach onCreate auf)

Ich hab noch nie mit MMF's gearbeitet und will Daten aus einem Laufenden Programm heraus im Web anzeigen.

Weiß keiner weiter??

mfg

Lucas

himitsu 6. Jan 2009 18:39

Re: MMF und IIS (ISAPI) - Mapfile kann nicht erstellt werden
 
ja, bei Fehler gibt diese Funktion eine 0 zurück
und der Fehlercode wird per SetLastError gespeichert ... läßt sich also bei einem Fehler über GetLastError abrufen

Delphi-Quellcode:
procedure TWebModule1.WebModuleCreate(Sender: TObject);
begin
  //MapFile erstellen falls noch nicht vorhanden
  MapHandle:= CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,Sizeof(TData),MapName);
  If MapHandle > 0 then
    begin      
      ...
    end
    else
      Raise exception.Create('Mapfile konnte nicht erstellt werden.'#10#10
        + SysErrorMessage(GetLastError));
end;
GetLastError gibt den letzen Fehlercode zurück
und SysErrorMessage wandelt diesen in einen String um.

LD93 8. Jan 2009 17:52

Re: MMF und IIS (ISAPI) - Mapfile kann nicht erstellt werden
 
so kommt "Access is denied" raus...

himitsu 11. Jan 2009 23:26

Re: MMF und IIS (ISAPI) - Mapfile kann nicht erstellt werden
 
Zitat:

Zitat von LD93
so kommt "Access is denied" raus...

dann wirst du vermutlich mal etwas den 2 Parameter (lpAttributes: LPSECURITY_ATTRIBUTES) verwenden müssen? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz