Каталог поиска ntQueryDirectoryFile

Тема в разделе "WASM.WIN32", создана пользователем Progr, 14 ноя 2006.

  1. Progr

    Progr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    48
    Здраствуйте,
    Как узнать из-под перехватчика ntQueryDirectoryFile, в каком каталоге проводился "поиск"?
    Мне нужно дополнить имена файлов, которые возвращает эта функция, полными путями к ним.
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    NtQueryInformationFile с классом информации FileNamesInformation.
     
  3. Progr

    Progr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    48
    n0name
    Не совсем понял, не мог бы на коде показать?
     
  4. Progr

    Progr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    48
    Ты имеешь ввиду вызвать оригинальную ф-цию с теми же параметрами что переданы в перехваченную, но с другим классом?
    Т.е. в конце концов оригинал будет дергаться дважды?
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Progr
    Угу, а в этом проблема?
     
  6. Progr

    Progr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    48
    Да, только что попробывал. Его поле FileName содержит только имя. Пути нет...
     
  7. Progr

    Progr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    48
    Что-то мне подсказывает что каталог можно получить если привести хендл файла (первый параметр ф-ции) к имени. Но как....
     
  8. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    ObReferenceObjectByHandle(..., *IoFileObjectType, ...)
    Дальше ObQueryNameString, либо из полей структуры - вообще все что нужно
     
  9. Progr

    Progr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    48
    gilg
    Спасибо
     
  10. Progr

    Progr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    48
    Ага, попробывал, работает. Но это не совсем то что нужно, т.к. возвращает путь в формате:

    Код (Text):
    1. МУСОР\Device\HarddiskVolume3\Drivers\MyDriver
    а мне нужно:

    c:\somedir1\somefile.ext

    Т.е. простой и всем понятный формат...
     
  11. Progr

    Progr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    48
    Нет никаких идей?
     
  12. Progr

    Progr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    48
    Возможно ли конвертировать путь к файлу/каталогу вида:
    \Device\HarddiskVolume3\Drivers\MyDriver
    к
    X:\Drivers\MyDriver

    ...или наоборот?
     
  13. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Попробуй RtlVolumeDeviceToDosName
    Такие темы уже были, может поможет:
    http://www.wasm.ru/forum/viewtopic.php?id=7004
     
  14. Progr

    Progr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    48
    А ДОС не говорит о том что имена будут короткие? Или там все нормально?
     
  15. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Неа. Будет replace <device name>\<path> ==> <DOS disk name>\<path>
     
  16. Progr

    Progr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    48
    Прикольно, а нет ли примера (желательно С), а то я уже один БСОД получил :derisive:
     
  17. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Примера нет. А ты ей случайно не строку в первом параметре передаешь?
     
  18. Progr

    Progr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    48
    Нет, хендл файла(взят из параметров ntQueryDirectoryFile)
    :)
     
  19. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    http://www.wasm.ru/forum/viewtopic.php?id=12449, там так же есть ссылка на статью Four-F с примером.
     
  20. Progr

    Progr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    48
    Да, но там на Асме, а я с ним не очень...