Строки в ядре. нужны советы

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

  1. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    В общем, нужны советы.
    Ситуация такая: есть драйвер-минифильтр он следит за файловой активностью некоторых процессов, есть прога которая работает с его настройками (через устройство которое создаёт драйвер).
    Сейчас драйвер принимает все строки (имена процессов и имена файлов) в обычном DOS-формате, конвертит их в нормальные Native-имена и инициализирует для каждой строки UNICODE_STRING. потом при фильтрации работает с готовыми UNICODE_STRING.
    Вопросы:
    1. Алгоритм конвертирования из DOS в Native понятен, но как конвертнуть из Native в DOS? (Программа отправит драйверу строки типа "C:\...", а получит уже "\Device\.....")
    2. Правильно ли сравнивает функция RtlCompareUnicodeString русские строки если указан CaseInSensitive=TRUE
     
  2. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Кратко.
    Перечислить буквы.
    Сравнить имена целевых девайсов.
    Взять букву, если совпало, и приклеить остаток пути.
    Ну и не лишним будет вот это почитать, для повышения образованности, так сказать.

    Как-то не проверял, но думаю, да - Unicode же. Впрочем, лучше перепроверить, конечно, это не сложно.
     
  3. tchunya

    tchunya New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2008
    Сообщения:
    29
    FilterGetDosName, IoQueryFileDosDeviceName
     
  4. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    доступна ли функция FilterGetDosName в ядре? я думаю нет, но в моём случае как вариант подойдёт, конвертить имена после получения их от драйвера
     
  5. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Да, верно, всё время забываю, что в минифильтрах всё несколько проще. Интересно только, а как оно с сетевыми Native-именами работает, корректно ли?
     
  6. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Нет, конечно, ибо "Minifilter User-Mode Application Functions".
     
  7. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    короче решил, зачем возлагать на драйвер лишний функционал? Вся работа по конвертированию строк будет возложена на user-mode приложение, драйвер будет принимать только native-имена (будет проверять только их валидность) и выдавать приложению тоже native-имена. Приложение будет конвертировать из DOS в native через QueryDosDevice, а из native в DOS через FilterGetDosName.

    и ещё вопрос: вообще какие могут быть косяки с сетевыми именами?
    1. с именами сетевых дисков
    2. с именами типа \\comp\papka\file или \\192.168.10.212\papka\file