Re: Побочный эффект VerQueryValue
От: Denn  
Дата: 25.08.05 16:25
Оценка:
Здравствуйте, Deff, Вы писали:

D>недавно столкнулся с интересной проблемой: секция ресурсов моего exe-файла (в силу специфики задачи) содержит два экземпляра RT_VERSION, один из которых имеет стандартный идентификатор 1, а второй имеет строковое название PROD_DATA. Работать с GetFileVersionInfoSize, GetFileVersionInfo возможно только для ресурса 1, а

D>PROD_DATA нужно обрабатывать с помощью функций работы с ресурсами.
D>Работаю по схеме
D>FindResource -> LoadResource -> LockResource. Размер получаю с помощью SizeofResource.

В MSDN это запрещено, явно требуют использовать GetFileVersionInfoSize, ...

D>Все благополучно, пока не начнется работа с VerQueryValue.

D>Использование VerQueryValue с указателем от LockResource приведет к исключению ACCESS_VIOLATION.
Причем программа попытается вернуться после обработки обработчика catch(...) в код после вызова VerQueryValue. Бессовестно давит исключение..

D>Интересно, если кто сталкивался с этой проблемой — как она решалась, и если подобным образом, как вычислялся необходимый минимальный размер буфера.

Отказались от этой затеи, грязный хак ничего хорошего не даст. Но тем не менее, не вижу смысла минимизировать размер буфера, чем больше запас, тем больше шансов, на "выживание", в разных версиях Windows
размеры структур могут и поменяться.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.