MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / GetProductOrFileVersion

Function GetProductOrFileVersion

TombEngine/Specific/trutils.cpp:246–303  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

244 }
245
246 std::vector<unsigned short> GetProductOrFileVersion(bool productVersion)
247 {
248 auto fileName = GetBinaryPath(true);
249
250 DWORD dummy;
251 DWORD size = GetFileVersionInfoSizeW(fileName.data(), &dummy);
252
253 if (size == 0)
254 {
255 TENLog("GetFileVersionInfoSizeW failed", LogLevel::Error);
256 return {};
257 }
258
259 std::unique_ptr<unsigned char[]> buffer(new unsigned char[size]);
260
261 // Load version info.
262 if (!GetFileVersionInfoW(fileName.data(), 0, size, buffer.get()))
263 {
264 TENLog("GetFileVersionInfoW failed", LogLevel::Error);
265 return {};
266 }
267
268 VS_FIXEDFILEINFO* info;
269 unsigned int infoSize;
270
271 if (!VerQueryValueW(buffer.get(), L"\\", (void**)&info, &infoSize))
272 {
273 TENLog("VerQueryValueW failed", LogLevel::Error);
274 return {};
275 }
276
277 if (infoSize != sizeof(VS_FIXEDFILEINFO))
278 {
279 TENLog("VerQueryValueW returned wrong size for VS_FIXEDFILEINFO", LogLevel::Error);
280 return {};
281 }
282
283 if (productVersion)
284 {
285 return
286 {
287 HIWORD(info->dwProductVersionMS),
288 LOWORD(info->dwProductVersionMS),
289 HIWORD(info->dwProductVersionLS),
290 LOWORD(info->dwProductVersionLS)
291 };
292 }
293 else
294 {
295 return
296 {
297 HIWORD(info->dwFileVersionMS),
298 LOWORD(info->dwFileVersionMS),
299 HIWORD(info->dwFileVersionLS),
300 LOWORD(info->dwFileVersionLS)
301 };
302 }
303 }

Callers 2

WinMainFunction · 0.85
LoadLevelFunction · 0.85

Calls 4

GetBinaryPathFunction · 0.85
TENLogFunction · 0.85
dataMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected