WM_DEVICECHANGE does notify about devices which were inserted or removed from main connection ports, e.g. USB, card readers with direct connection to the bus (like one in laptops) or optical disks, but isn't fired for USB card readers. Evaluate if SHChangeNotifyRegister gives better results.
References:
http://www.codeproject.com/Articles/3226/Using-the-shell-to-receive-notification-of-removab
https://msdn.microsoft.com/de-de/library/windows/desktop/bb762120%28v=vs.85%29.aspx