с++ GetModuleHandle 2

Рейтинг: 0Ответов: 1Опубликовано: 11.04.2015

С помощью функции LoadLibraryEx включил client.dll библиотеку. Мне требуется получить адрес client.dll файла с помощью функции GetModuleHandle.

HMODULE library = LoadLibraryEx("D://libs//client.dll",NULL, LOAD_LIBRARY_AS_DATAFILE); 

GetModuleHandle (??);

Как мне в аргументы функции getmodulehandle включить переменную library, просто так не получится, т.к тип данных совершенно другой и выдает ошибку. Или может быть я что-то не так понял, и после LoadLibraryEx не нужно использовать getmodulehandle.

Ответы

▲ 1Принят

Окей, для того, чтобы получить базовый адрес модуля в памяти, надо воспользоваться структурой MODULEINFO, в которой он и содержится.

Структуру MODULEINFO можно добыть при помощи GetModuleInformation, скормив ему хэндл на модуль (HMODULE). Сам хэндл можно получить либо во время загрузки модуля (LoadLibraryEx), либо если модуль уже загружен, а у вас не сохранился хэндл, через GetModuleHandleEx.


Уточнение: Обратите внимание, вам нужно будет загрузить модуль без флага LOAD_LIBRARY_AS_DATAFILE! Иначе GetModuleInformation не сработает.