From: <ag...@us...> - 2011-12-18 04:28:36
|
Revision: 2650 http://zoolib.svn.sourceforge.net/zoolib/?rev=2650&view=rev Author: agreen Date: 2011-12-18 04:28:30 +0000 (Sun, 18 Dec 2011) Log Message: ----------- Add ZUtil_Win::sQGetVersion_File. Modified Paths: -------------- trunk/zoolib/source/cxx/zoolib/ZUtil_Win.cpp trunk/zoolib/source/cxx/zoolib/ZUtil_Win.h Modified: trunk/zoolib/source/cxx/zoolib/ZUtil_Win.cpp =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZUtil_Win.cpp 2011-12-18 04:27:29 UTC (rev 2649) +++ trunk/zoolib/source/cxx/zoolib/ZUtil_Win.cpp 2011-12-18 04:28:30 UTC (rev 2650) @@ -24,6 +24,8 @@ #include "zoolib/ZCompat_Win.h" +#include <vector> + namespace ZooLib { // From Whisper 1.3 @@ -99,6 +101,24 @@ #endif } +ZQ<uint64> ZUtil_Win::sQGetVersion_File(const WCHAR* iPath) + { + DWORD dummy; + if (DWORD theSize = ::GetFileVersionInfoSizeW(iPath, &dummy)) + { + std::vector<char> buffer(theSize); + if (::GetFileVersionInfoW(iPath, 0, theSize, &buffer[0])) + { + VS_FIXEDFILEINFO* info; + UINT infoSize; + if (::VerQueryValueW(&buffer[0], const_cast<WCHAR*>(L"\\"), (void**)&info, &infoSize) + && infoSize >= sizeof(VS_FIXEDFILEINFO)) + { return (uint64(info->dwFileVersionMS) << 32) | info->dwFileVersionLS; } + } + } + return null; + } + } // namespace ZooLib #endif // ZCONFIG_SPI_Enabled(Win) Modified: trunk/zoolib/source/cxx/zoolib/ZUtil_Win.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZUtil_Win.h 2011-12-18 04:27:29 UTC (rev 2649) +++ trunk/zoolib/source/cxx/zoolib/ZUtil_Win.h 2011-12-18 04:28:30 UTC (rev 2650) @@ -23,11 +23,12 @@ #include "zconfig.h" #include "zoolib/ZCONFIG_SPI.h" #include "zoolib/ZCompat_Win.h" +#include "zoolib/ZQ.h" +#include "zoolib/ZStdInt.h" // For uint64 -namespace ZooLib { - #if ZCONFIG_SPI_Enabled(Win) +namespace ZooLib { namespace ZUtil_Win { bool sIsWinNT(); @@ -38,10 +39,10 @@ HINSTANCE sGetModuleHandle(); +ZQ<uint64> sQGetVersion_File(const WCHAR* iPath); + } // namespace ZUtil_Win +} // namespace ZooLib #endif // ZCONFIG_SPI_Enabled(Win) - -} // namespace ZooLib - #endif // __ZUtil_Win__ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |