ich möchte von einem anderen Programm aus über eine DLL einen Speicherbereich reservieren und in ihm Daten ablegen, die dann von PB nach einem erneuten Aufruf aus dem Fremdprogramm weiterverarbeitet werden sollen.
Hintergrund: Die Daten sollen extrem schnell und unter Nutzung der Möglichkeiten von PB dargestellt werden können. Ein Beispiel wären astronomische Daten, die einmalig in den Speicherbereich geschrieben werden. Anschließend werden sie schnell und wiederholt ausgelesen, um dann visualisiert zu werden.
Zur Vereinfachung gehe ich davon aus, dass es sich um LongInt Daten handelt.
Leider fehlen mir reihenweise Kenntnisse über DLLs. Trotzdem ein kleiner Versuch:
Code: Alles auswählen
ProcedureDLL reserveMem(Mem.q)
; reserviert einen Speicherbereich der Größe Mem und reicht dessen Startadresse zurück
*MemStart = AllocateMemory(Mem.q)
If Not(*MemStart)
MessageRequester("... gescheitert","Speichereinrichtung")
EndIf
EndProcedure
ProcedureDLL saveMem(StoreNr.L,Wert.L)
;Schreibt den Wert mit der Nummer StoreNr in den Speicherbereich
PokeL(*MemStart+(StoreNr-1)*4,Wert)
EndProcedure
a) ist die Idee grundsätzlich überhaupt realisierbar?
b) Wie reicht man aus der DLL die Startadresse des Speicherbereiches zurück?
c) Wie berücksichtigt man, dass es für 32-bit und 64-Bit funktioniert?
Dank schon 'mal vorab.