Необходимо в user-mode получать нотификацию подключения USB Flash. Пробую воспользоваться Removable Storage Manager Functions Код (Text): HANDLE hSession = OpenNtmsSession( NULL, NULL, 0 ); if( hSession != INVALID_HANDLE_VALUE ) { NTMS_NOTIFICATIONINFORMATION ntms_notification; hNotify = OpenNtmsNotification( hSession, NTMS_DRIVE ); if( hNotify == INVALID_HANDLE_VALUE ) { DWORD error = GetLastError(); ShowError( L"OpenNtmsNotification", error ); CloseNtmsSession( hSession ); return error; } while( wait_notification ) if( WaitForNtmsNotification( hNotify, &ntms_notification, INFINITE ) == ERROR_SUCCESS ) {......} } Работает, но часто и густо, при первом же запуске функция OpenNtmsSession завершается с ошибкой (устройство не готово), и работает когда со второго, а когда и с 5го раза. Как разрулить проблему? Кроме всего прочего, возник вопрос, будет ли это работать на этапе запуска процесса Winlogon? Возможно, кто-то сможет предложить другие варианты, выслушаю. [...edit...] Кажется кое-что начинаю понимать... если юзать Removable Storage Manager, стартует новый процесс - rsmsink.exe ( Removable Storage Sink Layer ) стартует его svchost.exe... по дефолту этого процесса нету, это обьясняет почему может не заработать с первой попытки... Тем более, очевидно, что при запуске Winlogon не то что svchost-a нету, нету даже services.exe ... прийдется привязывать запуск нотифи-треда к более позднему событию... Но вот проблему с NtmsSession как корректно решить - помогает использование нескольких попыток вызова функции с таймаутом. Но как-то криво это выходит Догадываюсь, что нужно попробовать запустить какую-то службу... [...edit...] Блин ERROR_NOT_READY RSM service has not started. The application should wait and retry. P.S топик пока не закрываю - может кто еще подскажет способы в user-mode получать нотификацию подключения USB Flash, и к какому событию привязать запуск нотифай треда, чтобы службы гарантированно работали.
Отлавливать broadcast сообщение WM_DEVICECHANGE (с wParam==DBT_DEVICEARRIVAL) ? Хотя, учитывая этот метод скорее всего не прокатит, но можно попробовать...