Also erstmal erlaubt die WinAPI keinen Zugriff auf den Videospeicher. Das würde ja das ganze schöne DRM kaputt machen, oder hast du noch nie versucht vom Windows Media Player einen Screenshot zu machen, wenn die volle Hardware Unterstützung aktiviert ist ? Dank des DirectX Surfaces ist da nicht viel sehen. Windows erlaubt einem nur einen Zugriff auf die Dinge, die auf irgendwelche HDCs gemalt werden.KPA hat geschrieben:Das Beispiel mittels VESA Standard und IRQ ist völlig veraltet. IRQ gibt es in diesem Sinne nicht mehr um BIOS Routinen aufzurufen. Eine Umschaltung in den Real Mode ist ebenfalls unter der Windows Kontrolle nicht mehr möglich. Dafür gibt es nun die API Aufrufe welche die IRQ und dessen Funktionen ersetzen. Diese API rufen wiederrum Treiber auf. Somit brauche ich auch keine Treiber neu schreiben oder entwerfen.
Ich würde sagen ihr schaut Euch mal das Beispiel DirectScreenDrawing.pb an. Da wird das direkte Schreiben eines Pixels mittels u.a. DrawingBuffer und Pointervariablen in den Speicher praktiziert.
Desweiteren gibt es den V86 Modus in dem sich sehr wohl realmode programme ausführen lassen, oder meinst das Betriebsystem simuliert jeden Opcode eines 16 bit Programms unter windows XP ? Ne, der prozess wird einfach im V86 modus ausgeführt.
Zu deiner Theorie, das es nicht möglich wäre unter Windows in den Realmode zu wechseln ist nicht richtig. Ein Treiber, welcher im Ring 0 des Prozessors läuft, der hat die gleichen Berechtigungen wie der NT Kernel und dem reicht ein:
Code: Alles auswählen
mov eax,cr0
and eax,NOT 1
mov cr0,eax
;und hier noch nen far jump zu einer 16 bit Adresse
Nun mag der VESA Standard durchaus seine paar Jahre alt sein, jedoch ist er standartisiert und erlaubt es dir alle Grafikkarten gleich anzusteuern und man müsste nicht jede einzelne Grafikkarte anders ansteuern.
Nun wird vlll. jemand mit dem Argument kommen, das Fraps & co, das ja auch können. Diese arbeiten aber soweit ich weiß mit DLL injection und hooken einfach die Zeichenbefehle oder sie greifen von dort aus auf den Speicherbereich zu. Ein Prozess der ein DirectX / OpenGL Fenster hat, kann problemlos auf den Inhalt seines eigenen Fensters zugreifen, jedoch kein anderer, wenn der Bereich mit exclusiven Rechten geöffnet wurde.
mfg,
Dark