Zitat von
devidespe:
Mit StringListen habe ich schon experimentiert, etwa indem die Hex-Werte in Strings umgewandelt und in der Liste gespeichert werden. Damit kann ich aber nur doppelte Anfangs- und Endadressen aufspüren, nicht die eigentlichen Bereiche.
Die Wandlung verstehe ich nicht. Wenn es schon Hexadezimalzahlen sind, dann müssen es Strings sein. Wenn du sie aber noch umwandeln musstest zu strings, dann behaupte ich mal, es sind keine Hexadezimalzahlen.
Und diese Überschneidungen werden definitiv vom BIOS aufgelöst, da die Karten in ihren PCI Configurationsregistern nur die Anzahl und grösse der benötigten Adressbereiche angeben. In besonderen Fällen werden feste Adressen vorgegeben (z.B. VideoRAM bzw. BIOS der VGA Karten bzw. BIOS ROMs von Erweiterungskarten). Ansonsten ist für die virtuelle Adressmapping das BIOS zuständig, aber nur, wenn Plug & Play
OS installed auf false ist und somit zur vollständigen Initialisierung der PCI und PnP Geräte führt. Wenn dieser Schalter auf true ist, dann werden die Geräte nur teilweise initialisiert, was soweit bedeutet, dass nur die festen gewünschten Adresseinblendungen im unteren 1 MB Segment erfüllt werden und der Rest muss dann vom installierten
OS erfolgen. Dieses mapped sich dann die erweiterten Adressen hin. Somit musst du beim auslesen unterscheiden, wann du die Register ausliest und vor allem in welchem Zustand sie sich befinden. Also ob die Karten komplett initialisiert wurden, weil wenn dies noch nicht der Fall ist (was im reinen DOS geschehen kann bei abgeschalteter PnP
OS BIOS Option), dann erhälst du falsche Ergebnisse.