![]() |
LptAccess-Treiber/API - Betatester gesucht.
Liste der Anhänge anzeigen (Anzahl: 1)
Beta-Test
So. Ich brauche jetzt mal ein paar Mutige, die mindestens Windows 2000 installiert haben (NT4 könnte funktionieren, ich kann und will es aber nicht garantieren, da die entsprechende Software bei meinem MSDN-Abo nicht mehr enthalten ist! Der Treiber selbst ist soweit fertig und wird von mir jetzt noch einigen kleinen Tests unterworfen. Danach kann die Betaphase starten. Also, wer hat Windows 2000 aufwärts, ein wenig Mut zum Risiko (der Rechner kann mit einem BlueScreen abstürzen) und mindestens einen LPT-Port?! :mrgreen: Den Treiber habe ich dann natürlich schon kurz getestet, aber erstens habe ich keine Geräte die am LPT hängen und direkt angesprochen werden wollen (kann also nur Laden/Entladen und die "nicht-spezifischen" IOCTLs testen) und zweitens brauche ich eine breitere Testplattform. Den mutigen Testern winkt eine Erwähnung in der Dokumentation. Was brauche ich von den Testern:
Sollte jemand das Bedürfnis verspüren schon während der Betaphase den Code für den Treiber haben zu wollen, so kann ich diesen über PM gern zuschicken (diejenigen sollten dann aber auch Kenntnisse in der Treiberprogrammierung vorweisen können, weil mir in der Betaphase niemand damit hilft Fragen zu stellen!). Lizenzen Die Lizenz des Treibers wird die GPL sein (erst nach der Beta!!!). Ja, richtig gehört. Das hat damit zu tun, daß Verbesserungen am Code auch zurückfließen sollen. Allerdings wird eine Binärdatei, welche den Treiber als Daten oder in einer Ressource einbindet, nicht automatisch von der GPL erfaßt werden (dies gilt nur für die Orginal-Distro!). Den unmodifizierten Quellcode kann man ja dann jederzeit von der Orginalseite runterladen, weshalb ihr ihn nicht extra bereitstellen müßt. Nach Beendigung einer Betaphase biete ich freiwilligen Support insofern es mir meine Zeit erlaubt - wer mehr will oder braucht kann mit mir einen Wartungsvertrag abschließen. Der Support wird sich allerdings nur auf "autorisierte Distributionen" erstrecken. Das ist nur der Code der Orginal-Distro in einer bekannten Form (der problematische Treiber muß mir mitgeliefert werden und ich vergleiche die MD5 erstmal mit meinen veröffentlichten Versionen). Die APIs zum Ansprechen werden als C und Delphi-Modul mitgeliefert. Dieser Usermode-Teil steht dann unter der ZLIB-Lizenz. Während der allerersten Betaphase dürfen weder der Treiber noch die Usermode-Module weiterverbreitet werden! Die obigen Lizenzbedingungen treten erst in Kraft sobald die erste Stable veröffentlicht wurde. Gruß, |
Re: LptAccess-Treiber/API - Betatester gesucht.
Hmm, ja ich melde mich mal freiwillig. Ich hab noch einen Drucker und Scanner für den LPT1. Mal sehen, ob ich zeit habe dann bastel ich mir mal was zumannen und spiele mit dem Treiber rum.
System: WindowsXP Prof. SP2 In einer VM kann ich auch auch auf den LPT kommen, da könnte ich dann mehrere Systeme probieren (Win2k + beliebiges SP auch NT4 - Das DDK könnte ich noch haben). |
Re: LptAccess-Treiber/API - Betatester gesucht.
Hallo Olli,
wird dein Treiber auch Pin 10 auswerten? Also mit eigener Interrupt-Handlerroutine? Wenn ja, würde mich das auch interessieren. MfG Thorsten |
Re: LptAccess-Treiber/API - Betatester gesucht.
Zitat:
|
Re: LptAccess-Treiber/API - Betatester gesucht.
Hmm.... ich hab' ihr 'n LC - Display am parallelen Port hängen. Kann ich ja mal im Laufe der nächsten Woche testen. Dann gibt's auch die Systeminfos dazu.
|
Re: LptAccess-Treiber/API - Betatester gesucht.
Für alle die sich's selber machen wollen :mrgreen: hängt oben jetzt ein Archiv dran. Ich hatte noch eine letzte ungetestete Änderung gemacht, also nur die Supermutigen ran da ;)
Die IOCTLs sind in der Textdatei dokumentiert. Für das Setzen des Timeouts wird ein ULONG in Millisekunden gefordert ... Der Rest warte bitte noch ein wenig bis ich den Usermode-Teil auch fertsch habe ... |
Re: LptAccess-Treiber/API - Betatester gesucht.
So, oben ist jetzt das Archiv aktualisiert worden.
Ich habe noch so einige kleinere und größere (auch potentielle) Fehler ausgeräumt. Die Portdaten werden jetzt im PagedPool abgelegt, was die Wahrscheinlichkeit von Allokationsproblemen herabsetzen soll. Dadurch wurde die Device Extension auch drastisch verkleinert, weil sie jetzt nur noch einen Pointer zu den Portdaten enthält. Vermutlich werde ich noch während der Beta einen IOCTL hinzufügen der es erlaubt dynamisch die Portdaten zu aktualisieren (theoretisch kann ja ein LPT von einem Bustreiber jederzeit hinzugefügt werden - ob nun simuliert oder in Hardware soll mal egal sein. MD5 der LptAccss.sys ist c9192d47a88099101841d67df8221d64. Die Dateiversion bei den Dateieigenschaften sollte mit 1.0.0.120 angezeigt werden. Was mich noch interessieren würde ist, ob es Sinn machen würde, daß man einen Puffer mit mehreren Bytes über einen Registerbereich des jeweiligen Ports ausgibt? Wenn ja, kann ich diese Funktionalität noch hinzufügen. Durch diese Verzögerung, kann es noch eine Weile dauern bis ich den Usermode-Teil nun fertig habe ... Da ich selber keine LPT-Geräte zum ansteuern habe, brauche ich da etwas "Nachhilfe" ;) Hinweis: Wer die Strukturen aus IOCTL.txt schon konvertiert hatte, sollte jetzt nicht die Änderung übersehen. Ich habe noch ein Member zu LPT_INFORMATION hinzugefügt: NumParallelPorts!
Code:
Die Anzahl der unterstützen Ports ist auf 100 beschränkt, was sich aber jederzeit bei Bedarf unproblematisch erhöhen ließe (ist nur 2-stellig wegen eines Puffers, der nur 2 Stellen halten kann). Diese Ports sind die FDOs \Device\Parallel0 .. \Device\Parallel99, insofern vorhanden.
// Buffer for IOCTL_LPTACCSS_QUERY_INFORMATION
typedef struct _LPT_INFORMATION { ULONG cbLength; // Versioning for this structure ULONG NumParallelPorts; LARGE_INTEGER OriginalController; PUCHAR Controller; ULONG SpanOfController; INTERFACE_TYPE InterfaceType; ULONG BusNumber; ULONG InterruptLevel; ULONG InterruptVector; KAFFINITY InterruptAffinity; KINTERRUPT_MODE InterruptMode; } LPT_INFORMATION, *PLPT_INFORMATION; Starten/Stoppen: Man sollte den Treiber einfach mit W2K_LOAD, einem Tool von Sven B. Schreiber, laden unt entladen können. Wenn es währenddessen zu Problemen kommt, bitte direkt per Email melden: Assarbad att gmx dott info Syntax: w2k_load LptAccss.sys w2k_load LptAccss.sys /unload |
Re: LptAccess-Treiber/API - Betatester gesucht.
|
Re: LptAccess-Treiber/API - Betatester gesucht.
Zitat:
Wie gesagt, ich bin gern bereit da weiterzuhelfen. Vielleicht kannst du mir mal eine PM schicken, wo du mal auf Details eingehst, was du dir von dem Interrupt-Handling erwartest (ich vermute irgendeine Art von Benachrichtigung über Ereignisse bei der Hardware?!?). Zitat:
Zitat:
|
Re: LptAccess-Treiber/API - Betatester gesucht.
So, die Delphi-Unit ist jetzt fertig.
Delphi-Quellcode:
Ich gehe noch daran sie zu testen, falls sich allerdings schon jemand in einer VM dran wagen will, immer los. Ich gebe dann demnächst den Startschuß zum Betatest.
function LptOpen(LptNumber: DWORD): DWORD; stdcall;
function LptClose(Handle: DWORD): Boolean; stdcall; function LptRead(Handle: DWORD; Register: DWORD; var Value: Byte): Boolean; stdcall; function LptWrite(Handle: DWORD; Register: DWORD; Value: Byte): Boolean; stdcall; function LptGetInfo(Handle: DWORD; var Info: LPT_INFORMATION): Boolean; stdcall; function LptGetLastError(): DWORD; stdcall; procedure LptSetOpenTimeout(Timeout: DWORD); stdcall; omata's Idee wird auch noch implementiert werden, so daß wir am Ende einen Treiber haben, der auch über Interruptsignale informiert und somit dem Programm ermöglicht auf diese zu reagieren. Als "LptNumber" bei den obigen Funktionen gibt man 0 für LPT1 an, 2 für LPT3 usw. Die Typen werden eventuell nochmal angepaßt. Anstatt die DLL einzubinden, kann man logischerweise auch direkt die Unit benutzen. Der Treiber muß vorher "manuell" gestartet werden (w2k_load, siehe oben). Gruß, |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz