| 156 | |
| 157 | |
| 158 | PluginVersion* Utility::getFileVersion(const TCHAR* path) |
| 159 | { |
| 160 | DWORD handle; |
| 161 | DWORD bufferSize = ::GetFileVersionInfoSize(path, &handle); |
| 162 | PluginVersion *version; |
| 163 | |
| 164 | if (bufferSize <= 0) |
| 165 | return new PluginVersion(); |
| 166 | |
| 167 | unsigned char* buffer = new unsigned char[bufferSize]; |
| 168 | ::GetFileVersionInfo(path, handle, bufferSize, buffer); |
| 169 | |
| 170 | /*struct LANGANDCODEPAGE { |
| 171 | WORD wLanguage; |
| 172 | WORD wCodePage; |
| 173 | } *lpTranslate;*/ |
| 174 | |
| 175 | VS_FIXEDFILEINFO* lpFileInfo; |
| 176 | |
| 177 | UINT cbFileInfo; |
| 178 | |
| 179 | VerQueryValue(buffer, |
| 180 | _T("\\"), |
| 181 | (LPVOID*)&lpFileInfo, |
| 182 | &cbFileInfo); |
| 183 | |
| 184 | if (cbFileInfo) |
| 185 | { |
| 186 | version = new PluginVersion((lpFileInfo->dwFileVersionMS & 0xFFFF0000) >> 16, |
| 187 | lpFileInfo->dwFileVersionMS & 0x0000FFFF, |
| 188 | (lpFileInfo->dwFileVersionLS & 0xFFFF0000) >> 16, |
| 189 | lpFileInfo->dwFileVersionLS & 0x0000FFFF); |
| 190 | } |
| 191 | else |
| 192 | { |
| 193 | version = new PluginVersion(); |
| 194 | } |
| 195 | |
| 196 | delete [] buffer; |
| 197 | |
| 198 | return version; |
| 199 | } |
nothing calls this directly
no outgoing calls
no test coverage detected