Hola Compañer@s !
Como puedo implementar CreateFileMapping bajo VCL.Net ??
Estoy teniendo problemas con los punteros incluso utilizando la directiva de compilación {$UNSAFECODE ON} para que puderia utilizar dichos punteros.
Pero no tengo en VCL.Net ninguna función que logre copiar el/los dato/s que quiero a la memoria compartida.
De momento he logrado llegar hasta aqui :
Código Delphi
[-]fFileHandle : THandle;
Compartido : IntPtr;
Buffer : IntPtr;
AuxTexto : String;
fFileHandle := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, 1024, 'MiNombreDeMemCompartida');
if fFileHandle <> 0 then begin
Compartido := MapViewOfFile(fFileHandle, FILE_MAP_WRITE, 0, 0, 0);
AuxTexto := '1';
Buffer := Marshal.StringToHGlobalAuto(AuxTexto);
end;
y en la parte que quiero leer el dato de la memoria compartida he llegado hasta esto :
Código Delphi
[-]fFileHandle2 : THandle;
Compartido2 : IntPtr;
Buffer2 : IntPtr;
AuxTexto2 : String;
fFileHandle2 := OpenFileMapping(FILE_MAP_READ, False, 'MiNombreDeMemCompartida');
if fFileHandle2 <> 0 then begin
Compartido2 := MapViewOfFile(fFileHandle2, FILE_MAP_READ, 0, 0, 0);
Buffer2 := Marshal.AllocHGlobal(1024 * Marshal.SystemDefaultCharSize);
AuxTexto2 := Marshal.PtrToStringAuto(Buffer2);
end;
Añadir que en el Uses he incluido : System.Runtime.InteropServices
A lo mejor me podeis dar algunas pistas que me ayuden. Por más que busco en todo internet no he logrado encontrar la solución.
