win32-vd_agent/common/vdcommon.h
Frediano Ziglio 4d4977611f Remove some unused definitions
_ftime_s, vdagent_strcat_s and vdagent_strcpy_s are not used.
Code is using different string functions.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2019-04-30 09:22:11 +01:00

111 lines
3.0 KiB
C++

/*
Copyright (C) 2009 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/>.
*/
#ifndef _H_VDCOMMON
#define _H_VDCOMMON
#if !defined __GNUC__
#pragma warning(disable:4200)
#endif
#include <errno.h>
#include <windows.h>
#include "spice/vd_agent.h"
#include "vdlog.h"
class Mutex {
public:
Mutex() {
InitializeCriticalSection(&_crit);
}
~Mutex() {
DeleteCriticalSection(&_crit);
}
void lock() {
EnterCriticalSection(&_crit);
}
void unlock() {
LeaveCriticalSection(&_crit);
}
private:
CRITICAL_SECTION _crit;
// no copy
Mutex(const Mutex&);
void operator=(const Mutex&);
};
class MutexLocker {
public:
MutexLocker(Mutex &mtx):_mtx(mtx) {
_mtx.lock();
}
~MutexLocker() {
_mtx.unlock();
}
private:
Mutex &_mtx;
// no copy
MutexLocker(const MutexLocker&);
void operator=(const MutexLocker&);
};
typedef Mutex mutex_t;
#define VD_AGENT_REGISTRY_KEY "SOFTWARE\\Red Hat\\Spice\\vdagent\\"
#define VD_AGENT_STOP_EVENT TEXT("Global\\vdagent_stop_event")
/*
* Note: OLDMSVCRT, which is defined (in the Makefile) for mingw builds, and
* is not defined for Visual Studio builds.
*
* On Windows XP some those functions are missing from the msvcrt.dll
* When compiled with mingw, the program fails to run due to missing functions.
* One can link to a newer runtime dll, e.g. msvcr100.dll, but that would
* require installing that DLL on the guest. That can be done by downloading
* and installing Microsoft Visual C++ 2010 Redistributable Package.
* (same for 110.dll and 2012 Redistributable Package, etc).
*
* Since we do not want to add this dependency, we use functions that are
* available in msvcrt.dll (and use define in the code).
*
* Currently Visual Studio builds are built with /MT (static mode) such that
* those functions are not required to be in that dll on the guest.
*/
#ifdef _MSC_VER // compiling with Visual Studio
#define HAVE_SWPRINTF_S 1
#endif
#ifndef HAVE_SWPRINTF_S
int vdagent_swprintf_s(wchar_t *buf, size_t len, const wchar_t *format, ...);
#define swprintf_s vdagent_swprintf_s
#endif
#ifdef _MSC_VER // compiling with Visual Studio
#define snprintf sprintf_s
#define sscanf sscanf_s
#endif
enum SystemVersion {
SYS_VER_UNSUPPORTED,
SYS_VER_WIN_XP_CLASS, // also Server 2003/R2
SYS_VER_WIN_7_CLASS, // also Windows 8, Server 2012, Server 2008/R2 & Vista
};
SystemVersion supported_system_version();
#endif