Italia
Stammtisch & Caffè

CreateFileMapping.

 
CreateFileMapping erzeugt ein Dateiabbildungsobjekt und liefert dessen Handle zurück. Filemapping ist eine einfache Art komplette (auch sehr grande) File im Speicher zu behalten und von mehreren Prozessen aus darauf zugreifen zu können. So können sowohl recht effektive Pipes erzeugt als auch sehr schnelle Bearbeitungszeiten erreicht werden.

Deklaration:

DEF @CreateFileMapping(6) !kernel32,CreateFileMappingA

Parameter:

1.Parameter: Handle einer geöffneten File oder $FFFFFFFF als Handle auf einen virtuellen Speicherbereich.
2.Parameter: Security-Attributes Struktur oder per das erzeugte Objekt. Kann auch 0 sein.
3.Parameter: Flag, der den erlaubten Zugriff regelt. Für den gewünschten Zugriff muß das Filehandle ebenfalls die passenden Accessrechte haben. Flags können mit | addiert werden.=>
-$2 = Nur lesen.
-$4 = Schreiben und lesen.
-$8 = Lesen und schreiben, aber nicht auf die Platte. Unter NT-basierten Systemen schreiben nur im aktuellen Prozess.
Dazu kann einer der folgenden Speicher-Flags mit | addiert werden: =>
-$8000000 = Alloziert physikalischen Speicher im Speicher oder in der Paging-File des Systems auf der Plattefür alle Seiten in einem Abschnitt (Standard)
-$1000000 = Die durch das Handle in Parameter 1 angegebene File ist eine EXE. Parameter 2 und die Zugriffsrechte aus Parameter 3 werden von der File genommen.
-$4000000 = Reserviert alle Seiten eines Abschnitts, ohne physikalischen Speicher zu allozieren. Dieser reservierte Speicherbereich kann nicht vn anderen Allozierungsoparationen werwendet werden, bis er freigegeben wird. Reservierte Seiten können in folgenden Aufrufen der Funktion VirtualAlloc() weitergegeben werden. Dieser Flag ist nur gültig, wenn per Parameter 1 $FFFFFFFF definiert wurde!
Zu $8000000 oder $4000000 kann dann noch folgender Flag mit | addiert werden: =>
-$10000000 = Alle Seiten eines Abschnitts werden als „nicht cachefähig“ gekennzeichnet.
4.Parameter: Die oberen 32 Bits der Dimensione des gemappten Bereichs (per >=4GB). Kann in der Regel 0 bleiben.
5.Parameter: Die unteren 32 Bits der Dimensione des gemappten Bereichs.
6.Parameter: Adresse eines Strings oder Bereichsvariable mit einem String, der einen beliebigen Namen per das Mapping Objekt enthält.

Rückgabewert:

0 bei Misserfolg, ansonsten das Handle auf den Speicherbereich.

Beispiel:
KompilierenMarkierenSeparieren
Def @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  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

3.185 Views

Untitledvor 0 min.
Ernst12.05.2014
Andre Rohland24.02.2013
Ragnar Rehbein10.08.2012
Andreas Miethe06.05.2012

Themeninformationen

Dieses Thema hat 1 subscriber:

unbekannt (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie