| |
|
|
|
Descripción:
MapViewOfFile bildet una (con CreateFileMapping erzeugtes oder OpenFileMapping geöffnetes) Dateiabbildungsprojekt en el Speicherbereich des aufrufenden Prozesses de y liefert una Anfangsadresse zurück.
Deklaration:
Def @MapViewOfFile(5) !kernel32,MapViewOfFile
Parámetro:
1.Parámetro: Handle des con CreateFileMapping erzeugten Dateiabbildungsprojektes como LongInt. 2.Parámetro: Ein Flag Zugriffsmodus en el Speicherbereich. => -$2 = Schreib- y Lesezugriff. -$4 = Nur Lesezugriff. -$000F001F = Schreib- y Lesezugriff (como $2) -$1 = Bajo NT-basierten Windowsversionen encontrar Los cambios el Expediente sólo en el Speicherbereich des aktuellen Prozesses en lugar de – en el Platte y Abbildungen otro Prozesse se nichts geschrieben. Bajo no NT-basierten Systemen se zwar auch el Mappingbereich otro Prozesse geändert, el Expediente el Platte ändert se pero no. 3.Parámetro: El oberen 32 Bits el Startadresse des con CreateFileMapping erzeugten Speicherbereichs, de el el Mapping beginnen se. 4.Parámetro: El unteren 32 Bits el Startadresse des con CreateFileMapping erzeugten Speicherbereichs, de el el Mapping beginnen se. 5.Parámetro: Anzahl el a übertragenden Bytes como LongInt.
Rückgabewert:
0 en Misserfolg, ansonsten el Startadresse des Speicherbereichs.
Beispiele:
Ejemplo 1
DEF @CopyMemory(3) !"kernel32","RtlMoveMemory"
DEF @CreateFileMapping(6) !"kernel32","CreateFileMappingA"
Def @CloseHandle(1) !"kernel32","CloseHandle"
DEF @GetLastError() !"kernel32","GetLastError"
Def @MapViewOfFile(5) !"kernel32","MapViewOfFile"
DEf @UnmapViewOfFile(1) !"kernel32","UnmapViewOfFile"
DEF @CopyMemory(3) !"kernel32","RtlMoveMemory"
WINDOWSTYLE 31+512
Windowtitle "Hier se el Variable erzeugt"
WINDOW 0,0-300,400
Declarar Variable&,Tick&,Name$,Ausgelesen#
Declarar Speicherhandle&,Speicheraddr&
Let Name$="AH-Variable"
LET Speicherhandle&=@CreateFileMapping($FFFFFFFF,0,4,0,4,@addr(Name$))
LET Speicheraddr&=@MapViewOfFile(Speicherhandle&,2,0,0,0)
Drawtext 0,50,"Handle des Speicherbereichs:"+@STR$(Speicherhandle&)
LET TICK&=&GETTICKCOUNT
Sinestar encargado %MENUITEM=-2
IF &GETTICKCOUNT-Tick&>10000
Let Variable&=@RND(1000)
@CopyMemory(Speicheraddr&,@addr(Variable&),4)
LET TICK&=&GETTICKCOUNT
endif
DIM Ausgelesen#,256
@CopyMemory(Ausgelesen#,Speicheraddr&,4)
Drawtext 0,80,"Variale="+@STR$(@LONG(Ausgelesen#,0))+" "
Disponer Ausgelesen#
Sleep 10
WEND
@UnmapViewOfFile(Speicheraddr&)
@CloseHandle(Speicherhandle&)
Beep 1
DEF @OpenFileMapping(3) !"kernel32","OpenFileMappingA"
DEF @GetLastError() !"kernel32","GetLastError"
Def @MapViewOfFile(5) !"kernel32","MapViewOfFile"
DEf @UnmapViewOfFile(1) !"kernel32","UnmapViewOfFile"
DEF @CopyMemory(3) !"kernel32","RtlMoveMemory"
Def @CloseHandle(1) !"kernel32","CloseHandle"
Windowtitle "Hier se el Variable ausgelesen"
WINDOWSTYLE 31+512
WINDOW 300,0-300,400
Declarar Speicherhandle&,Ausgelesen#,Name$
Declarar Speicheraddr&
Declarar Variable&
Let Variable&=0
Let Name$="AH-Variable"
Mientras que @AND(Speicherhandle&=0,%MENUITEM<>-2)
sleep 100
LET Speicherhandle&=@OpenFileMapping(2,0,@ADDR(Name$))
Wend
LET Speicherhandle&=@OpenFileMapping(2,0,@ADDR(Name$))
LET Speicheraddr&=@MapViewOfFile(Speicherhandle&,2,0,0,0)
Drawtext 0,50,"Handle des Speicherbereichs:"+@STR$(Speicherhandle&)
DIM Ausgelesen#,256
WHILEnot %MENUITEM=-2
Drawtext 0,0,"F1 drücken para Auslesen"
Drawtext 0,21,"F2 drücken para Zurücksetzen..."
Waitinput
IF %SCANKEY=112
@CopyMemory(Ausgelesen#,Speicheraddr&,4)
Drawtext 0,80,"Variale="+@STR$(@LONG(Ausgelesen#,0))+" "
Beep 1
ElseIF %SCANKEY=113
Beep 1
@CopyMemory(Speicheraddr&,@addr(Variable&),4)
@CopyMemory(Ausgelesen#,Speicheraddr&,4)
Drawtext 0,80,"Variale="+@STR$(@LONG(Ausgelesen#,0))+" "
Endif
WEND
Disponer Ausgelesen#
@UnmapViewOfFile(Speicheraddr&)
@CloseHandle(Speicherhandle&)
Beep 1
|
|
|
| |
|
|