Возможно, это ошибка драйверов устройств (я, конечно, думаю, что это так), но все они, похоже, работают одинаково ... НЕТ. Поэтому на данный момент я не думаю, что вы можете заставить разработчиков драйверов устройств изменять характеристики своих устройств, даже если Microsoft (вероятно, крупнейший разработчик) заставит вас поверить, что это должно работать именно так (не работает для моего драйвера для Microsoft Windows 7). Вставка SD-карты в USB-устройство просто не вызывает сообщение WM_DEVICECHANGE.
Используйте SHChangeNotifyRegister для устройств мультимедийного типа. Это не требует регистрации devicenotification. И вы можете получить букву диска через SHGetPathFromIDList. Используйте SHCNE_MEDIAINSERTED и SHCNE_MEDIAREMOVED.
Используйте устройство ONDeviceNotify, если вы ищете устройство, а не мультимедийное устройство, или вы можете написать собственный драйвер устройства.
См. Код этого комментария CodeProject - Ловушка сообщений Windows