| |
|
|
 | Descripción:
OpenFileMapping öffnet una con CreateFileMapping erzeugtes benanntes Filemapping Objeto y liefert dessen Handle zurück.
Deklaration:
DEF @OpenFileMapping(3) !kernel32,OpenFileMappingA
Parámetro:
1.Parámetro: Ein Flag para el Zugriffsmodus el Handle. -$2 = Nur lesen. -$4 = Carta y lesen. -$8 = Lesen y escribir, pero no en el Platte. Bajo NT-basierten Systemen escribir sólo en el aktuellen Prozess.
2.Parámetro: Ein Flag, el spezifiziert, si el zurückgegebene Handle a otro Prozesse vererbt voluntad kann. => -1 = Kann vererbt voluntad. -0 = Kann no vererbt voluntad.
3.Parámetro: Ein String oder una Bereichsvariable con un String, el el Namen des a öffnenden Dateiabbildungsprojektes enthält.
Rückgabewert:
0 en Misserfolg, ansonsten el Handle des Dateiabbildungsprojektes.
Beispiele:
Ejemplo 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 Hier se el Variable producido
WINDOW 0,0-300,400
Declarar Tick&,Name$,Ausgelesen#
Declarar Speicherhandle&,Speicheraddr&,Dateihandle&
Declarar Dateiname$,Texto$,Written#,Dateilänge&
LET TEXT$=Von el 1.Expediente geschrieben
LET DATEINAME$=C:TEST.TXT
LET DateiHandle&=@CreateFile(@ADDR(Dateiname$),$80000000+$40000000,0,0,4,$80,0)
Dim Written#,4
@WriteFile(DateiHandle&,@ADDR(TEXT$),@len(Texto$),Written#,0)
Disponer Written#
Let Name$=AH-Expediente
LET Speicherhandle&=@CreateFileMapping(DateiHandle&,0,4,0,0,@addr(Name$))
Drawtext 0,50,Handle des Speicherbereichs: +@STR$(Speicherhandle&)
LET Speicheraddr&=@MapViewOfFile(Speicherhandle&,2,0,0,0)
Sinestar encargado %MENUITEM=-2
IF &GETTICKCOUNT-Tick&>10000
@CopyMemory(Speicheraddr&,@addr(Texto$),@len(Texto$))
LET TICK&=&GETTICKCOUNT
endif
DIM Ausgelesen#,256
Claro Ausgelesen#
@CopyMemory(Ausgelesen#,Speicheraddr&,@len(Texto$))
Drawtext 0,80,Texto=+@String$(Ausgelesen#,0)+
Disponer 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 Hier se el Variable ausgelesen
WINDOWSTYLE 31+512
WINDOW 300,0-300,400
Declarar Speicherhandle&,Ausgelesen#,Name$
Declarar Speicheraddr&,Texto$
Declarar Variable&
Let Texto$=Von el 2.Expediente geschrieben
Let Name$=AH-Expediente
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
Claro Ausgelesen#
WHILEnot %MENUITEM=-2
Drawtext 0,0,F1 drücken para Auslesen
Drawtext 0,21,F2 drücken para Carta...
Waitinput
IF %SCANKEY=112
@CopyMemory(Ausgelesen#,Speicheraddr&,@len(Texto$))
Drawtext 0,80,Variale=+@String$(Ausgelesen#,0)+
Beep 1
ElseIF %SCANKEY=113
Beep 1
@CopyMemory(Speicheraddr&,@addr(Texto$),@len(Texto$))
@CopyMemory(Ausgelesen#,Speicheraddr&,@len(Texto$))
Drawtext 0,80,Variale=+@String$(Ausgelesen#,0)+
Endif
WEND
Disponer Ausgelesen#
@UnmapViewOfFile(Speicheraddr&)
@CloseHandle(Speicherhandle&)
Beep 1
|
|
|
| |
|
|