Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых)

 eXeL@B —› Программирование —› Получение пути к файлу
Посл.ответ Сообщение


Ранг: 66.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 02 апреля 2007 19:21
· Личное сообщение · #1

Столкнулся с такой проблемой:

Хочу сделать перехват NtOpenFile. Но возникла проблема при получении нормального пути к файлу. Ведь файл может быть представлен несколькими разными native именами. Это может быть как \??\C:\File.txt, так и \device\harddiskvolume1\File.txt, или даже \??\fignia\hren.txt. Все зависит от того, через какие символические ссылки будет открыт файл. Так вот вопрос: как из этой хр*ни получить нормальный путь вида \??\C:\File.txt ?



Ранг: 48.8 (посетитель), 17thx
Активность: 0.020
Статус: Участник

Создано: 02 апреля 2007 19:30 · Поправил: Olenevod
· Личное сообщение · #2

Найти конец строки и начать "отматывать" ее назад до символа "\" после этого
получишь "чистое" имя файла и можешь подставлять любые пути.



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 02 апреля 2007 19:35
· Личное сообщение · #3

RtlVolumeDeviceToDosName() - кажется оно




Ранг: 66.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 03 апреля 2007 10:16
· Личное сообщение · #4

ssx пишет:
RtlVolumeDeviceToDosName() - кажется оно


Спасибо, попробую. Но мне кажется, что эта функция в свою очередь вызывает NtOpenFile, что приведет к бесконечному циклу.


 eXeL@B —› Программирование —› Получение пути к файлу
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати