Wie funktioniert Createfilemapping ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
funkheld
Beiträge: 651
Registriert: 31.12.2009 11:58

Wie funktioniert Createfilemapping ?

Beitrag von funkheld »

Hallo, guten Tag.
Wie funktioniert eigentlich dieses :
hmap = CreateFileMapping_(#INVALID_HANDLE_VALUE, 0, #PAGE_READWRITE|#SEC_COMMIT|#SEC_NOCACHE, 0, SizeOfMem, "MeinSpeicher")
hMapView = MapViewOfFile_(hmap, #FILE_MAP_ALL_ACCESS, 0, 0, 0)
Mit dieser Routine schreibe ich dauernd in den Filemappingspeicher
rdata=ReceiveNetworkData(ClientID, *rbuffer, 255)
PokeL(hMapView + 0, rdata)
CopyMemory(*rbuffer,hMapView + 4,rdata)
Mit einem anderen Programm lese ich die Daten dauernd aus dem Speicher.

Man kann ja nicht gleichzeitig in den Speicher schreiben und lesen.
Welche Routine steuert eigentlich dieses ?

Danke.

Gruss
peter
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Wie funktioniert Createfilemapping ?

Beitrag von ts-soft »

Code: Alles auswählen

Define HandleMap

Procedure CreateSharedMemory(Name.s, Size)
  Shared HandleMap
  HandleMap = CreateFileMapping_(#INVALID_HANDLE_VALUE, 0, #PAGE_READWRITE|#SEC_COMMIT|#SEC_NOCACHE, 0, Size, @Name)
  If HandleMap
    ProcedureReturn MapViewOfFile_(HandleMap, #FILE_MAP_ALL_ACCESS, 0, 0, 0)
  EndIf
EndProcedure

Procedure OpenSharedMemory(Name.s)
  Shared HandleMap
  HandleMap = OpenFileMapping_(#FILE_MAP_ALL_ACCESS, 0, @Name)
  If HandleMap
    ProcedureReturn MapViewOfFile_(HandleMap, #FILE_MAP_ALL_ACCESS, 0, 0, 0)
  EndIf
EndProcedure

Procedure CloseSharedMemory(MemoryAddress)
  Shared HandleMap
  UnmapViewOfFile_(MemoryAddress)
  CloseHandle_(HandleMap)
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
funkheld
Beiträge: 651
Registriert: 31.12.2009 11:58

Re: Wie funktioniert Createfilemapping ?

Beitrag von funkheld »

Jup, danke für die Proceduren.

Gruss
peter
Antworten