Zitat von
richard_boderich:
gut dann hab ich ein
handle auf dem speicherbereich, aber wie gehe ich an eine bestimmte stelle im speicher und lese die aus?
Ich gehe mal davon aus, dass wir hier nur über die aufwendigere Methode unter Windows NT sprechen (MS-DOS und
Win9x sind ja kein Problem)...
Unter WindowsNT:
- wird der für Dich interessante Speicherbereich nicht in den Adressraum von Prozessen gemappt
- dass heißt, dass kein Prozeß auf den Speicherbereich direkt zugreifen kann
- weiterhin gibt es keine
Win32 API-Funktion um an den betreffenden Bereich zu kommen
(es können mit der
Win32 API keine benannten Objekte mit '\' im Namen geöffnet werden...)
Was möglich ist:
- das benannte Kernel-Objekt '\Device\PhysicalMemory' mit Hilfe einer NT-internen Funktion zu öffnen
(das Objekt repräsentiert den physikalischen Speicher, geht nur als lokaler Admin)
- mit dem
Handle kann nun ein Bereich aus dem 'physikalischen Speicher' in den Adreßraum Deines Prozesses gemappt werden
(diesen Bereich kannst Du nun lesen...)
NTVDM:
- der Speicherbereich wird vom '16-Bit Emulator' bereitgestellt
Win9x:
- der entspechende Speicherbereich wird in jedem Adressraum gemappt (direkter Zugriff möglich)
Gruss Nico
edit: wenn Du versuchen willst unter
WinNT direkt in den Bildschirmspeicher zu schreiben: such Dir eine andere Herausforderung