Entwickler-Ecke
Windows API - I/O Adresse Umleiten
markus L - Do 02.09.10 09:02
Titel: I/O Adresse Umleiten
Hallo,
ist es möglich unter W2K und höher eine Art treiber zu erstellen,
mit dem man zugriffe auf I/O Adressen umleiten kann.
In der art so etwas wie Direct IO, aber halt mit umleitung.
Hintergrund, eine Applikation (kein Quellcode vorhanden) die unter Win9x auf den RS232 Port zugreift auf
einem XP rechner (Laptop) mit einem USB RS232 Adapter Lauffähig zu machen. (Keine HW RS232 Vorhanden)
wo setzt man am besten da an ?.
MfG
Markus
Reinhard Kern - Do 02.09.10 12:55
markus L hat folgendes geschrieben : |
Hallo,
ist es möglich unter W2K und höher eine Art treiber zu erstellen,
mit dem man zugriffe auf I/O Adressen umleiten kann.
... |
Hallo,
da stehen 2 Probleme im Weg: erstens werden im Anwendermodus keine I/O-Befehle ausgeführt, und zweitens ist die Hardware des Adapters u.U. ganz anders aufgebaut als die PC-Standard-Comschnittstelle. Das erste Problem lässt sich nur durch Treiber-Programmierung lösen, Treiber dürfen was der Anwender nicht darf.
Gegen mangelnde Register-Kompatibilität hilft nur eine Art doppeltes Re-Engeneering, wenn überhaupt: man muss nicht nur das Programm rückübersetzen, sondern man muss auch herausfinden, was der Programmierer mit dem Befehl "setze Bit x in I/O-Register Y" eigentlich bezweckt hat. Soll damit etwa RTS gesetzt werden, kann man das durch den entsprechenden WIN32-API-Aufruf ersetzen. Wenn es den aber nicht gibt, scheitert das Ganze. Mühsam ist es in jedem Fall.
Gruss Reinhard
markus L - Do 02.09.10 13:38
Hallo,
sehe schon scheint mir recht Arbeitsintensiv zu sein ;-).
Es geht eigendlich nur um die RXD TXD Leitung, HW Handshake o.ä. wird nicht benutzt.
Danke
Gruß
Markus
SAiBOT - Do 02.09.10 23:33
Das hier habe ich irgendwo mal gefunden, könnte dir behilflich sein.
Reinhard Kern - Do 02.09.10 23:53
markus L hat folgendes geschrieben : |
Es geht eigendlich nur um die RXD TXD Leitung, HW Handshake o.ä. wird nicht benutzt.
|
Hallo,
auch dann muss erst mal Baudrate, Länge, Parity usw. gesetzt werden, auch No handshake ist eine Handshake-Spezifikation. Als erstes solltest du eine Liste erstellen, welche I/O-Adressen benutzt werden.
Gruss Reinhard
BenBE - Fr 03.09.10 16:05
Alternativ bliebe noch die Variante (ist übrigens in dem Fall erlaubt), das betroffene Programm in Bezug auf seine Treiber-Schnittstelle (also der Teil, der die Hardware ansteuert) zu reverseengineeren und durch einen InProcess-Patch durch eine Weiterleitung an eine externe DLL zu emulieren. Wenn die IO-Funktionalität gut separiert in einer eigenen DLL liegt, hat man hier sogar ein recht einfaches Spiel, da man nur die DLL-Schnittstelle verstehen und erneut umsetzen muss.
ssb-blume - Sa 04.09.10 09:28
Hallo,
geht ganz einfach über Filestream, anbei Quellen und Testprogramm
Viel Erfolg,
Hansi
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!