Das Problem: Ein Programm greift ca 60000 (mit SoftICE und "BPIO 3BC if (bpcount==Anz Zugriffe)" herausgefunden) mal auf den Drckerport zu. Ich will einen Mittschnitt der Daten. Kennt jemand von Euch ein Programm mit dem man den Datenverkehr zwischen Druckerport und Peripherie mitschneiden kann? (Wenn möglich ab Win95) Die Daten sollten kontinuierlich in einem Ringspeicher geschrieben werden und nachher in einer Liste lesbar sein. Das Programm sollte im Hintergrund mitlaufen und keine anderen Programme behindern. Ich habe noch kein solches Program gefunden. Ich fürchte dass ich das Programm selbst zu schreiben habe, deshalb ein paar blöde Newbie C++ Fragen: Wie lese ich den I/O Port 0x3BC in das C++ Programm ein? Stört das Lesen dieses I/O Registers das andere Programm? Wie kriege ich ein sauberes Timing des Programms, ich will nicht einmal alle 10us auslesen wenn der CPU nix macht und anderstmal wenn der CPU Arbeit hat, nur alle 10ms. Was gibt es ausser M$ VC++ auch andere graphische Oberflächen für win95 Vielen Dank
Evtl. im Emulator laufen lassen. Es gibt eine modifizierte DOSBox in der Windows 95 läuft und die auf die parallele Schnittstelle auf Port-Ebene zugreifen kann, allerdings nur SPP und kein Interrupt.
Normalerweise solltest Du nicht drauf zugreifen können, da ein andres Programm den Port schon belegt. Portmonitor kann das mitloggen, er klingt sich in den Kernel ein (ka ob das Teil auch bei W95 geht) und loggt alles mit.
..dürfte nur etwas schwierig werden die Daten auszuwerten, ohne Grafiktabelle und ohne Kenntnisse in der Druckersteuerung.. Das wirst du wohl viel zu tun haben
Das geht nur, wenn Du auf Kernelebene die I/O-Zugriffe des betreffenden Prozesses abfängst. Mit DOS, Windows 95 und Co. dürfte das nicht einfach sein, da diese OS-Surrogate direkte Hardwarezugriffe am Kernel vorbei zulassen. Das sieht unter Linux oder Windows NT anders aus (was Windows 2000, XP und Vista mit einschließt). Henrik Haftmann hat einen Devicetreiber für einen selbstgebauten USB-Parallelportadapter geschrieben, der genau dieses tut, der fängt die I/O-Zugriffe auf die I/O-Adressen des Parallelports ab und leitet sie via USB an seinen Adapter um. Diesen Treiber könnte man, wenn man wirklich viel Erfahrung bei der Treiberentwicklung hat, als Grundlage für ein Loggerprojekt nehmen. Was ist die eigentliche Anwendung? Riecht ein bisschen nach "Dongle" ...
guckschtu da: http://download.sysinternals.com/Files/PortMon.zip damit kannst du die daten von parallel- und seriell-port mitschneiden
Hallo hier bin ich wieder. Ich habe mir vor ner Weile VC++ 6.0 gesaugt, auf meine Win95 Kiste geladen und ein bisschen mit programmieren gelernt. Dann habe ich einige Tutorials zum Druckerport gesucht und die durchgelesen und am Ende ein kleines Progi geschrieben, was nix anderes macht, als immer nur den Port 0x3bc (mit _inp(3bc)) einzulesen und auf einem DOS-Fenster auszugeben. Sobald man aber ein aderes Programm aufruft, bleibt das Programm stehen und schneidet erst dann wieder das LPT Register mit, wenn das andere Programm fertig ist. (War eigentlich klar, wollte nur sehen ob der _inp() Befehl tut) Weiss Jemand wie man in C++ Interrupts einfängt? Meine Idee ist es den INT 7 zu benutzen, um bei jedem Zugriff auf den Druckerport neuen Wert mit einem Programm einlesen zu lassen. Also das Programm soll bei jedem Interrupt z.B. mit _inp() den Wert aus dem 0x3bc Register lesen. Wie geht das?
Das geht gar nicht, weil der betreffende Interrupt weder ausgelöst wird, wenn ein Schreibzugriff auf das Register stattfindet, noch Du in einer Usermode-Applikation auf Hardwareinterrupts zugreifen kannst. Das ist Devicetreibern vorbehalten. Aber, selbst wenn Du einen Devicetreiber schreiben würdest, brächte das nichts, weil eben der Interrupt von der Hardware nicht bei Schreibzugriffen ausgelöst wird. Lesezugriffe auf den Port bringen übrigens auch nichts, weil dieser nicht die letzten ausgegebenen Daten speichert. Du wirst nicht umhinkommen, Deine Strategie zu überdenken. Fang damit an, daß Du Dich darüber informierst, wie die Parallelporthardware im PC aufgebaut ist. Dann kannst Du Dir noch mal meinen Beitrag vom 28.8. durchlesen.
... im Emulator laufen lassen, diesen so umprogrammieren das er die Hardwarezugriffe mitschreibt, eine Arbeit die sich schon wer gemacht hat ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.