![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| freezeman |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
Здравствуйте!
Подскажите, пожалуйста, у меня есть перехваченная функция ReadFile, как мне определить из какого файла на диске производилось чтение? Т.е. моя программа перехватив winapi функцию ReadFile из другой программы должна определить с какого файла на жестком диске или из ОП производится чтение... |
|||
|
||||
| 12usver12 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 5.1.2007 Репутация: 1 Всего: 1 |
||||
|
||||
| freezeman |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
А я все не могу запустить её на XP...спасибо) |
|||
|
||||
| freezeman |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
У вас компилируется этот пример? Проверьте, пожалуйста, не знаю уже как по другому... у меня выдает две ошибки (создаю обычный консольный проект): Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ _GetMappedFileNameW@16 в функции "int __cdecl GetFileNameFromHandle(void *)" (?GetFileNameFromHandle@@YAHPAX@Z) c:\Users\пользователь\documents\visual studio 2010\Projects\test\test\test.obj test Ошибка 2 error LNK1120: 1 неразрешенных внешних элементов c:\users\пользователь\documents\visual studio 2010\Projects\test\Debug\test.exe test Это сообщение отредактировал(а) freezeman - 16.2.2012, 09:30 |
||||
|
|||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
1. открываем документацию на GetMappedFileName 2. смотрим раздел Requirements 3. находим требуемую библиотеку Psapi 4. подключаем ее:
Это сообщение отредактировал(а) GremlinProg - 16.2.2012, 10:11 -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| freezeman |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
Точно, получилось. Но когда открываю файл "c:\\text.txt" в CreateFile должно в результате выводиться его имя, а получаются "????". Подскажите, как так получается? |
||||
|
|||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
ничего не понял, где получаются "????" ? p.s.: код в студию -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| freezeman |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
В общем задача в том, чтобы вывести путь к файлу по HANDLE Пытался так, но при выводе получаются вопросы...
Это сообщение отредактировал(а) freezeman - 16.2.2012, 13:28 |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
думаю, всю ветвь GetLogicalDriveStrings тут можно убрать вообще, т.к. она пытается подобрать для DOS-имени соответствующий ему том логического диска,
думаю, для обычных файлов подбирать ничего не требуется, после вызова GetMappedFileName, pszFilename содержит корректный путь? -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| freezeman |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
Тоже не получилось, в общем мне нужно HANDLE преобразовать для того, что узнать функция читает данные из HHD или из ОП... может ReadFile в любом случае читает с жесткого диска?? |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Это вы вряд ли узнаете. Да и HANDLE, указывающий на ОП, это нечто весьма необычное Нет, но в любом случае не из ОП (даже если читаемый файл лежит в RAM Disk'е) Добавлено через 6 минут и 23 секунды Вам нужна функция NtQueryObject |
|||
|
||||
| freezeman |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
Спасибо, это и нужно мне было узнать...Я раньше не работал с WINAPI поэтому и подробностей не знаю)) |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |