Plug and Play im Win2k in der Konsole



  • ...vielleicht kannst du uns ja mal dein code zeigen...



  • Also ich für meinen Teil verwende RegisterDeviceNotification. Dazu erzeuge ich einen extra Thread. In diesem Thread wird dann ein unsichtbares Fenster erzeugt, das als Target für die Notifications dient. Im Zusammenspiel mit meinen HIDs funktioniert das jedenfalls prima.

    Da Du damit Deine eigene MessageQueue aufbaust, kann Dir egal sein, ob das Programm in der Console läuft oder nicht.

    Zum Problem kann höchstens das Erzeugen des Threads in der Dll sein. Wenn die Dll entlädt, bevor der Thread geendet hat, könnte es zum Crash kommen (deswegen lagere ich sowas übrigens immer in separate Exen aus (das hat dann aber auch noch weitere Vorteile)).

    Naja, wie auch immer. Sehe es als Anregung an.



  • wie machst du ein unsichtbares window ??

    so könnte ich es probiern stimmt.



  • Sodala bin mittlerweile schlauer.

    Das problem ist das der Treiber nicht entladen werden kann solange eine Application / DLL was auch immer drauf zugreift. -> bleibt der Status gleich da ja noch etwas da ist.

    Jetzt muss ich schaun wie des mit den Window geht usw. damit ich des RegisterDeviceNotification machen kann.

    anybody know it ?



  • Ein Fenster erzeugst Du mit CreateWindow/ Ex. Oder was meinst Du?



  • kannst du mal eben den code posten ?

    also fürs Window erzeugen, Registriern und wie die Funktion aussehen muss die den Notification erhält ? bzw. wo die sein muss ?



  • sodala bin wieder schlauer -)

    jetzt erzeuge ich (in der INIT funktion der DLL) den Handle (createFile) dann erzeuge ich das unsichtbare fenster (CreateWindow) dann mach ich den RegisterDeviceNotification-dingens .. und jo dann gibt der gleich 4 mal das richtige aus. (hab in der Funktion einfach mal printf("******** test *******"); gemacht, damit ich seh ob der überhaupt dareinkommt).

    Allerdings macht er nacher nix mehr wenn ich ein / ausstecke?!?

    Ein Problem könnte sein, das ich die INIT funktion in der DLL aufrufe, und dann nachdem die INIT funktion fertig ist, alles wieder weg ist ? Oder bleibt von der Dll irgendetwas im Speicher ? nicht oder ?

    Ich habe zum Testen der dll ein normales konsolen-programm das einfach die funktionen aufruft.



  • Wo hast Du Deine MessageLoop untergebracht?



  • MessageLoop ?



  • Wudu schrieb:

    MessageLoop ?

    Der Ort, an dem Messages aus der Schlange abgeholt und verteilt werden. Genaueres erfährst Du im Windows-Buch Deiner Wahl, dort einfach mal Kaiptel 1 lesen. Ich kann Dir das jedenfalls nicht besser erkären, sorry.


Anmelden zum Antworten