Никак не получается определить установку флеш карты в кардридер.
Пытался сделать это с помощью RegisterDeviceNotification, если стоит DBT_DEVTYP_DEVICEINTERFACE, RegisterDeviceNotification проходит успешно, но событие не возникает (использую DEVICE_NOTIFY_ALL_INTERFACE_CLASSES)
если DBT_DEVTYPE_HANDLE, заругистрировать событие не получается, делаю так:
DEV_BROADCAST_HANDLE NotificationFilter;
NotificationFilter.dbch_size=sizeof(DEV_BROADCAST_HANDLE);
NotificationFilter.dbch_devicetype=DBT_DEVTYP_HANDLE;
NotificationFilter.dbch_handle=Form1->Handle;
pdevNotification = RegisterDeviceNotification(Form1->Handle,&NotificationFilter,DEVICE_NOTIFY_WINDOW_HANDLE);
pdevNotification в результате NULL, ошибка: The service has returned a service-specific error code.
Какое событие возникает при появлении флешки, как его поймать?
При установке карты, windows выдает окно со списком действий с ней...
Разобрался с вопросом, теперь делаю так:
FileHANDLE=CreateFile("\\\\.\\m:",GENERIC_READ, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);
if (FileHANDLE == INVALID_HANDLE_VALUE) ShowMessage("Could not open file.");
NotificationFilter.dbch_size=sizeof(DEV_BROADCAST_HANDLE);
NotificationFilter.dbch_devicetype=DBT_DEVTYP_HANDLE;
NotificationFilter.dbch_handle=FileHANDLE;
pdevNotification = RegisterDeviceNotification(Form1->Handle,&NotificationFilter,DEVICE_NOTIFY_WINDOW_HANDLE);
pdevNotification не равен NULL, но сообщения об попытки извлечения устройства я не получаю (диск m

WM_DEVICECHANGE я не получаю!
При вытаскивании флешки Windows ничего не дает сделат, я так понимаю из-за того, что открыт раздел.
Чего делать, как победить?