Zitat von
Robert Marquardt:
RegisterDeviceNotification sollte man nicht brauchen. Es ist dafuer zustaendig das man alle WM_DEVICECHANGEs fuer ein bestimmtes Device bekommt.
Die Basis-DEVICECHANGEs bekommt man auch so.
Klar, nur leider nicht für alle Geräteklassen. Daher mein Tip.
Im PSDK steht (Hervorhebung meinerseits): The DBT_DEVICEARRIVAL and DBT_DEVICEREMOVECOMPLETE events are automatically broadcast to all top-level windows for port devices. Therefore, it is not necessary to call RegisterDeviceNotification for ports, and the function fails if the dbch_devicetype member is DBT_DEVTYP_PORT. Volume notifications are also broadcast to top-level windows, so the function fails if dbch_devicetype is DBT_DEVTYP_VOLUME. OEM-defined devices are not used directly by the system, so the function fails if dbch_devicetype is DBT_DEVTYP_OEM.
Kann mein Fehler sein, aber ich sah Smartcards nicht als "port devices" an ...
Aber als übersetzer der entsprechenden
API-Teile bei den JEDIs kennst du dich dabei sicher besser aus.
Die Benutzung von RegisterDeviceNotification ist wunderbar im
PSDK beschrieben, einfach durchlesen und das erarbeitete anwenden. Hat man das ein paar Mal gemacht, hat man das Schema raus und braucht beim nächsten mal nur noch gezielt nachschauen wie diese oder jene
API-Funktion aufgerufen wird.