Ist es möglich, Windows-Bibliotheken aufzurufen, die auf der Festplatte von einem Programm leben, das im BIOS lebt?

8

Ich versuche, ein Programm zu schreiben, das eine BIOS-Option sein wird (nach POST). Ich möchte, dass die Anwendung eine nette GUI hat, anstatt textbasiert zu sein (es gibt mehrere Gründe dafür, die Lokalisierung ist eine davon).

Mein Problem ist, dass wir durch die Größe der Anwendung, die wir auf das BIOS flashen können, eingeschränkt sind.

Ist es möglich, MASM32 zu verwenden, um mit den DLLs auf der Festplatte zu "verlinken", so dass wir die Windows-APIs verwenden können, um die GUI zu entwickeln?

Oder gibt es eine API, mit der wir die GUI erstellen können, die in die endgültige ausführbare Datei eingebunden werden kann? (60K-Größenbeschränkung für die endgültige Programmdatei)

Jede Hilfe, die Sie geben können, wäre sehr dankbar, danke im Voraus.

    
Anit Nosrac 16.02.2010, 09:35
quelle

5 Antworten

9

Es ist möglich. Alles, was Sie tun müssen, ist:

  • Setzen Sie den Prozessor in den geschützten Modus und ordnen Sie den Speicher wie erwartet zu (flaches Modell)
  • Entwickle einen Dateisystemtreiber und lade diesen
  • unterstützt alle möglichen Grafikkarten, Mäuse, Monitore, Tastaturen usw., einschließlich potenziell veralteter Hardware
  • richtet die Ausführungsumgebung so ein, dass alle externen Referenzen der angeforderten DLL vorhanden sind, einschließlich (für Windows) KERNEL32, GDI, etc.

Es gibt eine Menge dazu, und es ist nicht einfach. Ein naheliegendes Beispiel ist jedoch MenuetOS , eine beeindruckend kompakte Umgebung. Aber es ist vollständig aus einem vollständigen Überdenken der Implementierung einer GUI-Umgebung geboren.

Ich habe BIOS-Code geschrieben, der eine GUI-Schnittstelle simuliert. Die Grafikkarte wird im Textmodus gehalten, die Schriftart wird schöner gestaltet, die Textzellentrennzeichen werden deaktiviert und die Maus wird erkannt. Mit einer einfachen Animation passte die ganze Sache in 60 KiB oder so.

    
wallyk 16.02.2010, 09:54
quelle
5

Nein, das ist nicht möglich. Für eine Windows-Anwendung muss das Windows-Betriebssystem ausgeführt werden. Daher muss das BIOS das Betriebssystem gestartet haben und ausgeführt werden, bevor eine Windows-GUI (oder Konsolenanwendung) verwendet werden kann. Um auf die DLL-Dateien auf dem Datenträger zugreifen zu können, benötigen Sie ein Dateisystem, das erst verfügbar ist, wenn das Betriebssystem gestartet wurde.

In 60K sollten Sie jedoch in der Lage sein, eine recht brauchbare zeichenbasierte GUI zu erstellen. Ich würde mir ansehen, wie einige der Linux-Bootloader das machen.

    
anon 16.02.2010 09:45
quelle
0

Es gibt keine BIOS-Implementierungen, die dies unterstützen. Aber in der Theorie ist es möglich, aber bedenken Sie, dass Sie zuerst das gesamte Betriebssystem entwickeln sollten:)

    
Vladimir Doloto 16.02.2010 09:48
quelle
0

Vielleicht interessiert es Sie, sich den Quellcode von XOSL anzusehen - ein alter Boot-Manager , der eine schöne GUI im Fenster hatte.

    
Kramii 16.02.2010 10:00
quelle
0

Ich bin nicht sicher, ob die Anfrage tatsächlich möglich ist. (Den Kontext der Frage im Hinterkopf behalten)

Damit dies funktioniert, müssten Sie die gesamte Microsoft Windows-Umgebung initialisieren, um die API-Funktionen zum Zeichnen einer GUI zu verwenden.

Aus Neugier, was machst du in diesem BIOS-Programm?

    
kaylnn 25.02.2010 06:02
quelle

Tags und Links