2009-06-15 6 views

Antwort

1

Sie müssen eine DEV_BROADCAST_HEADER* an eine DEV_BROADCAST_DEVICEINTERFACE* übertragen. Sie dürfen dies nur dann tun, wenn dbch_devicetype==DBT_DEVTYP_DEVICEINTERFACE.

Sie erhalten DEV_BROADCAST_HEADER* als LPARAM von WM_DEVICECHANGE.

Um etwas Nützliches mit dbcc_name, zu tun, müssen Sie es an SetupDiOpenDeviceInterface() übergeben. Dies wird Ihnen eine SP_DEVICE_INTERFACE_DATA mit einer SP_DEVINFO_DATA geben. Sie können dann Funktionen wie SetupDiGetDeviceRegistryProperty aufrufen, um mehr über das Gerät zu erfahren.

+0

Was ist, wenn dbcc_name leer ist? – snicker

+0

Gute Frage, es ist nicht als leer dokumentiert. Ich nehme an, es könnte leer sein, wenn es ein neues Gerät ist (d. H. Noch nie mit dem PC verbunden war), und es wird immer noch installiert. Aber in diesem Fall würde ich eine neue Broadcast-Nachricht erwarten, wenn das Gerät vollständig installiert ist, diesmal mit 'dbcc_name' gesetzt. (Anmerkung: Spekulationen, ich habe das nie gesehen) – MSalters

1

Bitte beachten Sie den CodeSet. Wenn es Unicode ist. Die Daten sind \\ 0 ......