Здравствуйте. Есть кард-ридер. При подключении к компу создаются 4 диска (E, F, G, K). Но система создаёт для него одно устройства. Насколько я понял, разные диски - просто разные LUN (Logical Unit Number). Вопрос. Каким образом можно определить, что (например) LUN=0 для E. Устройство для кард-ридера имеет имя \Device\00000078. При помощи WinObj выяснил, что E: отображается на \Device\Harddisk1\DP(1)0-0-6. И всё. Больше никаких ссылок не нашёл.
Возможно моя проблема решена. Мне нужен фильтр STORAGE. Я садился фильтром на все USB устройства: * для устройств, которые выбирали интерфейс HUB я перехватывал IRP_MN_QUERY_DEVICE_RELATIONS и ставил свои фильтры шин * для устройств, которые выбирали интерфейс STORAGE я перехватывал IOCTL_INTERNAL_USB_SUBMIT_URB и обрабатывал Проблема возникла, когда user-mode приложению потребовалось знать, какие диски я фильтрую. Порыскав в интернете и WDK, а также поэкспериментировав с IrpTracker и DeviceTree я пришёл к выводу что для устройств STORAGE надо также перехватывать IRP_MN_QUERY_DEVICE_RELATIONS, но ставить STORAGE фильтры. Как результат - для моего кард-ридера создалось 4 STORAGE фильтра - по одному на диск. Получение имени файловой системы пока не пробовал, но в теории это должно быть намного проще.