Ранг: 67.4 (постоянный) Активность: 0.04↘0 Статус: Участник
Создано: 22 ноября 2009 20:07 · Поправил: Sunzer · Личное сообщение · #1
Всем привет. Начал переписывать свой код, и возникла проблема.
Суть в том что в одном случае kernel32.dll открывается и я получаю хэндл, во втором варианте пишет нет доступа в GetLastError. Параметры идентичные в обоих случаях. Во втором разве что путь до кернеля в стеке лежит.
Похоже на утечку хэндла... Такое впечатление что kernel32.dll уже открыт... и ты пытаешься его опять открыть... Вопрос - зачем ты открываешь kernel32.dll для чтения? какая цель?
DaRKSiDE пишет: Похоже на утечку хэндла...Такое впечатление что kernel32.dll уже открыт... и ты пытаешься его опять открыть...Вопрос - зачем ты открываешь kernel32.dll для чтения? какая цель?
Sunzer пишет: GetFileTime Непонял, ты хочешь через открытие кернела CreateFile-ом получить адрес GetFileTime ? Или как? Так для этого у тебя уже все есть... к этому моменту...и адрес GetProcAddress-а и имя функи и база кернела...
hFile A handle to the file or directory for which dates and times are to be retrieved. The handle must have been created using the CreateFile function with the GENERIC_READ access right. For more information, see File Security and Access Rights.
Там же нужны три указателя на буфер по 20h и хендл. Вот и открываю кернель что бы хэндл получить Но важно то из за чего апи CreateFileA в сабже -1 возвращает
Вы к проблеме как то сбоку подоходите. Открываю для получения хэндла, а хэндл для получения апи GetFileTime, а GetFileTime для получения даты создания файла.
Это понятно что тебе нужна дата создания файла. Вот только зачем? Как раз к проблеме надо подходить прямо, а точнее из корня. Какова цель узнать дату? GetVersionEx зачем придуман?
DaRKSiDE пишет: Тогда смотри какие вызываемые тобой функции могут держать хэндл...К примеру LoadLibrary... Для kernel32.dll я не вызываю LoadLibrary, зачем? Он и так в контекте каждого процесса есть. Бирань в атаче в первом посте.