Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+----------------------------------------------------------------------------
//
// File: cversion.cpp
//
// Module: CMSETUP.LIB
//
// Synopsis: Implementation of the CVersion class, a utility class that
// wraps up the functionality for detecting the version of a
// given module filename.
//
// Copyright (c) 1998-1999 Microsoft Corporation
//
// Author: quintinb Created Header 08/19/99
//
//+----------------------------------------------------------------------------
#include "cmsetup.h"
#include "getmodulever.cpp"
CVersion::CVersion(LPTSTR szFile) { m_bIsPresent = FALSE; m_szPath[0] = TEXT('\0'); DWORD dwVersion = 0; DWORD dwBuild = 0;
if ((NULL != szFile) && (TEXT('\0') != szFile[0])) { lstrcpy(m_szPath, szFile); Init(); } }
CVersion::CVersion() { m_bIsPresent = FALSE; m_szPath[0] = TEXT('\0'); DWORD dwVersion = 0; DWORD dwBuild = 0; }
CVersion::~CVersion() { // nothing to do really
}
void CVersion::Init() { MYDBGASSERT(TEXT('\0') != m_szPath[0]);
//
// Check to see if we have version information
//
HRESULT hr = GetModuleVersionAndLCID(m_szPath, &m_dwVersion, &m_dwBuild, &m_dwLCID); if (SUCCEEDED(hr)) { m_bIsPresent = TRUE; CMTRACE3(TEXT("%s has Version = %u.%u"), m_szPath, (DWORD)HIWORD(m_dwVersion), (DWORD)LOWORD(m_dwVersion)); CMTRACE3(TEXT("%s has Build Number = %u.%u"), m_szPath, (DWORD)HIWORD(m_dwBuild), (DWORD)LOWORD(m_dwBuild)); CMTRACE2(TEXT("%s has LCID = %u"), m_szPath, m_dwLCID); } }
BOOL CVersion::IsPresent() { return m_bIsPresent; }
BOOL CVersion::GetVersionString(LPTSTR szStr) { if ((NULL != szStr) && (0 != m_dwVersion)) { MYVERIFY(0 != (UINT)wsprintf(szStr, TEXT("%u.%u"), (DWORD)HIWORD(m_dwVersion), (DWORD)LOWORD(m_dwVersion))); return TRUE; }
return FALSE; }
BOOL CVersion::GetBuildNumberString(LPTSTR szStr) { if ((NULL != szStr) && (0 != m_dwBuild)) { MYVERIFY(0 != (UINT)wsprintf(szStr, TEXT("%u.%u"), (DWORD)HIWORD(m_dwBuild), (DWORD)LOWORD(m_dwBuild))); return TRUE; }
return FALSE; }
BOOL CVersion::GetFilePath(LPTSTR szStr) { if ((m_bIsPresent) && (TEXT('\0') != m_szPath[0]) && (NULL != szStr)) { lstrcpy(szStr, m_szPath); }
return m_bIsPresent; }
DWORD CVersion::GetVersionNumber() { return m_dwVersion; }
DWORD CVersion::GetBuildAndQfeNumber() { return m_dwBuild; }
DWORD CVersion::GetMajorVersionNumber() { return (DWORD)HIWORD(m_dwVersion); }
DWORD CVersion::GetMinorVersionNumber() { return (DWORD)LOWORD(m_dwVersion); }
DWORD CVersion::GetBuildNumber() { return (DWORD)HIWORD(m_dwBuild); }
DWORD CVersion::GetQfeNumber() { return (DWORD)LOWORD(m_dwBuild); }
DWORD CVersion::GetLCID() { return m_dwLCID; }
// Note the following is a non-class function:
//+----------------------------------------------------------------------------
//
// Function: ArePrimaryLangIDsEqual
//
// Synopsis: Helper routine to compare the Primary Language IDs of two given
// LCIDs.
//
// Arguments: DWORD dwLCID1 - first LCID
// DWORD dwLCID2 - second LCID
//
// Returns: BOOL - TRUE if the LCIDs have the same Primary Language ID
//
// History: quintinb Created 7/8/99
//
//+----------------------------------------------------------------------------
BOOL ArePrimaryLangIDsEqual(DWORD dwLCID1, DWORD dwLCID2) { WORD wLangId1 = LANGIDFROMLCID(dwLCID1); WORD wLangId2 = LANGIDFROMLCID(dwLCID2);
//
// Now Convert the LANG IDs into their respective Primary Lang IDs and compare
//
return (PRIMARYLANGID(wLangId1) == PRIMARYLANGID(wLangId2)); }
|