Bonsoir à tous,

Je m'amuse à utiliser File Mapping de la sorte :

Démarrage

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Function TFMyForm.Demarrage: Boolean;
begin
  Result := False;
  Try
    FichierEchange:=CreateFileMapping( $FFFFFFFF,  
                              nil,               
                              PAGE_READWRITE, 
                              0,
                              SizeOf(Partage),
                              'ApplicationCible');
 
    if FichierEchange = 0 then Exit(False);
 
    Partage := MapViewOfFile(FichierEchange, 
                        FILE_MAP_WRITE,
                        0,
                        0,
                        0);
 
    if Partage = nil then Exit(False);
 
//...
 
    Result := True;
  Except
    Result := False;
  end;
Arrêt

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Function TFMyForm.Arret: Boolean;
begin
  if Partage <> nil then
  begin
    UnmapViewOfFile(Partage);
    if FichierEchange <> 0 then
    begin
      CloseHandle(FichierEchange);
    end;
  end;
end;
Lorsque j'utilise fonction démarrage cela fonctionne très, mais lorsque j'ai fini et que j'utilise la fonction arrêt, j'ai systématiquement cette erreur

Violation d'accès à l'adresse 007E8D23 dans le module...

Je suis sur XE5.

Auriez-vous une idée à ce problème ?

Merci.