| |
|
|
| Beschreibung:
OpenFileMapping ouvrez un avec CreateFileMapping erzeugtes benanntes Filemapping objet et liefert dessen Handle zurück.
Deklaration:
DEF @OpenFileMapping(3) !kernel32,OpenFileMappingA
paramètre:
1.paramètre: un Flag pour den Zugriffsmodus sur cela Handle. -$2 = seulement lesen. -$4 = écrivons et lesen. -$8 = Lesen et écrivons, mais pas sur qui Platte. sous NT-basierten Systemen écrivons seulement im aktuellen Prozess. 2.paramètre: un Flag, qui spezifiziert, si cela zurückgegebene Handle à autre Prozesse vererbt volonté peux. => -1 = peux vererbt volonté. -0 = peux pas vererbt volonté. 3.paramètre: un String ou bien une Bereichsvariable avec einem String, qui den Namen des trop öffnenden Dateiabbildungsprojektes contient.
Rückgabewert:
0 chez Misserfolg, ansonsten cela Handle des Dateiabbildungsprojektes.
Beispiele:
Beispiel 1
DEF @CopyMemory(3) !kernel32,RtlMoveMemory
DEF @CreateFileMapping(6) !kernel32,CreateFileMappingA
Def @CloseHandle(1) !kernel32,CloseHandle
DEF @GetLastError() !kernel32,GetLastError
DEF @WriteFile(5) !kernel32,WriteFile
Def @MapViewOfFile(5) !kernel32,MapViewOfFile
DEf @UnmapViewOfFile(1) !kernel32,UnmapViewOfFile
DEF @CopyMemory(3) !kernel32,RtlMoveMemory
DEF @CreateFile(7) !kernel32,CreateFileA
WINDOWSTYLE 31+512
Windowtitle ici wird qui Variable erzeugt
WINDOW 0,0-300,400
Déclarer Tick&,nom$,Ausgelesen#
Déclarer Speicherhandle&,Speicheraddr&,Dateihandle&
Déclarer Dateiname$,Text$,Written#,Dateilänge&
LET TEXT$=de qui 1.Dossier geschrieben
LET DATEINAME$=C:TEST.TXT
LET DateiHandle&=@CreateFile(@ADDR(Dateiname$),$80000000+$40000000,0,0,4,$80,0)
Faible Written#,4
@WriteFile(DateiHandle&,@ADDR(TEXT$),@len(Text$),Written#,0)
Dispose Written#
Laisser nom$=AH-Dossier
LET Speicherhandle&=@CreateFileMapping(DateiHandle&,0,4,0,0,@addr(nom$))
Drawtext 0,50,Handle des Speicherbereichs: +@STR$(Speicherhandle&)
LET Speicheraddr&=@MapViewOfFile(Speicherhandle&,2,0,0,0)
Whilenot %MENUITEM=-2
IF &GETTICKCOUNT-Tick&>10000
@CopyMemory(Speicheraddr&,@addr(Text$),@len(Text$))
LET TICK&=&GETTICKCOUNT
endif
DIM Ausgelesen#,256
Claire Ausgelesen#
@CopyMemory(Ausgelesen#,Speicheraddr&,@len(Text$))
Drawtext 0,80,Text=+@String$(Ausgelesen#,0)+
Dispose Ausgelesen#
Sleep 10
WEND
@CloseHandle(Speicherhandle&)
@CloseHandle(DateiHandle&)
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 ici wird qui Variable ausgelesen
WINDOWSTYLE 31+512
WINDOW 300,0-300,400
Déclarer Speicherhandle&,Ausgelesen#,nom$
Déclarer Speicheraddr&,Text$
Déclarer Variable&
Laisser Text$=de qui 2.Dossier geschrieben
Laisser nom$=AH-Dossier
Tandis que @AND(Speicherhandle&=0,%MENUITEM<>-2)
sleep 100
LET Speicherhandle&=@OpenFileMapping(2,0,@ADDR(nom$))
Wend
LET Speicherhandle&=@OpenFileMapping(2,0,@ADDR(nom$))
LET Speicheraddr&=@MapViewOfFile(Speicherhandle&,2,0,0,0)
Drawtext 0,50,Handle des Speicherbereichs:+@STR$(Speicherhandle&)
DIM Ausgelesen#,256
Claire Ausgelesen#
WHILEnot %MENUITEM=-2
Drawtext 0,0,F1 drücken zum Lecture
Drawtext 0,21,F2 drücken zum écrivons...
Waitinput
IF %SCANKEY=112
@CopyMemory(Ausgelesen#,Speicheraddr&,@len(Text$))
Drawtext 0,80,Variale=+@String$(Ausgelesen#,0)+
Beep 1
ElseIF %SCANKEY=113
Beep 1
@CopyMemory(Speicheraddr&,@addr(Text$),@len(Text$))
@CopyMemory(Ausgelesen#,Speicheraddr&,@len(Text$))
Drawtext 0,80,Variale=+@String$(Ausgelesen#,0)+
Endif
WEND
Dispose Ausgelesen#
@UnmapViewOfFile(Speicheraddr&)
@CloseHandle(Speicherhandle&)
Beep 1
|
|
|
| |
|
|