Forum: PC-Programmierung Messageboxen im UMDF möglich?


von DanS S. (dns712)


Lesenswert?

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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von DanS S. (dns712)


Lesenswert?

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?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von DanS S. (dns712)


Lesenswert?

Ü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?

von Peter II (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von DanS S. (dns712)


Lesenswert?

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
Noch kein Account? Hier anmelden.