EXEファイルの整合性をチェックするカスタムモジュールを作成しています(これはこの質問の一部ではありません)。そのために、EXEファイル本体のサイズを計算するためにEXEファイル内の特定のリソースのオフセットを知る必要があります。確認する必要があります。
ファイルIDR_HTML_DLG
内のリソースのオフセットを取得するために、次のコードを思いつきました。strExeFilePath
int ncbOffsetInBytes = 0;
HMODULE hModule = LoadLibrary(strExeFilePath);
if(hModule)
{
HRSRC hRes = ::FindResource(hModule, MAKEINTRESOURCE(IDR_HTML_DLG), RT_HTML);
if(hRes)
{
long szLength = ::SizeofResource(hModule, hRes);
HGLOBAL hGlobal = ::LoadResource(hModule, hRes);
if(szLength && hGlobal)
{
BYTE* pData = (BYTE*)LockResource(hGlobal);
DWORD dwLast = (DWORD)(pData + szLength);
DWORD dwFirst = (DWORD)hModule;
ncbOffsetInBytes = dwLast - dwFirst;
}
}
::FreeLibrary(hModule);
hModule = NULL;
}
しかし、結果ncbOffsetInBytes
はEXEファイル自体よりも大きくなります。それを修正する方法はありますか?