windows-nt/Source/XPSP1/NT/enduser/windows.com/wuau/wuaulib/platform.cpp

92 lines
2.3 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
//=======================================================================
//
// Copyright (c) 2001 Microsoft Corporation. All Rights Reserved.
//
// File: platform.cpp
//
// Creator: PeterWi
//
// Purpose: platform functions.
//
//=======================================================================
#include "pch.h"
#pragma hdrstop
//=======================================================================
//
// fIsPersonalOrProfessional
//
// Determine if machine is personal or professional.
//
// Note: personal is a type of suite of professional.
//
//=======================================================================
BOOL fIsPersonalOrProfessional(void)
{
OSVERSIONINFOEX osver;
ZeroMemory(&osver, sizeof(osver));
osver.dwOSVersionInfoSize = sizeof(osver);
if ( GetVersionEx((OSVERSIONINFO *)&osver) )
{
return (VER_NT_WORKSTATION == osver.wProductType);
}
return FALSE;
}
/////////////////////////////////////////////////////////////
// GetFileVersionStr(...) get version of a file
// and store it in parameter tszbuf in the format
// of "MajorVersion.MinorVersion.BuildNumber.XXX"
// e.g. "5.4.2448.1"
// tszFile : IN stores full path of the file name
// tszbuf : IN stores OS version string
// ubufsize : IN stores size of tszbuf in charaters.
// : must be at least 20 charaters long
// return : S_OK if OS version string got
// : E_INVALIDARG if argument not valid
// : STRSAFE_E_INSUFFICIENT_BUFFER if insufficient buffer
// : E_FAIL if any other error
HRESULT GetFileVersionStr(LPCTSTR tszFile, LPTSTR tszbuf, UINT uSize)
{
DWORD dwVerNumberMS = 0;
DWORD dwVerNumberLS = 0;
HRESULT hr = S_OK;
USES_IU_CONVERSION;
if (uSize < 20 || NULL == tszbuf)
{
hr = E_INVALIDARG;
goto done;
}
LPSTR szTmp = T2A(tszFile);
if (NULL == szTmp)
{
hr = E_OUTOFMEMORY;
goto done;
}
hr = GetVersionFromFileEx(
szTmp,
&dwVerNumberMS,
&dwVerNumberLS,
TRUE);
if (SUCCEEDED(hr) &&
SUCCEEDED(hr = StringCchPrintfEx(
tszbuf, uSize, NULL, NULL, MISTSAFE_STRING_FLAGS, _T("%d.%d.%d.%d"),
HIWORD(dwVerNumberMS),
LOWORD(dwVerNumberMS),
HIWORD(dwVerNumberLS),
LOWORD(dwVerNumberLS))))
{
DEBUGMSG("file version for %S is %S", tszFile, tszbuf);
}
done:
return hr;
}