Deutsch
Stammtisch & Café

CreateFileMapping.

 
CreateFileMapping erzeugt ein Dateiabbildungsobjekt und liefert dessen Handle zurück. Filemapping ist eine einfache Art komplette (auch sehr große) Dateien 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 Datei oder $FFFFFFFF als Handle auf einen virtuellen Speicherbereich.
2.Parameter: Security-Attributes Struktur oder für 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-Datei des Systems auf der Plattefür alle Seiten in einem Abschnitt (Standard)
-$1000000 = Die durch das Handle in Parameter 1 angegebene Datei ist eine EXE. Parameter 2 und die Zugriffsrechte aus Parameter 3 werden von der Datei 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 für 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 Größe des gemappten Bereichs (für >=4GB). Kann in der Regel 0 bleiben.
5.Parameter: Die unteren 32 Bits der Größe des gemappten Bereichs.
6.Parameter: Adresse eines Strings oder Bereichsvariable mit einem String, der einen beliebigen Namen für 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&)
Beep 1
 
02.04.2005  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.171 Betrachtungen

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

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


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