MCPcopy Create free account
hub / github.com/derceg/explorerplusplus / GetFileVersionValue

Function GetFileVersionValue

Explorer++/Helper/Helper.cpp:522–589  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

520}
521
522BOOL GetFileVersionValue(const TCHAR *szFullFileName, VersionSubBlockType_t subBlockType,
523 WORD *pwLanguage, DWORD *pdwProductVersionLS, DWORD *pdwProductVersionMS,
524 const TCHAR *szVersionInfo, TCHAR *szVersionBuffer, UINT cchMax)
525{
526 BOOL bSuccess = FALSE;
527 DWORD dwLen = GetFileVersionInfoSize(szFullFileName, NULL);
528
529 if(dwLen > 0)
530 {
531 void *pBlock = malloc(dwLen);
532
533 if(pBlock != NULL)
534 {
535 BOOL bRet = GetFileVersionInfo(szFullFileName, NULL, dwLen, pBlock);
536
537 if(bRet)
538 {
539 TCHAR szSubBlock[64];
540 LPVOID *pBuffer = NULL;
541 UINT uStructureSize = 0;
542
543 LangAndCodePage *plcp = NULL;
544 VS_FIXEDFILEINFO *pvsffi = NULL;
545
546 if(subBlockType == ROOT)
547 {
548 StringCchCopy(szSubBlock, SIZEOF_ARRAY(szSubBlock), _T("\\"));
549 pBuffer = reinterpret_cast<LPVOID *>(&pvsffi);
550 uStructureSize = sizeof(VS_FIXEDFILEINFO);
551 }
552 else if(subBlockType == TRANSLATION ||
553 subBlockType == STRING_TABLE_VALUE)
554 {
555 StringCchCopy(szSubBlock, SIZEOF_ARRAY(szSubBlock), _T("\\VarFileInfo\\Translation"));
556 pBuffer = reinterpret_cast<LPVOID *>(&plcp);
557 uStructureSize = sizeof(LangAndCodePage);
558 }
559
560 UINT uLen;
561 bRet = VerQueryValue(pBlock, szSubBlock, pBuffer, &uLen);
562
563 if(bRet && (uLen >= uStructureSize))
564 {
565 bSuccess = TRUE;
566
567 if(subBlockType == ROOT)
568 {
569 *pdwProductVersionLS = pvsffi->dwProductVersionLS;
570 *pdwProductVersionMS = pvsffi->dwProductVersionMS;
571 }
572 else if(subBlockType == TRANSLATION)
573 {
574 *pwLanguage = plcp[0].wLanguage;
575 }
576 else if(subBlockType == STRING_TABLE_VALUE)
577 {
578 bSuccess = GetStringTableValue(pBlock, plcp, uLen / sizeof(LangAndCodePage),
579 szVersionInfo, szVersionBuffer, cchMax);

Callers 3

GetFileProductVersionFunction · 0.85
GetFileLanguageFunction · 0.85
GetVersionInfoStringFunction · 0.85

Calls 1

GetStringTableValueFunction · 0.85

Tested by

no test coverage detected