Это правильно, хотя, если вы хотите дескриптор модуля dll, вам нужно указать его путь. В противном случае вы получите дескриптор процесса exe. Вы также должны сначала проверить возвращенный HMODULE
, чтобы убедиться, что он действителен.
Пример того, как получить виртуальный размер модуля:
std::size_t GetModuleSize(const char* szModule)
{
HMODULE hModule = GetModuleHandle(szModule);
if(hModule == NULL) return 0;
IMAGE_DOS_HEADER* pDOSHeader = (IMAGE_DOS_HEADER*)hModule;
IMAGE_NT_HEADERS* pNTHeaders =(IMAGE_NT_HEADERS*)((BYTE*)pDOSHeader + pDOSHeader->e_lfanew);
return pNTHeaders->OptionalHeader.SizeOfImage;
}
вы заметите, что я использую IMAGE_DOS_HEADER*
, а не PIMAGE_DOS_HEADER
, так как я нахожу это более читабельным и понятным.