#ifndef INSPIRCD_WIN32WRAPPER_H
#define INSPIRCD_WIN32WRAPPER_H
+/*
+ * Starting with PSAPI version 2 for Windows 7 and Windows Server 2008 R2, this function is defined as K32GetProcessMemoryInfo in Psapi.h and exported
+ * in Kernel32.lib and Kernel32.dll. However, you should always call this function as GetProcessMemoryInfo. To ensure correct resolution of symbols
+ * for programs that will run on earlier versions ofWindows, add Psapi.lib to the TARGETLIBS macro and compile the program with PSAPI_VERSION=1.
+ *
+ * We do this before anything to make sure it's done.
+ */
+#define PSAPI_VERSION 1
+
#ifndef CONFIGURE_BUILD
#include "win32service.h"
#endif
#define FD_SETSIZE 24000
-#define uint32_t DWORD
-#define uint16_t WORD
+typedef unsigned __int16 uint16_t;
+typedef unsigned __int32 uint32_t;
/* Make builds smaller, leaner and faster */
#define VC_EXTRALEAN
#define popen _popen
#define pclose _pclose
-/* Error macros need to be redirected to winsock error codes */
-#define ETIMEDOUT WSAETIMEDOUT
-#define ECONNREFUSED WSAECONNREFUSED
-#define EADDRINUSE WSAEADDRINUSE
-#define EINPROGRESS WSAEWOULDBLOCK
-#define EADDRNOTAVAIL WSAEADDRNOTAVAIL
+/* Error macros need to be redirected to winsock error codes, apart from on VS2010 *SIGH* */
+#if _MSC_VER < 1600
+ #define ETIMEDOUT WSAETIMEDOUT
+ #define ECONNREFUSED WSAECONNREFUSED
+ #define EADDRINUSE WSAEADDRINUSE
+ #define EINPROGRESS WSAEWOULDBLOCK
+ #define EADDRNOTAVAIL WSAEADDRNOTAVAIL
+#endif
/* Convert formatted (xxx.xxx.xxx.xxx) string to in_addr struct */
CoreExport int insp_inet_pton(int af, const char * src, void * dst);