|
@@ -214,8 +214,12 @@ private:
|
|
|
}
|
|
|
/** Test Gifur@2024322]*/
|
|
|
GetDllVersionInfo(strFullLibPath, d1, d2, d3, d4);
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("dll version: %d.%d.%d.%d", d1, d2, d3, d4);
|
|
|
-
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("dll %s version: %d.%d.%d.%d", strFullLibPath.GetData(), d1, d2, d3, d4);
|
|
|
+ //VC16.0 [1920,1929] VS2019 142
|
|
|
+ if (d4 >= 1920 && d4 <= 1929 && d3 == 142) {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("detect it built with VS2019, skip latter procedure, version: %d.%d.%d.%d", d1, d2, d3, d4);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
//do
|
|
|
//{
|
|
|
// toolkit_lib_t libHandle;
|
|
@@ -365,51 +369,25 @@ public:
|
|
|
#if defined(RVC_OS_WIN)
|
|
|
ErrorCodeEnum GetDllVersionInfo(LPCTSTR lpcszFilePath, DWORD& dwMajor, DWORD& dwMinor, DWORD& dwBuild, DWORD& dwRevision)
|
|
|
{
|
|
|
- char VersionFilePath[MAX_PATH];
|
|
|
char* buf = NULL;
|
|
|
-
|
|
|
dwMajor = dwMinor = dwBuild = dwRevision = -1;
|
|
|
|
|
|
- HMODULE h = GetModuleHandle(lpcszFilePath);
|
|
|
- if (NULL == h) {
|
|
|
- return Error_IO;
|
|
|
- }
|
|
|
-
|
|
|
- if (GetModuleFileName(h, VersionFilePath, MAX_PATH) == 0) {
|
|
|
- CloseHandle(h);
|
|
|
- return Error_Unexpect;
|
|
|
- }
|
|
|
DWORD dwHnd;
|
|
|
DWORD dwVerInfoSize;
|
|
|
- if (0 >= (dwVerInfoSize = GetFileVersionInfoSize(VersionFilePath, &dwHnd))) {
|
|
|
- CloseHandle(h);
|
|
|
+ if (0 >= (dwVerInfoSize = GetFileVersionInfoSizeA(lpcszFilePath, &dwHnd))) {
|
|
|
+ DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("GetFileVersionInfoSizeA failed: %u", GetLastError());
|
|
|
return Error_Unexpect;
|
|
|
}
|
|
|
|
|
|
buf = new char[dwVerInfoSize];
|
|
|
if (NULL == buf) {
|
|
|
- CloseHandle(h);
|
|
|
return Error_Resource;
|
|
|
}
|
|
|
|
|
|
// get file version info
|
|
|
- if (!GetFileVersionInfo(VersionFilePath, dwHnd, dwVerInfoSize, buf)) {
|
|
|
+ if (!GetFileVersionInfo(lpcszFilePath, dwHnd, dwVerInfoSize, buf)) {
|
|
|
+ DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("GetFileVersionInfo failed: %u", GetLastError());
|
|
|
delete[] buf;
|
|
|
- CloseHandle(h);
|
|
|
- return Error_Unexpect;
|
|
|
- }
|
|
|
-
|
|
|
- // Read the list of languages and code pages.
|
|
|
- struct LANGANDCODEPAGE
|
|
|
- {
|
|
|
- WORD wLanguage;
|
|
|
- WORD wCodePage;
|
|
|
- }*lpTranslate;
|
|
|
-
|
|
|
- unsigned int cbTranslate;
|
|
|
- if (!VerQueryValue(buf, "\\VarFileInfo\\Translation", (void**)&lpTranslate, &cbTranslate)) {
|
|
|
- delete[] buf;
|
|
|
- CloseHandle(h);
|
|
|
return Error_Unexpect;
|
|
|
}
|
|
|
|
|
@@ -417,8 +395,8 @@ public:
|
|
|
VS_FIXEDFILEINFO* ptrVersion;
|
|
|
unsigned int versionLen = 0;
|
|
|
if (!VerQueryValue(buf, "\\", (void**)&ptrVersion, &versionLen)) {
|
|
|
+ DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("VS_FIXEDFILEINFO failed: %u", GetLastError());
|
|
|
delete[] buf;
|
|
|
- CloseHandle(h);
|
|
|
return Error_Unexpect;
|
|
|
}
|
|
|
|
|
@@ -428,8 +406,6 @@ public:
|
|
|
dwRevision = ptrVersion->dwFileVersionLS & 0x0000FFFF;
|
|
|
|
|
|
delete[] buf;
|
|
|
- CloseHandle(h);
|
|
|
-
|
|
|
return Error_Succeed;
|
|
|
}
|
|
|
#else
|