kostenloser Webspace werbefrei: lima-city


Video Memory unter Windows

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Ich benutze den BCC5.5 Compiler f?r Cpp. Nun habe ich mit Inline Assembler auf das Video Memory zugegriffen und das Programm habe ich dann kompiliert. Wenn ich es starte, dann kommt ein Bluescreen und die Anwendung wird beendet. Kann mir jemand damit helfen?

    Beitrag ge?ndert am 5.08.2005 16:29 von javadomi
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t***a

    Betriebssysteme wie Win2000/XP lassen (ich vermute mal unter denen soll dein Programm arbeiten) nicht einfach so jedes daherprogrammierte Programm ohne weiteres auf jede Speicherzelle zugreifen.
    Ich vermute mal weiter, du hast ein Beispiel/Infos f?r den DOS-Bereich, oder?
    Wie auch immer, unter Windows gibt's ne Menge anderer M?glichkeiten auf die Grafikkarten zu zugreifen (GDI,DirectX,OpenGL,...).
    Was ist den ?berhaupt dein Ziel?
  4. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Mein Ziel ist es ein Betriebssystemunabh?ngiges Programm zu schreiben. Jedenfalls, soll es portierbar sein. Gibt es da keinen anderen weg auf das Video Memory unter Windows zuzugreifen? Windows 9x, XP laufen ja im 32Bit Protexted Mode.
  5. t***a

    Also systemunabh?ngige Programmierung erreicht am besten indem man sich m?glichst weit von der Hardwareebene entfernt. Und da ist Assembler eher der falsche Ansatz, weil es die hardwaren?heste Variante ist.

    Meine Frage war eher: Was willst du mit dem Videomemory anstellen? Warum willst du darauf zugreifen?
  6. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Du verstehst es nicht. Aber egal. Zu deiner Frage: Ich m?chte erstmal den Screen Modus 13h einrichten. Und dann einen Pixel mit der Farbe x f?llen. Klar, dass geht mir verschiedenen Schnittstellen, wie OpenGL, oder DirectX, aber ich will es auf Win f?r mein OS programmieren.

    PS: Nat?rlich f?r x86
  7. 0******a

    Der Zugriff auf Hardwareressourcen ist unter den nicht mehr auf reinem MS-DOS basierenden Windowsversionen Programmen vorbehalten, die im Ring 0 Modus laufen. Dein Programm l?uft im Ring 3 Modus (normale Programme). Du m?sstest einen Treiber schreiben, der dann eine Schnittstelle f?r andere Programme bildet und gleichzeitig deine Grafikkarte "antreibt". Der Treiber l?uft dann automatisch im Ring 0 Modus. Das Problem dabei ist, dass du das dann f?r jedes einzelne Grafikkartenmodell machen m?sstest, dass du jemals verwenden wirst. Abgesehen davon besteht noch die Schwierigkeit ?berhaupt einen Treiber f?r eine Hardwarekomponente zu schreiben.
    Eine andere M?glichkeit ist das Benutzen der Klasse IDirectDraw2, die Teil des Microsoft SDKs ist. Dort kannst du in den gew?nschten Bildschirmmodus (nennt sich dort so was wie Mode 13 oder so ?hnlich) umschalten. Sollte dir das Microsoft SDK nicht zur Verf?gung stehen, bleibt dir eigentlich nur noch die M?glichkeit, das Ganze per DirectX oder einer der anderen angesprochenen M?glichkeiten zu machen. In reinem Assembler wirst du das nicht hinbekommen (jedenfalls nicht, so lange du irgendwelche DOS-Codes bzw. Interrupts daf?r benutzt).
  8. Autor dieses Themas

    javadomi

    javadomi hat kostenlosen Webspace.

    Ja, Windows l?uft ja im 32 Bit Protected Mode. Kann man irgendwie eine Unterroutine im Kernel aufrufen, die das macht? SChlie?lich hat da der Kernel alle M?glichkeiten.
  9. t***a

    Jo, Javadomi, dich hab ich wirklich nicht verstanden, aber wie soll ich das auch wenn du nur derart sp?rlich mit Infos rausr?ckst. Ok, ich sehe ein ich sollte eigentlich hier nicht so schreiben; das geh?rt sich nicht, aber nunja.

    Jdenfalls um diesen Post noch aufzuwerten:
    Ich habe schon einmal gelesen, das es Wege gibt um Usermode-Programmen Ring-0 Privilegien zu zuteilen. Allerdings ist das eher "dirty hacking", wenn dich sowas interessiert wirst du bestimmt ?ber google f?ndlich. Unter Windows 2000 aufwa?rts macht es nicht wirklich Sinn den Kernel zu umgehen. Mehr Sinn macht es sich dort an die betriebssystemspezifischen Eigenheiten zu halten und die vorhandenen Schnittstellen zu nutzen. Sonst setzt man nur die Stabilit?t aufs Spiel.

    Ist es denn nicht m?g?ich f?r dich mehrere Executes f?r verschiedene Betriebssysteme anzulegen, wenn es schon unter verschiedenen Platformen laufen und hardwarenah sein soll?
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!