![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| freezeman |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
Здравствуйте, подскажите, пожалуйста!
Есть перехваченная функция ReadFile. Файл, который считывает эта функция спроецирован в память, как заполнить буфер LPVOID lpBuffer с учетом смещения LPOVERLAPPED lpOverlapped ? Если можно пример, но и теория не помешает. Проекция, перехват все сделал, только само заполнение со смещением из проекции нужно... |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
|
|||
|
||||
| freezeman |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
Поясните, пожалуйста, 13 строчку... |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
||||
|
||||
| freezeman |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
||||
|
||||
| freezeman |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
Попробовал использовать Ваш код в dll, ошибок не возвращает, но и не считывает файл в приложении... Это сообщение отредактировал(а) freezeman - 8.5.2012, 18:06 |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
||||
|
||||
| freezeman |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
overlapped == NULL, я проверил на условие и смещение shift установли в 0. Да, уверен... я ему конкретный файл подсовываю, спроецированный ранее. Я никакое значение не возвращаю после заполнения, может быть в этом проблема? Если предположить, что в целевом приложении после вызова ReadFile проверяется результат операции на true/false, а я ничего не возвращаю, то и ничего не грузится... |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Это не правильно. Если Overlapped==NULL, то это обычный последовательный режим чтения, и читать нужно с текущей файловой позиции, которая после чтения должна увеличится на размер прочитанного
Может. ReadFile возвращает признак ошибки. Если вы ничего не вернули, то в качестве результата будет использован мусор, что вполне может соотвествовать ошибке чтения |
||||
|
|||||
| freezeman |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
Я так и считываю, просто shift (смещение, насколько я понимаю) устанавливаю в 0, если Overlapped==NULL и получается такого вида копирование: memcpy(lpBuffer, image_buffer+0, Size); Позиция должна измениться на размер прочитанного... это lpNumberOfBytesRead (число прочитанных байтов) нужно установить в количество прочитанных байт, я правильно понимаю? |
|||
|
||||
| freezeman |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
Возвращаю значение в перехватившей функции, видит нужный файл, работает правильно, но файл, который я подсовываю (т.е. который спроецирован) как-бы зацикливается при его открытии.
В чем может быть загвоздка? Код то же, только после считывания добавил return true; Блокнот загружает один и тот же файл в цикле каком-то( добавляя собержимое и файл загружается N раз.... Это сообщение отредактировал(а) freezeman - 10.5.2012, 17:49 |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
ну, загвоздка все в том же: на протяжении уже порядка 20 тем, ты не показываешь проблемного кода, следовательно набор и качество твоих ошибок растет и крепнет от темы к теме Добавлено через 1 минуту и 56 секунд к сожалению, в таком случае помочь тебе может только freezeman -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| freezeman |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
Считываниеспроецированного файла проходит до бесконечности, т.е. считывание прошло успешно, потом опять начинает его же считывать и так далее.... Вот код ))
Это сообщение отредактировал(а) freezeman - 11.5.2012, 10:00 |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Неправильно. При открытии в пользовательской программе такого файла надо завести у себя переменную - позицию в файле. И использовать именно ее в качестве shift при чтении. Почти - не установить, а прибавить к своей переменной. Разумеется, ты же его каждый ReadFile с начала читаешь, а надо продолжать чтение с последней позиции и дальше. Добавлено через 1 минуту и 14 секунд Ой! Для бинарного файла это в корне неверно. Это сообщение отредактировал(а) xvr - 11.5.2012, 11:04 |
|||
|
||||
| freezeman |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 21.1.2011 Репутация: нет Всего: нет |
Я немного поправил код и выяснил, что при перехвате функции ReadFile выполнится мой код, я заполняю буфер,
а потом ВЫЗЫВАЕТСЯ ПЕРВОНАЧАЛЬНАЯ ФУНКЦИЯ ReadFile, которую я и перехватывал, что происходить не должно! Может я неправильно запускаю перехват? Код:
Это сообщение отредактировал(а) freezeman - 11.5.2012, 16:54 |
|||
|
||||
![]()
|
| Правила форума "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. |