Hallo zusammen, ich arbeite mit ner Win32-Anwendung in C und hab
folgendes Problem:
Ich möchte gern mit der WM_DEVICECHANGE Message das Abziehen eines
USB-Geräts überwachen. Nun erhalte ich die Meldung aber bei allen
USB-Geräten. Daher versuche ich nun, den LPARAM der Message zu
analysieren, speziell den dbcc_name. Ich kann diesen Namen (wchar_t)
auch über eine MessageBox ausgeben:
1 | PDEV_BROADCAST_DEVICEINTERFACE b = (PDEV_BROADCAST_DEVICEINTERFACE) lParam;
|
2 | MessageBox(HWND_DESKTOP, b->dbcc_name, g_pszAppName, MB_OK);
|
Aber wenn ich selbst auf den Inhalt von dbcc_name zugreife, bekomme ich
eine schöne "unbehandelte Win32 Ausnahme". Bsp:
1 | wchar_t* test = (wchar_t*)malloc(100);
|
2 | test[0] = b->dbcc_name[0];
|
oder
1 | wchar_t* test = new wchar_t;
|
2 | wchar_t vidpid = (wchar_t)"Vid_04b4&Pid_1111";
|
3 |
|
4 | if (wcsstr(b->dbcc_name, &vidpid))
|
5 | MessageBox(HWND_DESKTOP, TEXT("JUHU!!!"), g_pszAppName, MB_OK);
|
Habt ihr ne Idee, was ich falsch mache? Oder kennt ihr nen anderen Weg,
die USB-Geräte zu unterscheiden?
Gruß
DS