minispy filter + FltGetFileNameInformation = нет русских букв

Тема в разделе "WASM.NT.KERNEL", создана пользователем spok, 13 дек 2011.

  1. spok

    spok New Member

    Публикаций:
    0
    Регистрация:
    13 дек 2011
    Сообщения:
    1
    Здравствуйте!

    Начинаю вникать в тему драйверов.

    И под задачу идеально подходит minispy из WDK с минимальными изменениями (пока ещё ничего под себя не изменял).
    Но заметил, что при обращении к файлам, содержащим не-ASCII-символы (например, русские буквы) вместо них в лог печатается что-то вроде <NO NAME: NormalizeStatus=c01c0018 OpenedStatus=c01c0005>
    Нашёл, что эта строка получается из-за... не знаю, почему. Но формируется имя файла вызовом:
    Код (Text):
    1. status = FltGetFileNameInformation( FLT_FILE_NAME_NORMALIZED | MiniSpyData.NameQueryMethod, &nameInfo );
    либо, если неудачно:
    Код (Text):
    1. lstatus = FltGetFileNameInformation( Data, FLT_FILE_NAME_OPENED | FLT_FILE_NAME_QUERY_ALWAYS_ALLOW_CACHE_LOOKUP, &lnameInfo );
    или что-то вроде этого.
    Короче, перепробовал уж почти все комбинации флагов FltGetFileNameInformation насчёт имени файла - не отдаёт. ОС - Vista.

    Если кто сталкивался или у кого работает - как получить имя файла / пути с русскими буквами? Или хоть как-нибудь, хоть 8.3, потом в user-mode отыщу... В google искал, но либо запрос не могу составить, либо я один с таким столкнулся. :)

    Кстати, если спрашивать FLT_FILE_NAME_SHORT, то в большинстве случаев печатается вот этот вот непонятный код (c01c0005 (STATUS_FLT_INVALID_NAME_REQUEST?)), но, бывает и печатает просто имя файла в 8.3 (причём только имя, без пути к нему). С именами с русскими буквами всё равно не работает.

    Заранее спасибо.