MCPcopy Create free account
hub / github.com/Norbyte/bg3se / GetModuleVersion

Function GetModuleVersion

BG3Updater/Utils.cpp:83–113  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

81}
82
83std::optional<VersionNumber> GetModuleVersion(HMODULE hModule)
84{
85 if (hModule == NULL) {
86 return {};
87 }
88
89 auto hResource = FindResource(hModule, MAKEINTRESOURCE(VS_VERSION_INFO), RT_VERSION);
90 if (hResource == NULL) return {};
91 auto dwSize = SizeofResource(hModule, hResource);
92 auto hData = LoadResource(hModule, hResource);
93 if (hData == NULL) return {};
94 auto pRes = LockResource(hData);
95 if (pRes == NULL) return {};
96
97 auto pResCopy = LocalAlloc(LMEM_FIXED, dwSize);
98 CopyMemory(pResCopy, pRes, dwSize);
99
100 UINT verLength;
101 VS_FIXEDFILEINFO* fixedFileInfo;
102 if (VerQueryValue(pResCopy, L"\\", (LPVOID*)&fixedFileInfo, &verLength) != TRUE) return {};
103
104 VersionNumber version(
105 HIWORD(fixedFileInfo->dwFileVersionMS),
106 LOWORD(fixedFileInfo->dwFileVersionMS),
107 HIWORD(fixedFileInfo->dwFileVersionLS),
108 LOWORD(fixedFileInfo->dwFileVersionLS));
109
110 LocalFree(pResCopy);
111 FreeResource(hData);
112 return version;
113}
114
115std::optional<VersionNumber> GetGameVersion()
116{

Callers 2

LoadGameVersionMethod · 0.85
GetGameVersionFunction · 0.85

Calls 1

dataMethod · 0.45

Tested by

no test coverage detected