Проблема с драйвером-фильтром

Тема в разделе "WASM.NT.KERNEL", создана пользователем cc, 7 фев 2007.

  1. cc

    cc New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2006
    Сообщения:
    34
    Здравствуйте. Возникла задача осуществить контроль сменных USB-носителей (флешек), и через некоторое время возникла проблема: а как собственно блокировать устройство если мы не хотим разрешить работу с ним пользователю? Я пришел к выводу, что решается эта проблема путем создания драйвера фильтра, однако при реализации возникли кое-какие проблемы/вопросы.

    Итак, вот мои действия:
    1. По имени устройства делаю IoGetDeviceObjectPointer;
    2. Нахожу указатель на PDO (полученный указатель на PDO верен, проверял в WinObjEx);
    3. Создаю свой девайс, заполняю в нем массив MajorFunction;
    4. Затем делаю IoAttachDeviceToDeviceStack, фильтр аттачится успешно (это видно в WinObjEx и я успешно получаю IRP'ы).

    Исходя из того, что IRP'ы предназначенные фильтруемому девайсу я получаю, я делаю вывод что все сделано правильно.

    Делаю при получении запроса IoSkipCurrentIrpStackLocation и return IoCallDriver(...), все работает норм (это в случае если работа с этим устройством разрешена), когда же я хочу заблокировать устройство, то мне надо не пустить IRP дальше по стеку фильтров, для этого я делаю IoCompleteRequest(...) и НЕ вызываю IoCallDriver, однако фильтруемое устройство все равно получает IRP'ы! В чем же моя ошибка и как мне следует делать чтобы IRP'ы не шли дальше по стеку, подскажите пожалуйста.

    Буду признателен любой помощи.
     
  2. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Получает IRP или общается с высокоуровневыми драйверами?
    Перехват IRP не гарантирует полного контроля за USB-устройствами. Начиная с Win XP высокоуровневые драйверы могут использовать для общения с драйверами шины и порта механизм интерфейсов. Как в этом случае обслуживаются драйверы-фильтры не знаю. Но если по стеку проходят IRP типа IRP_MN_QUERY_INTERFACE, то попробуй копнуть в эту сторону
     
  3. cc

    cc New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2006
    Сообщения:
    34
    В таком случае подскажите пожалуйста, каким образом возможно осуществить контроль и соответственно блокировку флешки. Также буду признателен линкам которые могут помочь мне в решении сей задачи.
     
  4. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    Такое ощущение что все ринулись писать драйвер фильтр для usb ;)))
     
  5. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    Посмотри Devcon, где твой драйвер расположился: сверху USBSTOR или снизу, тебе нужно быть снизу)))