Event bei neu erkannter Hardware?



  • Hallo,

    ich suche nach dem Event, das erzeigt wird, wenn eine neue Hardware erkannt wurde.
    Wie könnte dieser lauten?

    Grüße
    TheNoName



  • was der Titel sagt.



  • Jain, danke trotzdem.
    Leider wird hier z.B. bei einer Maus immer DBT_DEVNODES_CHANGED gesendet.
    Und das beim Einstecken und Ausstecken.
    Damit kann ich keinen Unterschied erkennen, nur halt, das was passiert ist.
    Speichersticks arbeiten korrekt mit DBT_DEVICEARRIVAL, andere Geräte nicht.
    z.B. USB Mäuse, Tastaturen und HID Geräte gehen nicht.





  • thenoname schrieb:

    Jain, danke trotzdem.
    Leider wird hier z.B. bei einer Maus immer DBT_DEVNODES_CHANGED gesendet.
    Und das beim Einstecken und Ausstecken.
    Damit kann ich keinen Unterschied erkennen, nur halt, das was passiert ist.
    Speichersticks arbeiten korrekt mit DBT_DEVICEARRIVAL, andere Geräte nicht.
    z.B. USB Mäuse, Tastaturen und HID Geräte gehen nicht.

    Nach der Doku aber seltsam:

    wParam
    Event that has occurred. This parameter can be one of the following values from the Dbt.h header file. Value Meaning
    DBT_CONFIGCHANGECANCELED
    0x0019 A request to change the current configuration (dock or undock) has been canceled.
    DBT_CONFIGCHANGED
    0x0018 The current configuration has changed, due to a dock or undock.
    DBT_CUSTOMEVENT
    0x8006 A custom event has occurred.
    Windows NT 4.0 and Windows 95: This value is not supported.
    DBT_DEVICEARRIVAL
    0x8000 A device or piece of media has been inserted and is now available.
    DBT_DEVICEQUERYREMOVE
    0x8001 Permission is requested to remove a device or piece of media. Any application can deny this request and cancel the removal.
    DBT_DEVICEQUERYREMOVEFAILED
    0x8002 A request to remove a device or piece of media has been canceled.
    DBT_DEVICEREMOVECOMPLETE
    0x8004 A device or piece of media has been removed.
    DBT_DEVICEREMOVEPENDING
    0x8003 A device or piece of media is about to be removed. Cannot be denied.
    DBT_DEVICETYPESPECIFIC
    0x8005 A device-specific event has occurred.
    DBT_DEVNODES_CHANGED
    0x0007 A device has been added to or removed from the system.
    Windows NT 4.0 and Windows Me/98/95: This value is not supported.
    DBT_QUERYCHANGECONFIG
    0x0017 Permission is requested to change the current configuration (dock or undock).
    DBT_USERDEFINED
    0xFFFF The meaning of this message is user-defined.

    lParam
    Pointer to a structure that contains event-specific data. Its format depends on the value of the wParam parameter. For more information, refer to the documentation for each event.

    Erwartet man beim auftreten dieses Events das andocken oder entfernen eines Wechselspeichermediums (Stick etc) so lässt sich die Änderung mE über die Volume API's leicht nachvollziehen.



  • Hallo,

    ich muss mich korrigieren, es kommt leider immer DBT_DEVNODES_CHANGED = Siebenerbotschaft. Auch Speichersticks oder USB Comports, welche in diversen Foren beschrieben werden kommen bei mir als DBT_DEVNODES_CHANGED an. Allerdings ist das wohl ein weit verbreitetes Problem das viele haben und stattdessen device notifications durchstöbern.
    Kann es sein, das diese Funktion nur mit bestimten Motherboards und deren USB Controller funktioniert?
    Selbst die vorkompilierten Demoprogramme von Codeproject erkennen hier nichts.

    Der Artikel ist gut 👍
    Besten Dank



  • Sage, was für Betriebssystem ist das?



  • Hi,

    es ist XP Professional.
    Unter Vista im Emulator funktioniert es leider auch nicht 😞

    Immer nur DBT_DEVNODES_CHANGED, ohne Info über ankommend oder gehend.



  • hm klar.
    Eine nullachtfünfzehn - Message.

    Tipp: Schaue Dir dazu diese Funtion an:

    RegisterDeviceNotification() mittels dieser lassen sich diese Broadcast-Device-Messages näher definieren, so dass dann brauchbare Werte kommen.

    Leider habe ich diese Funk. noch nie verwendet.


Anmelden zum Antworten