win32-vd_agent/common/vdcommon.cpp
Frediano Ziglio dc185029ff vdcommon: Do not use GetVersionEx to get Windows version
GetVersionEx was deprecated by Microsoft in favour of utilities
in versionhelpers.h.
The new function returns the same results as:
- GetVersionEx returns maximum 6.2 version and also 6.0 version
  is Vista, not Windows 7 so SYS_VER_WIN_7_CLASS was returned
  for all system from Windows Vista;
- We don't support version earlier than Windows XP and no Windows
  versions had version >= 5.2 and < 6.0 so SYS_VER_WIN_XP_CLASS
  was returned from Windows XP;
- we don't support any system before Windows XP.

Tested under Windows XP, 7 and 10.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
2019-12-03 17:43:17 +00:00

47 lines
1.3 KiB
C++

/*
Copyright (C) 2013 Red Hat, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "vdcommon.h"
#include <stdarg.h>
#include <versionhelpers.h>
SystemVersion supported_system_version()
{
if (IsWindowsVistaOrGreater()) {
return SYS_VER_WIN_7_CLASS;
}
if (IsWindowsXPOrGreater()) {
return SYS_VER_WIN_XP_CLASS;
}
return SYS_VER_UNSUPPORTED;
}
#ifndef HAVE_SWPRINTF_S
int vdagent_swprintf_s(wchar_t *buf, size_t len, const wchar_t *format, ...)
{
va_list ap;
va_start(ap, format);
int res = _vsnwprintf(buf, len, format, ap);
va_end(ap);
if ((res < 0 || (unsigned) res >= len) && len > 0) {
buf[0] = 0;
}
return res;
}
#endif