Hallo zusammen, beschäftige mich seit kurzem mit Treiberprogrammierung. Habe einen UMDF-Treiber geschrieben der Daten über eine COM-Schnittstelle ausliest und in die Registry speichert. Kann man aus dem UMDF eine MessageBox oder eine Dialog öffnen?
Das wird ziemlich sicher nicht funktionieren, denn Dein Treiber läuft zwar "im Usermode" (statt im Kernelmode), aber dennoch nicht in der Windows-Sitzung, in der z.B. Du angemeldet bist, sondern z.B. in der Sitzung von "System". Und die hat, wie andere Hintergrundsitzungen, keinen Zugriff auf interaktive Sitzungen. Grund dafür, warum das Ding nicht in Deiner Sitzung läuft, ist, daß der Treiber natürlich auch dann funktionieren soll, wenn gerade kein Benutzer angemeldet ist.
Okay das klingt plausible, danke für die schnelle Antwort. Besteht denn die Möglichkeit Systemmeldungen anzuzeigen wie z.B. "Akku fast leer" oder ähnliches?
Je nachdem, welche Windows-Version es ist, gibt es möglicherweise Schnittstellen für das "Windows-Benachrichtigungscenter" o.ä., aber ob man darauf aus einem Devicetreiber zugreifen kann, entzieht sich meiner Kenntnis. Mir ist allerdings auch unklar, warum Du für eine Aufgabe wie dem Auslesen einer seriellen Schnittstelle einen Devicetreiber programmieren musstest; was sind die Hintergründe für diese Designentscheidung? Ein simpler Dienst ("Service") hätte hier völlig gereicht.
Über die Schnittstelle werden Akkudaten eingelesen, es soll am ende ein Akkutreiber werden. Mir ist jedoch noch nicht ganz klar wie der Akkustatus angezeigt werden kann. Optimal wäre eine Zugriff auf die BatteryNotifycation von Windows 10 aber das ist so einfach nicht möglich oder?
Rufus Τ. F. schrieb: > Ein simpler Dienst ("Service") hätte hier völlig gereicht. ein Dienst sollte auch nicht mit einer GUI arbeiten. Für eine GUI schreibt man ein Extra Programm, was im Autostart liegt und mit den Dienst kommuniziert.
Peter II schrieb: > ein Dienst sollte auch nicht mit einer GUI arbeiten Das war nicht der Punkt. > Über die Schnittstelle werden Akkudaten eingelesen, es soll am ende ein > Akkutreiber werden. Dann wirst Du Dir die relevanten Teile des Windows-DDK ansehen müssen, in denen das Batteriemanagement resp. das USV-Management beschrieben sind.
Ich habe mal in die WDK für Batterymanagement rein geschaut, aber ich bin ein Neuling was Treiber angeht und dazu muss man auf Kernel ebene arbeiten. Das was ich da so gesehen habe hat mich ein wenig verwirrt da ich auch keine gute Beschreibung vom Framework gefunden habe. Habe schon "leere" Treiber erstellt und versuch zu debuggen aber das klappt auch nur mit mäßigem Erfolg, da der debugger Breakpoints überspringt und ich nicht weiß wieso... Hatte gehofft das es auch einfacher über eine API geht. :D
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.