| |
|
|
| CreateFileMapping erzeugt un Dateiabbildungsobjekt et liefert dessen Handle zurück. Filemapping ist une simple Art komplette (aussi très grand) Fichiers im grenier trop behalten et de mehreren Prozessen aus puis zugreifen trop peut. So peut sowohl droite effektive Pipes erzeugt comme aussi très schnelle Bearbeitungszeiten erreicht volonté.
Deklaration:
DEF @CreateFileMapping(6) !kernel32,CreateFileMappingA
paramètre:
1.paramètre: Handle einer geöffneten Dossier ou bien $FFFFFFFF comme Handle sur une virtuellen Speicherbereich. 2.paramètre: Security-Attributes Struktur ou bien pour cela erzeugte objet. peux aussi 0 son. 3.paramètre: Flag, qui den erlaubten Zugriff regelt. Pour den gewünschten Zugriff doit cela Filehandle également qui passenden Accessrechte avons. Flags peut avec | addiert volonté.=> -$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. en supplément peux einer qui folgenden grenier-Flags avec | addiert volonté: => -$8000000 = Alloziert physikalischen grenier im grenier ou bien dans qui Paging-Dossier des Systems sur qui Plattefür alle Seiten dans einem paragraphe (Standard) -$1000000 = qui par cela Handle dans paramètre 1 angegebene Dossier ist une EXE. paramètre 2 et qui Zugriffsrechte aus paramètre 3 volonté de qui Dossier pris. -$4000000 = Reserviert alle Seiten eines Abschnitts, sans physikalischen grenier trop allozieren. cette reservierte Speicherbereich peux pas vn anderen Allozierungsoparationen werwendet volonté, jusqu'à il freigegeben wird. Reservierte Seiten peut dans folgenden Aufrufen qui Funktion VirtualAlloc() weitergegeben volonté. cette Flag ist seulement gültig, si pour paramètre 1 $FFFFFFFF défini wurde! trop $8000000 ou bien $4000000 peux ensuite encore suivant Flag avec | addiert volonté: => -$10000000 = Alle Seiten eines Abschnitts volonté comme „nicht cachefähig“ gekennzeichnet. 4.paramètre: qui oberen 32 Bits qui Taille des gemappten Bereichs (pour >=4GB). peux dans qui règle 0 rester. 5.paramètre: qui unteren 32 Bits qui Taille des gemappten Bereichs. 6.paramètre: Adresse eines Cordes ou bien Bereichsvariable avec einem String, qui une beliebigen Namen pour cela Mapping objet contient.
Rückgabewert:
0 chez Misserfolg, ansonsten cela Handle sur den Speicherbereich.
Beispiel: KompilierenMarqueSéparationDef @MapViewOfFile(5) !kernel32,MapViewOfFile
DEf @UnmapViewOfFile(1) !kernel32,UnmapViewOfFile
DEF @CopyMemory(3) !kernel32,RtlMoveMemory
WINDOWSTYLE 31+512
Windowtitle Hier wird die Variable erzeugt
WINDOW 0,0-300,400
Declare Variable&,Tick&,Name$,Ausgelesen#
Declare 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
Whilenot %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))+
Dispose Ausgelesen#
Sleep 10
WEND
@UnmapViewOfFile(Speicheraddr&)
@CloseHandle(Speicherhandle&)
| 02.04.2005 ▲ | |
|
|
|