N
Hi.
Grundsaetzlich "existieren" an jedem Rechner alle I/O-Ports. Die Frage ist nur, ob ein Geraet auf die jeweilige Addresse lauscht/antwortet oder nicht. Gelesen werden kann zumindest also schonmal immer - sollte dabei auch nichts abstuerzen (solange du die betreffenden Schleifen mit einem timeout versehen hast, versteht sich ).
Tjo, und da bin ich auch noch am gruebeln, wie man das zuverlaessig feststellen kann, ob ein Port belegt ist oder nicht. Ich habe fuer einen ISA-PnP-Algo (fuer Systeme ohne PCI/Plug&Play-Unterstuetzung) eine Routine verwendet, die in einer Schleife die zu pruefenden Ports ausliesst und prueft, ob eine Zeit lang nur FFh zurueckgegeben wird (sollte eigentlich so sein, wenn sich an dieser Addresse nichts meldet). Ist dummerweise sehr unzuverlaessig. Mein PCI/PnP-loses 486-Board gibt da manchmal einfach irgendwelche scheinbar zufaelligen Werte zurueck.
Wie auch immer:
Wenn du nicht fuer solche Uralt-Systeme programmierst, wuerde ich dir raten, PnP oder PCI zu nutzen, um 1. festzustellen, was fuer Geraete in deinem System verfuegbar sind und 2. welche Hardware-ressourcen ihnen zugeordnet sind - das kann naemlich von System zu System sehr unterschiedlich sein.
Sind weder PCI noch PnP verfuegbar, solltest du bei solchen Sachen wie dem IDE-Controller aber auf jeden Fall nochmal nach den Docs zum Zielchipset suchen - die verklickern dir oft auch ohne solche grossen Umstaende, wieviele Kaele zur Verfuegung stehen, bzw. wie du den Controller (und damit seine Besonderheiten) identifizieren kannst.