Получение имени файловой системы

Тема в разделе "WASM.NT.KERNEL", создана пользователем vasalvit, 30 мар 2010.

  1. vasalvit

    vasalvit New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2008
    Сообщения:
    53
    Здравствуйте.

    Есть кард-ридер. При подключении к компу создаются 4 диска (E, F, G, K). Но система создаёт для него одно устройства. Насколько я понял, разные диски - просто разные LUN (Logical Unit Number).

    Вопрос. Каким образом можно определить, что (например) LUN=0 для E.

    Устройство для кард-ридера имеет имя \Device\00000078.

    При помощи WinObj выяснил, что E: отображается на \Device\Harddisk1\DP(1)0-0-6. И всё. Больше никаких ссылок не нашёл.
     
  2. vasalvit

    vasalvit New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2008
    Сообщения:
    53
    Возможно моя проблема решена.

    Мне нужен фильтр 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 фильтра - по одному на диск. Получение имени файловой системы пока не пробовал, но в теории это должно быть намного проще.