summaryrefslogtreecommitdiff
path: root/common/xbox/xbox_win32stubs.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/xbox/xbox_win32stubs.h')
-rw-r--r--common/xbox/xbox_win32stubs.h1593
1 files changed, 1593 insertions, 0 deletions
diff --git a/common/xbox/xbox_win32stubs.h b/common/xbox/xbox_win32stubs.h
new file mode 100644
index 0000000..923f720
--- /dev/null
+++ b/common/xbox/xbox_win32stubs.h
@@ -0,0 +1,1593 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: XBox win32 replacements - Mocks trivial windows flow
+//
+//=============================================================================
+#pragma once
+
+typedef unsigned long REGSAM;
+
+#define DSBCAPS_LOCSOFTWARE 0
+
+#define DSERR_BUFFERLOST 0
+
+#define DSBSTATUS_BUFFERLOST 0x02
+
+#define DSSPEAKER_GEOMETRY(x) (((x)>>16) & 0xFFFF)
+#define DSSPEAKER_CONFIG(x) ((x) & 0xFFFF)
+
+#define DSSPEAKER_HEADPHONE -1
+#define DSSPEAKER_QUAD -2
+#define DSSPEAKER_5POINT1 -3
+#define DSSPEAKER_7POINT1 -4
+
+#define DISP_CHANGE_SUCCESSFUL 0
+
+#define HKEY_CURRENT_USER NULL
+#define HKEY_LOCAL_MACHINE NULL
+#define KEY_QUERY_VALUE 0
+
+#define KEY_READ 0
+#define KEY_WRITE 1
+#define KEY_ALL_ACCESS ((ULONG)-1)
+
+#define SMTO_ABORTIFHUNG 0
+
+#define JOY_RETURNX 0x01
+#define JOY_RETURNY 0x02
+#define JOY_RETURNZ 0x04
+#define JOY_RETURNR 0x08
+#define JOY_RETURNU 0x10
+#define JOY_RETURNV 0x20
+
+#define JOYCAPS_HASPOV 0x01
+#define JOYCAPS_HASU 0x01
+#define JOYCAPS_HASV 0x01
+#define JOYCAPS_HASR 0x01
+#define JOYCAPS_HASZ 0x01
+
+#define MMSYSERR_NODRIVER 1
+#define JOYERR_NOERROR 0
+#define JOY_RETURNCENTERED 0
+#define JOY_RETURNBUTTONS 0
+#define JOY_RETURNPOV 0
+#define JOY_POVCENTERED 0
+#define JOY_POVFORWARD 0
+#define JOY_POVRIGHT 0
+#define JOY_POVBACKWARD 0
+#define JOY_POVLEFT 0
+
+#define CCHDEVICENAME 32
+#define CCHFORMNAME 32
+
+typedef WCHAR BCHAR;
+
+typedef UINT MMRESULT;
+
+#define IDLE_PRIORITY_CLASS 1
+#define HIGH_PRIORITY_CLASS 2
+
+typedef struct _devicemode {
+ BCHAR dmDeviceName[CCHDEVICENAME];
+ WORD dmSpecVersion;
+ WORD dmDriverVersion;
+ WORD dmSize;
+ WORD dmDriverExtra;
+ DWORD dmFields;
+ union u1 {
+ struct s {
+ short dmOrientation;
+ short dmPaperSize;
+ short dmPaperLength;
+ short dmPaperWidth;
+ short dmScale;
+ short dmCopies;
+ short dmDefaultSource;
+ short dmPrintQuality;
+ };
+ POINTL dmPosition;
+ DWORD dmDisplayOrientation;
+ DWORD dmDisplayFixedOutput;
+ };
+ short dmColor;
+ short dmDuplex;
+ short dmYResolution;
+ short dmTTOption;
+ short dmCollate;
+ BYTE dmFormName[CCHFORMNAME];
+ WORD dmLogPixels;
+ DWORD dmBitsPerPel;
+ DWORD dmPelsWidth;
+ DWORD dmPelsHeight;
+ union u2 {
+ DWORD dmDisplayFlags;
+ DWORD dmNup;
+ };
+ DWORD dmDisplayFrequency;
+ DWORD dmICMMethod;
+ DWORD dmICMIntent;
+ DWORD dmMediaType;
+ DWORD dmDitherType;
+ DWORD dmReserved1;
+ DWORD dmReserved2;
+ DWORD dmPanningWidth;
+ DWORD dmPanningHeight;
+} DEVMODE, *LPDEVMODE;
+
+typedef DWORD MCIERROR;
+typedef UINT MCIDEVICEID;
+
+typedef struct {
+ DWORD_PTR dwCallback;
+} MCI_GENERIC_PARMS;
+
+typedef struct {
+ DWORD_PTR dwCallback;
+ DWORD dwReturn;
+ DWORD dwItem;
+ DWORD dwTrack;
+} MCI_STATUS_PARMS;
+
+typedef struct {
+ DWORD_PTR dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+} MCI_PLAY_PARMS;
+
+typedef struct {
+ DWORD_PTR dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCSTR lpstrDeviceType;
+ LPCSTR lpstrElementName;
+ LPCSTR lpstrAlias;
+} MCI_OPEN_PARMS;
+
+typedef struct {
+ DWORD_PTR dwCallback;
+ DWORD dwTimeFormat;
+ DWORD dwAudio;
+} MCI_SET_PARMS;
+
+#define MCI_MAKE_TMSF(t, m, s, f) ((DWORD)(((BYTE)(t) | ((WORD)(m) << 8)) | ((DWORD)(BYTE)(s) | ((WORD)(f)<<8)) << 16))
+#define MCI_MSF_MINUTE(msf) ((BYTE)(msf))
+#define MCI_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8))
+
+#define MCI_OPEN 0
+#define MCI_OPEN_TYPE 0
+#define MCI_OPEN_SHAREABLE 0
+#define MCI_FORMAT_TMSF 0
+#define MCI_SET_TIME_FORMAT 0
+#define MCI_CLOSE 0
+#define MCI_STOP 0
+#define MCI_PAUSE 0
+#define MCI_PLAY 0
+#define MCI_SET 0
+#define MCI_SET_DOOR_OPEN 0
+#define MCI_SET_DOOR_CLOSED 0
+#define MCI_STATUS_READY 0
+#define MCI_STATUS 0
+#define MCI_STATUS_ITEM 0
+#define MCI_STATUS_WAIT 0
+#define MCI_STATUS_NUMBER_OF_TRACKS 0
+#define MCI_CDA_STATUS_TYPE_TRACK 0
+#define MCI_TRACK 0
+#define MCI_WAIT 0
+#define MCI_CDA_TRACK_AUDIO 0
+#define MCI_STATUS_LENGTH 0
+#define MCI_NOTIFY 0
+#define MCI_FROM 0
+#define MCI_TO 0
+#define MCIERR_DRIVER -1
+
+#define DSERR_ALLOCATED 0
+
+typedef struct _STARTUPINFOW {
+ DWORD cb;
+ LPWSTR lpReserved;
+ LPWSTR lpDesktop;
+ LPWSTR lpTitle;
+ DWORD dwX;
+ DWORD dwY;
+ DWORD dwXSize;
+ DWORD dwYSize;
+ DWORD dwXCountChars;
+ DWORD dwYCountChars;
+ DWORD dwFillAttribute;
+ DWORD dwFlags;
+ WORD wShowWindow;
+ WORD cbReserved2;
+ LPBYTE lpReserved2;
+ HANDLE hStdInput;
+ HANDLE hStdOutput;
+ HANDLE hStdError;
+} STARTUPINFOW, *LPSTARTUPINFOW;
+typedef STARTUPINFOW STARTUPINFO;
+typedef LPSTARTUPINFOW LPSTARTUPINFO;
+
+typedef struct _PROCESS_INFORMATION {
+ HANDLE hProcess;
+ HANDLE hThread;
+ DWORD dwProcessId;
+ DWORD dwThreadId;
+} PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;
+
+typedef DWORD HWAVEOUT, *LPHWAVEOUT;
+
+typedef struct {
+ LPSTR lpData;
+ DWORD dwBufferLength;
+ DWORD dwBytesRecorded;
+ DWORD_PTR dwUser;
+ DWORD dwFlags;
+ DWORD dwLoops;
+ struct wavehdr_tag * lpNext;
+ DWORD_PTR reserved;
+} WAVEHDR, *LPWAVEHDR;
+
+typedef struct {
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwBufferBytes;
+ DWORD dwUnlockTransferRate;
+ DWORD dwPlayCpuOverhead;
+} DSBCAPS, *LPDSBCAPS;
+
+typedef struct _DSCEFFECTDESC
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ GUID guidDSCFXClass;
+ GUID guidDSCFXInstance;
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+} DSCEFFECTDESC, *LPDSCEFFECTDESC;
+
+typedef struct _DSCBUFFERDESC
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwBufferBytes;
+ DWORD dwReserved;
+ LPWAVEFORMATEX lpwfxFormat;
+ DWORD dwFXCount;
+ LPDSCEFFECTDESC lpDSCFXDesc;
+} DSCBUFFERDESC, *LPDSCBUFFERDESC;
+
+
+#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
+
+typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
+typedef BOOL (CALLBACK* WNDENUMPROC)(HWND, LPARAM);
+
+typedef char* HPSTR;
+
+typedef struct tagPAINTSTRUCT {
+ HDC hdc;
+ BOOL fErase;
+ RECT rcPaint;
+ BOOL fRestore;
+ BOOL fIncUpdate;
+ BYTE rgbReserved[16];
+} PAINTSTRUCT, *LPPAINTSTRUCT;
+
+typedef struct tagMSG {
+ HWND hwnd;
+ UINT message;
+ WPARAM wParam;
+ LPARAM lParam;
+ DWORD time;
+ POINT pt;
+} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;
+
+typedef struct {
+ UINT style;
+ WNDPROC lpfnWndProc;
+ int cbClsExtra;
+ int cbWndExtra;
+ HINSTANCE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCTSTR lpszMenuName;
+ LPCTSTR lpszClassName;
+} WNDCLASS, *PWNDCLASS;
+
+typedef struct {
+ UINT style;
+ WNDPROC lpfnWndProc;
+ int cbClsExtra;
+ int cbWndExtra;
+ HINSTANCE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCWSTR lpszMenuName;
+ LPCWSTR lpszClassName;
+} WNDCLASSW, *PWNDCLASSW;
+
+typedef struct {
+ UINT cbSize;
+ UINT style;
+ WNDPROC lpfnWndProc;
+ int cbClsExtra;
+ int cbWndExtra;
+ HINSTANCE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCTSTR lpszMenuName;
+ LPCTSTR lpszClassName;
+ HICON hIconSm;
+} WNDCLASSEX, *PWNDCLASSEX;
+
+typedef struct tagTEXTMETRIC {
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG tmExternalLeading;
+ LONG tmAveCharWidth;
+ LONG tmMaxCharWidth;
+ LONG tmWeight;
+ LONG tmOverhang;
+ LONG tmDigitizedAspectX;
+ LONG tmDigitizedAspectY;
+ TCHAR tmFirstChar;
+ TCHAR tmLastChar;
+ TCHAR tmDefaultChar;
+ TCHAR tmBreakChar;
+ BYTE tmItalic;
+ BYTE tmUnderlined;
+ BYTE tmStruckOut;
+ BYTE tmPitchAndFamily;
+ BYTE tmCharSet;
+} TEXTMETRIC, *PTEXTMETRIC;
+
+typedef struct _ABC {
+ int abcA;
+ UINT abcB;
+ int abcC;
+} ABC, *PABC;
+
+typedef struct tagRGBQUAD {
+ BYTE rgbBlue;
+ BYTE rgbGreen;
+ BYTE rgbRed;
+ BYTE rgbReserved;
+} RGBQUAD;
+
+typedef struct tagBITMAP
+ {
+ LONG bmType;
+ LONG bmWidth;
+ LONG bmHeight;
+ LONG bmWidthBytes;
+ WORD bmPlanes;
+ WORD bmBitsPixel;
+ LPVOID bmBits;
+ } BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP;
+
+typedef struct tagBITMAPINFOHEADER{
+ DWORD biSize;
+ LONG biWidth;
+ LONG biHeight;
+ WORD biPlanes;
+ WORD biBitCount;
+ DWORD biCompression;
+ DWORD biSizeImage;
+ LONG biXPelsPerMeter;
+ LONG biYPelsPerMeter;
+ DWORD biClrUsed;
+ DWORD biClrImportant;
+} BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER;
+
+typedef struct tagBITMAPINFO {
+ BITMAPINFOHEADER bmiHeader;
+ RGBQUAD bmiColors[1];
+} BITMAPINFO, *PBITMAPINFO, *LPBITMAPINFO;
+
+typedef struct tagBITMAPFILEHEADER {
+ WORD bfType;
+ DWORD bfSize;
+ WORD bfReserved1;
+ WORD bfReserved2;
+ DWORD bfOffBits;
+} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
+
+typedef struct tagRGBTRIPLE {
+ BYTE rgbtBlue;
+ BYTE rgbtGreen;
+ BYTE rgbtRed;
+} RGBTRIPLE;
+
+typedef struct tagBITMAPCOREHEADER {
+ DWORD bcSize;
+ WORD bcWidth;
+ WORD bcHeight;
+ WORD bcPlanes;
+ WORD bcBitCount;
+} BITMAPCOREHEADER, *PBITMAPCOREHEADER;
+
+typedef struct _BITMAPCOREINFO {
+ BITMAPCOREHEADER bmciHeader;
+ RGBTRIPLE bmciColors[1];
+} BITMAPCOREINFO, *PBITMAPCOREINFO, *LPBITMAPCOREINFO;
+
+typedef struct _OSVERSIONINFO
+{
+ DWORD dwOSVersionInfoSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ DWORD dwBuildNumber;
+ DWORD dwPlatformId;
+ TCHAR szCSDVersion[128];
+} OSVERSIONINFO, *LPOSVERSIONINFO;
+
+typedef struct _OSVERSIONINFOEX
+{
+ DWORD dwOSVersionInfoSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ DWORD dwBuildNumber;
+ DWORD dwPlatformId;
+ TCHAR szCSDVersion[128];
+ WORD wServicePackMajor;
+ WORD wServicePackMinor;
+ WORD wSuiteMask;
+ BYTE wProductType;
+ BYTE wReserved;
+} OSVERSIONINFOEX, *POSVERSIONINFOEX, *LPOSVERSIONINFOEX;
+
+typedef enum {
+ INTERNET_SCHEME_PARTIAL = -2,
+ INTERNET_SCHEME_UNKNOWN = -1,
+ INTERNET_SCHEME_DEFAULT = 0,
+ INTERNET_SCHEME_FTP,
+ INTERNET_SCHEME_GOPHER,
+ INTERNET_SCHEME_HTTP,
+ INTERNET_SCHEME_HTTPS,
+ INTERNET_SCHEME_FILE,
+ INTERNET_SCHEME_NEWS,
+ INTERNET_SCHEME_MAILTO,
+ INTERNET_SCHEME_SOCKS,
+ INTERNET_SCHEME_JAVASCRIPT,
+ INTERNET_SCHEME_VBSCRIPT,
+ INTERNET_SCHEME_ABOUT,
+ INTERNET_SCHEME_RES,
+ INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP,
+ INTERNET_SCHEME_LAST = INTERNET_SCHEME_VBSCRIPT
+} INTERNET_SCHEME, * LPINTERNET_SCHEME;
+
+typedef struct {
+ DWORD dwStructSize;
+ LPTSTR lpszScheme;
+ DWORD dwSchemeLength;
+ INTERNET_SCHEME nScheme;
+ LPTSTR lpszHostName;
+ DWORD dwHostNameLength;
+ UINT nPort;
+ LPTSTR lpszUserName;
+ DWORD dwUserNameLength;
+ LPTSTR lpszPassword;
+ DWORD dwPasswordLength;
+ LPTSTR lpszUrlPath;
+ DWORD dwUrlPathLength;
+ LPTSTR lpszExtraInfo;
+ DWORD dwExtraInfoLength;
+} URL_COMPONENTS, *LPURL_COMPONENTS;
+
+typedef struct _COORD
+{
+ SHORT X;
+ SHORT Y;
+} COORD, *PCOORD;
+
+typedef struct _SMALL_RECT
+{
+ SHORT Left;
+ SHORT Top;
+ SHORT Right;
+ SHORT Bottom;
+} SMALL_RECT;
+
+typedef struct _CONSOLE_SCREEN_BUFFER_INFO
+{
+ COORD dwSize;
+ COORD dwCursorPosition;
+ WORD wAttributes;
+ SMALL_RECT srWindow;
+ COORD dwMaximumWindowSize;
+} CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO;
+
+typedef struct _WINDOW_BUFFER_SIZE_RECORD
+{
+ COORD dwSize;
+} WINDOW_BUFFER_SIZE_RECORD, *PWINDOW_BUFFER_SIZE_RECORD;
+
+typedef struct _MENU_EVENT_RECORD
+{
+ UINT dwCommandId;
+} MENU_EVENT_RECORD, *PMENU_EVENT_RECORD;
+
+typedef struct _FOCUS_EVENT_RECORD
+{
+ BOOL bSetFocus;
+} FOCUS_EVENT_RECORD, *PFOCUS_EVENT_RECORD;
+
+typedef struct _KEY_EVENT_RECORD
+{
+ BOOL bKeyDown;
+ WORD wRepeatCount;
+ WORD wVirtualKeyCode;
+ WORD wVirtualScanCode;
+ union {
+ WCHAR UnicodeChar;
+ CHAR AsciiChar;
+ } uChar;
+ DWORD dwControlKeyState;
+} KEY_EVENT_RECORD, *PKEY_EVENT_RECORD;
+
+typedef struct _MOUSE_EVENT_RECORD
+{
+ COORD dwMousePosition;
+ DWORD dwButtonState;
+ DWORD dwControlKeyState;
+ DWORD dwEventFlags;
+} MOUSE_EVENT_RECORD, *PMOUSE_EVENT_RECORD;
+
+typedef struct _INPUT_RECORD
+{
+ WORD EventType;
+ union {
+ KEY_EVENT_RECORD KeyEvent;
+ MOUSE_EVENT_RECORD MouseEvent;
+ WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
+ MENU_EVENT_RECORD MenuEvent;
+ FOCUS_EVENT_RECORD FocusEvent;
+ } Event;
+} INPUT_RECORD, *PINPUT_RECORD;
+
+typedef GUID UUID;
+
+#define MAXPNAMELEN 32
+#define MAX_JOYSTICKOEMVXDNAME 260
+
+typedef struct
+{
+ WORD wMid;
+ WORD wPid;
+ CHAR szPname[MAXPNAMELEN];
+ UINT wXmin;
+ UINT wXmax;
+ UINT wYmin;
+ UINT wYmax;
+ UINT wZmin;
+ UINT wZmax;
+ UINT wNumButtons;
+ UINT wPeriodMin;
+ UINT wPeriodMax;
+ UINT wRmin;
+ UINT wRmax;
+ UINT wUmin;
+ UINT wUmax;
+ UINT wVmin;
+ UINT wVmax;
+ UINT wCaps;
+ UINT wMaxAxes;
+ UINT wNumAxes;
+ UINT wMaxButtons;
+ CHAR szRegKey[MAXPNAMELEN];
+ CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
+} JOYCAPS, *LPJOYCAPS;
+
+typedef struct joyinfoex_tag
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwXpos;
+ DWORD dwYpos;
+ DWORD dwZpos;
+ DWORD dwRpos;
+ DWORD dwUpos;
+ DWORD dwVpos;
+ DWORD dwButtons;
+ DWORD dwButtonNumber;
+ DWORD dwPOV;
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+} JOYINFOEX, *LPJOYINFOEX;
+
+typedef struct _MEMORYSTATUSEX
+{
+ DWORD dwLength;
+ DWORD dwMemoryLoad;
+ DWORDLONG ullTotalPhys;
+ DWORDLONG ullAvailPhys;
+ DWORDLONG ullTotalPageFile;
+ DWORDLONG ullAvailPageFile;
+ DWORDLONG ullTotalVirtual;
+ DWORDLONG ullAvailVirtual;
+ DWORDLONG ullAvailExtendedVirtual;
+} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;
+
+typedef struct tagCOPYDATASTRUCT
+{
+ ULONG_PTR dwData;
+ DWORD cbData;
+ PVOID lpData;
+} COPYDATASTRUCT, *PCOPYDATASTRUCT;
+
+typedef LPVOID HINTERNET;
+
+typedef VOID (CALLBACK * INTERNET_STATUS_CALLBACK)(
+ IN HINTERNET hInternet,
+ IN DWORD_PTR dwContext,
+ IN DWORD dwInternetStatus,
+ IN LPVOID lpvStatusInformation OPTIONAL,
+ IN DWORD dwStatusInformationLength
+ );
+
+typedef struct
+{
+ DWORD dwStructSize; // size of this structure. Used in version check
+ LPSTR lpszScheme; // pointer to scheme name
+ DWORD dwSchemeLength; // length of scheme name
+ INTERNET_SCHEME nScheme; // enumerated scheme type (if known)
+ LPSTR lpszHostName; // pointer to host name
+ DWORD dwHostNameLength; // length of host name
+ UINT nPort; // converted port number
+ LPSTR lpszUserName; // pointer to user name
+ DWORD dwUserNameLength; // length of user name
+ LPSTR lpszPassword; // pointer to password
+ DWORD dwPasswordLength; // length of password
+ LPSTR lpszUrlPath; // pointer to URL-path
+ DWORD dwUrlPathLength; // length of URL-path
+ LPSTR lpszExtraInfo; // pointer to extra information (e.g. ?foo or #foo)
+ DWORD dwExtraInfoLength; // length of extra information
+} URL_COMPONENTSA, * LPURL_COMPONENTSA;
+
+struct hostent
+{
+ char FAR * h_name; /* official name of host */
+ char FAR * FAR * h_aliases; /* alias list */
+ short h_addrtype; /* host address type */
+ short h_length; /* length of address */
+ char FAR * FAR * h_addr_list; /* list of addresses */
+#define h_addr h_addr_list[0] /* address, for backward compat */
+};
+
+#define WHEEL_DELTA 120
+
+#define ANSI_CHARSET 0
+#define SYMBOL_CHARSET 1
+
+#define NONANTIALIASED_QUALITY 0
+#define ANTIALIASED_QUALITY 4
+
+#define SPI_SETMOUSE 1
+#define SPI_GETMOUSE 2
+
+#define SC_SCREENSAVE 0
+#define SC_CLOSE 1
+#define SC_KEYMENU 2
+#define SC_MONITORPOWER 3
+
+#define SIZE_MINIMIZED 0
+
+#define DM_PELSWIDTH 0
+#define DM_PELSHEIGHT 0
+#define DM_BITSPERPEL 0
+#define DM_DISPLAYFREQUENCY 0
+
+#define CDS_FULLSCREEN 0
+
+#define FILE_TYPE_UNKNOWN 0
+#define FILE_TYPE_DISK 1
+
+#define HORZRES 1
+#define VERTRES 2
+#define VREFRESH 3
+
+#define FILE_MAP_ALL_ACCESS 0
+#define FILE_MAP_COPY 1
+#define FILE_MAP_WRITE 2
+#define FILE_MAP_READ 3
+
+#define PBT_APMQUERYSUSPEND 0
+#define BROADCAST_QUERY_DENY 0x424D5144
+
+#define IDOK 0
+#define IDCANCEL 1
+
+#define IMAGE_ICON 0
+#define MB_ICONEXCLAMATION 1
+#define MB_OKCANCEL 2
+#define MB_SYSTEMMODAL 3
+#define MB_ICONERROR 4
+
+#define LR_DEFAULTCOLOR 0x0000
+#define LR_MONOCHROME 0x0001
+#define LR_COLOR 0x0002
+#define LR_COPYRETURNORG 0x0004
+#define LR_COPYDELETEORG 0x0008
+#define LR_LOADFROMFILE 0x0010
+#define LR_LOADTRANSPARENT 0x0020
+#define LR_DEFAULTSIZE 0x0040
+#define LR_VGACOLOR 0x0080
+#define LR_LOADMAP3DCOLORS 0x1000
+#define LR_CREATEDIBSECTION 0x2000
+#define LR_COPYFROMRESOURCE 0x4000
+#define LR_SHARED 0x8000
+
+#define MAKEINTRESOURCE( res ) ((ULONG_PTR) (USHORT) res)
+#define CREATE_NEW_CONSOLE 0x00000010
+
+// registry
+#define REG_OPTION_NON_VOLATILE 0ul
+#define REG_CREATED_NEW_KEY 1
+#define HKEY_CLASSES_ROOT (HKEY)0
+
+// winsock
+#define MSG_NOSIGNAL 0
+#define MSG_PEEK 2
+
+// show styles
+#define SW_SHOWNORMAL 0
+#define SW_SHOWDEFAULT 1
+#define SW_SHOW 2
+#define SW_MINIMIZE 3
+
+#define SWP_NOZORDER 0x00000001
+#define SWP_NOREDRAW 0x00000002
+#define SWP_NOSIZE 0x00000004
+#define SWP_NOMOVE 0x00000008
+#define SWP_SHOWWINDOW 0x00000010
+#define SWP_DRAWFRAME 0x00000020
+
+// platform versions
+#define VER_PLATFORM_WIN32s 0
+#define VER_PLATFORM_WIN32_WINDOWS 1
+#define VER_PLATFORM_WIN32_NT 2
+
+// windows messages
+#define WM_CHAR 1
+#define WM_CLOSE 2
+#define WM_DESTROY 3
+#define WM_MOUSEMOVE 4
+#define WM_LBUTTONUP 5
+#define WM_LBUTTONDOWN 6
+#define WM_RBUTTONUP 7
+#define WM_RBUTTONDOWN 8
+#define WM_SETFOCUS 9
+#define WM_SETCURSOR 10
+#define WM_MBUTTONDOWN 11
+#define WM_MBUTTONUP 12
+#define WM_LBUTTONDBLCLK 13
+#define WM_RBUTTONDBLCLK 14
+#define WM_MBUTTONDBLCLK 15
+#define WM_MOUSEWHEEL 16
+#define WM_KEYDOWN 17
+#define WM_SYSKEYDOWN 18
+#define WM_SYSCHAR 19
+#define WM_KEYUP 20
+#define WM_SYSKEYUP 21
+#define WM_PAINT 23
+#define WM_COPYDATA 24
+#define WM_MOVE 25
+#define WM_ACTIVATEAPP 26
+#define WM_QUIT 27
+#define WM_CREATE 28
+#define WM_SYSCOMMAND 29
+#define WM_SIZE 30
+#define WM_SETTINGCHANGE 31
+#define WM_USER 32
+#define WM_POWERBROADCAST 33
+#define WM_IME_CHAR 34
+#define WM_IME_NOTIFY 35
+#define WM_IME_STARTCOMPOSITION 36
+#define WM_IME_COMPOSITION 37
+#define WM_IME_ENDCOMPOSITION 38
+#define WM_IME_SETCONTEXT 39
+#define WM_INPUTLANGCHANGE 40
+
+#define IMN_OPENCANDIDATE 0
+#define IMN_SETOPENSTATUS 1
+#define IMN_CHANGECANDIDATE 2
+#define IMN_CLOSECANDIDATE 3
+#define IMN_SETCONVERSIONMODE 4
+#define IMN_SETSENTENCEMODE 5
+#define IMN_CLOSESTATUSWINDOW 6
+#define IMN_GUIDELINE 7
+#define IMN_OPENSTATUSWINDOW 8
+#define IMN_SETCANDIDATEPOS 9
+#define IMN_SETCOMPOSITIONFONT 10
+#define IMN_SETCOMPOSITIONWINDOW 11
+#define IMN_SETSTATUSWINDOWPOS 12
+
+#define ISC_SHOWUICOMPOSITIONWINDOW 0
+#define ISC_SHOWUIGUIDELINE 0
+#define ISC_SHOWUIALLCANDIDATEWINDOW 0
+
+// message box
+#define MB_OK 0
+#define MB_ICONINFORMATION 0
+#define MB_TOPMOST 0
+#define SEM_NOGPFAULTERRORBOX 2
+
+// class styles
+#define CS_OWNDC 0
+#define CS_DBLCLKS 0
+#define CS_CLASSDC 0
+#define CS_HREDRAW 0
+#define CS_VREDRAW 0
+
+#define IDC_ARROW 0
+
+#define STD_INPUT_HANDLE ((DWORD)-10)
+#define STD_OUTPUT_HANDLE ((DWORD)-11)
+
+#define COLOR_GRAYTEXT 0
+#define WHITE_BRUSH 0
+#define SRCCOPY 0
+
+/* Font Weights */
+#define FW_DONTCARE 0
+#define FW_THIN 100
+#define FW_EXTRALIGHT 200
+#define FW_LIGHT 300
+#define FW_NORMAL 400
+#define FW_MEDIUM 500
+#define FW_SEMIBOLD 600
+#define FW_BOLD 700
+#define FW_EXTRABOLD 800
+#define FW_HEAVY 900
+
+#define CLIP_DEFAULT_PRECIS 0
+#define DEFAULT_PITCH 0
+#define TRANSPARENT 1
+#define OUT_TT_PRECIS 4
+#define BI_RGB 0L
+#define IMAGE_BITMAP 0
+
+#define DT_NOPREFIX 0x00000000
+#define DT_VCENTER 0x00000000
+#define DT_CENTER 0x00000000
+#define DT_LEFT 0x00000000
+#define DT_RIGHT 0x00000000
+#define DT_SINGLELINE 0x00000000
+
+#define DIB_RGB_COLORS 0
+
+// window styles
+#define WS_OVERLAPPEDWINDOW 0
+#define WS_POPUP 0
+#define WS_CLIPSIBLINGS 0
+#define WS_THICKFRAME 0
+#define WS_MAXIMIZEBOX 0
+#define WS_VISIBLE 0
+#define WS_EX_TOOLWINDOW 0
+#define WS_EX_TOPMOST 0
+#define WS_CAPTION 0
+#define WS_SYSMENU 0
+#define WS_CLIPCHILDREN 0
+
+// cursors
+#define OCR_NORMAL 1
+#define OCR_IBEAM 2
+#define OCR_WAIT 3
+#define OCR_CROSS 4
+#define OCR_UP 5
+#define OCR_SIZENWSE 6
+#define OCR_SIZENESW 7
+#define OCR_SIZEWE 8
+#define OCR_SIZENS 9
+#define OCR_SIZEALL 10
+#define OCR_NO 11
+#define OCR_HAND 12
+
+// system metrics
+#define SM_CXFIXEDFRAME 1
+#define SM_CYFIXEDFRAME 2
+#define SM_CYSIZE 3
+#define SM_CXSCREEN 4
+#define SM_CYSCREEN 5
+
+// window longs
+#define GWLP_WNDPROC (-4)
+#define GWLP_HINSTANCE (-6)
+#define GWLP_HWNDPARENT (-8)
+#define GWLP_USERDATA (-21)
+#define GWLP_ID (-12)
+
+#define GWL_WNDPROC 0
+#define GWL_USERDATA 1
+#define GWL_STYLE 2
+#define GWL_EXSTYLE 3
+#define GWL_MAX 4
+
+#define HWND_TOP ((HWND)0)
+#define HWND_BOTTOM ((HWND)1)
+#define HWND_TOPMOST ((HWND)-1)
+#define HWND_NOTOPMOST ((HWND)-2)
+#define HWND_BROADCAST 0
+
+// PeekMessage
+#define PM_NOREMOVE 0x0000
+#define PM_REMOVE 0x0001
+#define PM_NOYIELD 0x0002
+
+#define MK_LBUTTON 0x0001
+#define MK_RBUTTON 0x0002
+#define MK_MBUTTON 0x0004
+
+// File attributes
+#define FILE_ATTRIBUTE_COMPRESSED 0x00000800
+
+#define QS_INPUT 0
+#define QS_ALLEVENTS 5
+#define KEY_EVENT 0
+
+// sockets
+#define SO_KEEPALIVE 8
+
+// Download status cases
+#define INTERNET_STATUS_RESOLVING_NAME 0
+#define INTERNET_STATUS_NAME_RESOLVED 1
+#define INTERNET_STATUS_CONNECTING_TO_SERVER 2
+#define INTERNET_STATUS_CONNECTED_TO_SERVER 3
+#define INTERNET_STATUS_SENDING_REQUEST 4
+#define INTERNET_STATUS_REQUEST_SENT 5
+#define INTERNET_STATUS_REQUEST_COMPLETE 6
+#define INTERNET_STATUS_CLOSING_CONNECTION 7
+#define INTERNET_STATUS_CONNECTION_CLOSED 8
+#define INTERNET_STATUS_RECEIVING_RESPONSE 9
+#define INTERNET_STATUS_RESPONSE_RECEIVED 10
+#define INTERNET_STATUS_HANDLE_CLOSING 11
+#define INTERNET_STATUS_HANDLE_CREATED 12
+#define INTERNET_STATUS_INTERMEDIATE_RESPONSE 13
+#define INTERNET_STATUS_REDIRECT 14
+#define INTERNET_STATUS_STATE_CHANGE 15
+
+#define INTERNET_FLAG_RELOAD 0x80000000 // retrieve the original item
+#define INTERNET_FLAG_RAW_DATA 0x40000000 // FTP/gopher find: receive the item as raw (structured) data
+#define INTERNET_FLAG_EXISTING_CONNECT 0x20000000 // FTP: use existing InternetConnect handle for server if possible
+#define INTERNET_FLAG_ASYNC 0x10000000 // this request is asynchronous (where supported)
+#define INTERNET_FLAG_PASSIVE 0x08000000 // used for FTP connections
+#define INTERNET_FLAG_NO_CACHE_WRITE 0x04000000 // don't write this item to the cache
+#define INTERNET_FLAG_DONT_CACHE INTERNET_FLAG_NO_CACHE_WRITE
+#define INTERNET_FLAG_MAKE_PERSISTENT 0x02000000 // make this item persistent in cache
+#define INTERNET_FLAG_FROM_CACHE 0x01000000 // use offline semantics
+#define INTERNET_FLAG_OFFLINE INTERNET_FLAG_FROM_CACHE
+#define INTERNET_FLAG_SECURE 0x00800000 // use PCT/SSL if applicable (HTTP)
+#define INTERNET_FLAG_KEEP_CONNECTION 0x00400000 // use keep-alive semantics
+#define INTERNET_FLAG_NO_AUTO_REDIRECT 0x00200000 // don't handle redirections automatically
+#define INTERNET_FLAG_READ_PREFETCH 0x00100000 // do background read prefetch
+#define INTERNET_FLAG_NO_COOKIES 0x00080000 // no automatic cookie handling
+#define INTERNET_FLAG_NO_AUTH 0x00040000 // no automatic authentication handling
+#define INTERNET_FLAG_RESTRICTED_ZONE 0x00020000 // apply restricted zone policies for cookies, auth
+#define INTERNET_FLAG_CACHE_IF_NET_FAIL 0x00010000 // return cache file if net request fails
+#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP 0x00008000 // ex: https:// to http://
+#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS 0x00004000 // ex: http:// to https://
+#define INTERNET_FLAG_IGNORE_CERT_DATE_INVALID 0x00002000 // expired X509 Cert.
+#define INTERNET_FLAG_IGNORE_CERT_CN_INVALID 0x00001000 // bad common name in X509 Cert.
+
+#define INTERNET_OPEN_TYPE_PRECONFIG 0 // use registry configuration
+#define INTERNET_OPEN_TYPE_DIRECT 1 // direct to net
+#define INTERNET_OPEN_TYPE_PROXY 3 // via named proxy
+#define INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY 4 // prevent using java/script/INS
+
+#define HTTP_QUERY_CONTENT_LENGTH 5
+#define HTTP_QUERY_LAST_MODIFIED 11
+#define HTTP_QUERY_STATUS_CODE 19 // special: part of status line
+#define HTTP_QUERY_RAW_HEADERS_CRLF 22 // special: all headers
+#define HTTP_QUERY_FLAG_NUMBER 0x20000000
+#define HTTP_STATUS_OK 200 // request completed
+#define HTTP_STATUS_PARTIAL_CONTENT 206 // partial GET furfilled
+
+// Virtual Keys, Standard Set
+#define VK_LBUTTON 0x01
+#define VK_RBUTTON 0x02
+#define VK_CANCEL 0x03
+#define VK_MBUTTON 0x04 /* NOT contiguous with L & RBUTTON */
+#define VK_XBUTTON1 0x05 /* NOT contiguous with L & RBUTTON */
+#define VK_XBUTTON2 0x06 /* NOT contiguous with L & RBUTTON */
+#define VK_BACK 0x08
+#define VK_TAB 0x09
+#define VK_CLEAR 0x0C
+#define VK_RETURN 0x0D
+#define VK_SHIFT 0x10
+#define VK_CONTROL 0x11
+#define VK_MENU 0x12
+#define VK_PAUSE 0x13
+#define VK_CAPITAL 0x14
+#define VK_KANA 0x15
+#define VK_HANGEUL 0x15 /* old name - should be here for compatibility */
+#define VK_HANGUL 0x15
+#define VK_JUNJA 0x17
+#define VK_FINAL 0x18
+#define VK_HANJA 0x19
+#define VK_KANJI 0x19
+#define VK_ESCAPE 0x1B
+#define VK_CONVERT 0x1C
+#define VK_NONCONVERT 0x1D
+#define VK_ACCEPT 0x1E
+#define VK_MODECHANGE 0x1F
+#define VK_SPACE 0x20
+#define VK_PRIOR 0x21
+#define VK_NEXT 0x22
+#define VK_END 0x23
+#define VK_HOME 0x24
+#define VK_LEFT 0x25
+#define VK_UP 0x26
+#define VK_RIGHT 0x27
+#define VK_DOWN 0x28
+#define VK_SELECT 0x29
+#define VK_PRINT 0x2A
+#define VK_EXECUTE 0x2B
+#define VK_SNAPSHOT 0x2C
+#define VK_INSERT 0x2D
+#define VK_DELETE 0x2E
+#define VK_HELP 0x2F
+#define VK_LWIN 0x5B
+#define VK_RWIN 0x5C
+#define VK_APPS 0x5D
+#define VK_SLEEP 0x5F
+#define VK_NUMPAD0 0x60
+#define VK_NUMPAD1 0x61
+#define VK_NUMPAD2 0x62
+#define VK_NUMPAD3 0x63
+#define VK_NUMPAD4 0x64
+#define VK_NUMPAD5 0x65
+#define VK_NUMPAD6 0x66
+#define VK_NUMPAD7 0x67
+#define VK_NUMPAD8 0x68
+#define VK_NUMPAD9 0x69
+#define VK_MULTIPLY 0x6A
+#define VK_ADD 0x6B
+#define VK_SEPARATOR 0x6C
+#define VK_SUBTRACT 0x6D
+#define VK_DECIMAL 0x6E
+#define VK_DIVIDE 0x6F
+#define VK_F1 0x70
+#define VK_F2 0x71
+#define VK_F3 0x72
+#define VK_F4 0x73
+#define VK_F5 0x74
+#define VK_F6 0x75
+#define VK_F7 0x76
+#define VK_F8 0x77
+#define VK_F9 0x78
+#define VK_F10 0x79
+#define VK_F11 0x7A
+#define VK_F12 0x7B
+#define VK_F13 0x7C
+#define VK_F14 0x7D
+#define VK_F15 0x7E
+#define VK_F16 0x7F
+#define VK_F17 0x80
+#define VK_F18 0x81
+#define VK_F19 0x82
+#define VK_F20 0x83
+#define VK_F21 0x84
+#define VK_F22 0x85
+#define VK_F23 0x86
+#define VK_F24 0x87
+#define VK_NUMLOCK 0x90
+#define VK_SCROLL 0x91
+#define VK_OEM_NEC_EQUAL 0x92 // '=' key on numpad
+#define VK_OEM_FJ_JISHO 0x92 // 'Dictionary' key
+#define VK_OEM_FJ_MASSHOU 0x93 // 'Unregister word' key
+#define VK_OEM_FJ_TOUROKU 0x94 // 'Register word' key
+#define VK_OEM_FJ_LOYA 0x95 // 'Left OYAYUBI' key
+#define VK_OEM_FJ_ROYA 0x96 // 'Right OYAYUBI' key
+#define VK_LSHIFT 0xA0
+#define VK_RSHIFT 0xA1
+#define VK_LCONTROL 0xA2
+#define VK_RCONTROL 0xA3
+#define VK_LMENU 0xA4
+#define VK_RMENU 0xA5
+#define VK_BROWSER_BACK 0xA6
+#define VK_BROWSER_FORWARD 0xA7
+#define VK_BROWSER_REFRESH 0xA8
+#define VK_BROWSER_STOP 0xA9
+#define VK_BROWSER_SEARCH 0xAA
+#define VK_BROWSER_FAVORITES 0xAB
+#define VK_BROWSER_HOME 0xAC
+#define VK_VOLUME_MUTE 0xAD
+#define VK_VOLUME_DOWN 0xAE
+#define VK_VOLUME_UP 0xAF
+#define VK_MEDIA_NEXT_TRACK 0xB0
+#define VK_MEDIA_PREV_TRACK 0xB1
+#define VK_MEDIA_STOP 0xB2
+#define VK_MEDIA_PLAY_PAUSE 0xB3
+#define VK_LAUNCH_MAIL 0xB4
+#define VK_LAUNCH_MEDIA_SELECT 0xB5
+#define VK_LAUNCH_APP1 0xB6
+#define VK_LAUNCH_APP2 0xB7
+#define VK_OEM_1 0xBA // ';:' for US
+#define VK_OEM_PLUS 0xBB // '+' any country
+#define VK_OEM_COMMA 0xBC // ',' any country
+#define VK_OEM_MINUS 0xBD // '-' any country
+#define VK_OEM_PERIOD 0xBE // '.' any country
+#define VK_OEM_2 0xBF // '/?' for US
+#define VK_OEM_3 0xC0 // '`~' for US
+#define VK_OEM_4 0xDB // '[{' for US
+#define VK_OEM_5 0xDC // '\|' for US
+#define VK_OEM_6 0xDD // ']}' for US
+#define VK_OEM_7 0xDE // ''"' for US
+#define VK_OEM_8 0xDF
+#define VK_OEM_AX 0xE1 // 'AX' key on Japanese AX kbd
+#define VK_OEM_102 0xE2 // "<>" or "\|" on RT 102-key kbd.
+#define VK_ICO_HELP 0xE3 // Help key on ICO
+#define VK_ICO_00 0xE4 // 00 key on ICO
+#define VK_PROCESSKEY 0xE5
+#define VK_ICO_CLEAR 0xE6
+#define VK_PACKET 0xE7
+#define VK_OEM_RESET 0xE9
+#define VK_OEM_JUMP 0xEA
+#define VK_OEM_PA1 0xEB
+#define VK_OEM_PA2 0xEC
+#define VK_OEM_PA3 0xED
+#define VK_OEM_WSCTRL 0xEE
+#define VK_OEM_CUSEL 0xEF
+#define VK_OEM_ATTN 0xF0
+#define VK_OEM_FINISH 0xF1
+#define VK_OEM_COPY 0xF2
+#define VK_OEM_AUTO 0xF3
+#define VK_OEM_ENLW 0xF4
+#define VK_OEM_BACKTAB 0xF5
+#define VK_ATTN 0xF6
+#define VK_CRSEL 0xF7
+#define VK_EXSEL 0xF8
+#define VK_EREOF 0xF9
+#define VK_PLAY 0xFA
+#define VK_ZOOM 0xFB
+#define VK_NONAME 0xFC
+#define VK_PA1 0xFD
+#define VK_OEM_CLEAR 0xFE
+
+// Error codes used in the Secure CRT functions
+#define EINVAL 22
+
+
+#ifdef getenv
+ #undef getenv
+#endif
+#ifdef _getenv
+ #undef _getenv
+#endif
+#define getenv XBX_getenv
+#define _getenv XBX_getenv
+FORCEINLINE char *XBX_getenv(const char *name) { return NULL; }
+
+#ifdef _putenv
+ #undef _putenv
+#endif
+#define _putenv XBX_putenv
+FORCEINLINE int XBX_putenv(const char *name) { return -1; }
+
+#ifdef GetEnvironmentVariable
+ #undef GetEnvironmentVariable
+#endif
+#define GetEnvironmentVariable XBX_GetEnvironmentVariable
+FORCEINLINE DWORD XBX_GetEnvironmentVariable( LPCTSTR lpName, LPTSTR lpBuffer, DWORD nSize ) { return 0; }
+
+#ifdef unlink
+ #undef unlink
+#endif
+#define unlink XBX_unlink
+PLATFORM_INTERFACE int XBX_unlink( const char* filename );
+
+#ifdef mkdir
+ #undef mkdir
+#endif
+#ifdef _mkdir
+ #undef _mkdir
+#endif
+#define mkdir XBX_mkdir
+#define _mkdir XBX_mkdir
+PLATFORM_INTERFACE int XBX_mkdir( const char *pszDir );
+
+#ifdef getcwd
+ #undef getcwd
+#endif
+#ifdef _getcwd
+ #undef _getcwd
+#endif
+#define getcwd XBX_getcwd
+#define _getcwd XBX_getcwd
+PLATFORM_INTERFACE char *XBX_getcwd( char *buf, size_t size );
+
+#ifdef GetCurrentDirectory
+ #undef GetCurrentDirectory
+#endif
+#define GetCurrentDirectory XBX_GetCurrentDirectory
+PLATFORM_INTERFACE DWORD XBX_GetCurrentDirectory( DWORD nBufferLength, LPTSTR lpBuffer );
+
+#ifdef _access
+ #undef _access
+#endif
+#define _access XBX_access
+PLATFORM_INTERFACE int XBX_access( const char *path, int mode );
+
+#ifdef _chdir
+ #undef _chdir
+#endif
+#define _chdir XBX_chdir
+FORCEINLINE int XBX_chdir( const char *dirname ) { return -1; }
+
+FORCEINLINE BOOL SetPriorityClass( HANDLE hProcess, DWORD dwPriorityClass ) { return FALSE; }
+
+PLATFORM_INTERFACE int MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType );
+
+#ifdef GetModuleFileName
+ #undef GetModuleFileName
+#endif
+#define GetModuleFileName XBX_GetModuleFileName
+PLATFORM_INTERFACE DWORD XBX_GetModuleFileName( HMODULE hModule, LPTSTR lpFilename, DWORD nSize );
+
+//FORCEINLINE int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ) { return WSASYSNOTREADY; }
+//FORCEINLINE int WSACleanup(void) { return WSANOTINITIALISED; }
+
+FORCEINLINE HRESULT CoInitialize( LPVOID pvReserved ) { return S_OK; }
+FORCEINLINE void CoUninitialize( void ) { }
+
+FORCEINLINE LRESULT DefWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { return 0L; }
+FORCEINLINE void PostQuitMessage(int nExitCode) { }
+
+FORCEINLINE HANDLE GetStdHandle( DWORD ) { return 0; }
+
+FORCEINLINE BOOL GetConsoleScreenBufferInfo( HANDLE, PCONSOLE_SCREEN_BUFFER_INFO ) { return false; }
+
+FORCEINLINE COORD GetLargestConsoleWindowSize( HANDLE ) { COORD c = { 0, 0 }; return c; }
+
+FORCEINLINE BOOL SetConsoleWindowInfo( HANDLE, BOOL, SMALL_RECT* ) { return false; }
+
+FORCEINLINE BOOL SetConsoleScreenBufferSize( HANDLE, COORD ) { return false; }
+
+FORCEINLINE BOOL ReadConsoleOutputCharacter( HANDLE, LPTSTR, DWORD, COORD, LPDWORD ) { return false; }
+
+FORCEINLINE BOOL WriteConsoleInput( HANDLE, CONST INPUT_RECORD*, DWORD, LPDWORD ) { return false; }
+
+FORCEINLINE HWND GetDesktopWindow(VOID) { return (HWND)0; }
+
+FORCEINLINE int GetWindowText( HWND, LPTSTR, int ) { return 0; }
+
+FORCEINLINE UINT RegisterWindowMessage(LPCTSTR lpString) { return 0xC000; }
+
+FORCEINLINE HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName) { return NULL; }
+
+FORCEINLINE BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam) { return FALSE; }
+
+FORCEINLINE BOOL PostMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { return FALSE; }
+
+FORCEINLINE BOOL SystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni) { return FALSE; }
+
+FORCEINLINE BOOL SetForegroundWindow(HWND hWnd) { return TRUE; }
+
+FORCEINLINE HDC BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint) { return NULL; }
+
+FORCEINLINE BOOL EndPaint(HWND hWnd, CONST PAINTSTRUCT *lpPaint) { return TRUE; }
+
+FORCEINLINE BOOL AdjustWindowRectEx(LPRECT lpRect, DWORD dwStyle, BOOL bMenu, DWORD dwExStyle) { return TRUE; }
+
+FORCEINLINE LONG ChangeDisplaySettings(LPDEVMODE lpDevMode, DWORD dwflags) { return DISP_CHANGE_SUCCESSFUL; }
+
+FORCEINLINE DWORD GetFileType(HANDLE hFile) { return FILE_TYPE_DISK; }
+
+FORCEINLINE BOOL FileTimeToDosDateTime(const FILETIME* lpFileTime, LPWORD lpFatDate, LPWORD lpFatTime)
+{
+ *lpFatDate = 0;
+ *lpFatTime = 0;
+ return TRUE;
+}
+
+FORCEINLINE BOOL DosDateTimeToFileTime(const WORD wFatDate, const WORD wFatTime, LPFILETIME lpFileTime )
+{
+ lpFileTime->dwHighDateTime = 0;
+ lpFileTime->dwLowDateTime = 0;
+ return TRUE;
+}
+
+FORCEINLINE BOOL SetViewportOrgEx( HDC, int, int, LPPOINT ) { return false; }
+
+FORCEINLINE BOOL MoveWindow( HWND, int, int, int, int, BOOL ) { return false; }
+
+FORCEINLINE int ShowCursor( BOOL ) { return 0; }
+
+FORCEINLINE HFONT CreateFontA( int, int, int, int, int, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPCSTR) { return 0; }
+
+FORCEINLINE int DrawText( HDC, LPCTSTR, int, LPRECT, UINT ) { return 0; }
+
+FORCEINLINE int SetBkMode( HDC, int ) { return 0; }
+
+FORCEINLINE COLORREF SetTextColor( HDC, COLORREF col ) { return col; }
+
+FORCEINLINE HBRUSH CreateSolidBrush( COLORREF ) { return 0; }
+
+FORCEINLINE BOOL Rectangle( HDC, int, int, int, int ) { return false; }
+
+FORCEINLINE HANDLE LoadImage( HINSTANCE, LPCSTR, UINT, int, int, UINT) { return 0; }
+FORCEINLINE HANDLE LoadImageA( HINSTANCE, LPCSTR, UINT, int, int, UINT) { return 0; }
+
+FORCEINLINE HICON LoadIcon( HINSTANCE hInstance, ULONG_PTR lpIconName) { return 0; }
+
+FORCEINLINE COLORREF SetPixel( HDC, int, int, COLORREF col ) { return col; }
+
+FORCEINLINE BOOL BitBlt( HDC, int, int, int, int, HDC, int, int, DWORD ) { return false; }
+
+FORCEINLINE HGDIOBJ GetStockObject( int ) { return 0; }
+
+FORCEINLINE int GetObject( HGDIOBJ, int, LPVOID ) { return 0; }
+
+FORCEINLINE int GetDIBits( HDC, HBITMAP, UINT, UINT, LPVOID, LPBITMAPINFO, UINT ) { return 0; }
+
+FORCEINLINE HDC GetDC(HWND hWnd) { return (HDC)0x12345678; }
+
+FORCEINLINE void ReleaseDC(HWND hWnd, HDC hDC) { }
+
+FORCEINLINE HDC CreateCompatibleDC( HDC ) { return 0; }
+
+FORCEINLINE HBITMAP CreateCompatibleBitmap( HDC, int, int ) { return 0; }
+
+FORCEINLINE HBITMAP CreateDIBSection( HDC, CONST BITMAPINFO *, UINT, VOID **ppBits, HANDLE, DWORD) { ppBits = NULL; return 0; }
+
+FORCEINLINE BOOL InvalidateRect( HWND, const RECT*, bool ) { return false; }
+
+FORCEINLINE UINT joyGetDevCaps( UINT uJoyID, JOYCAPS* pjc, UINT cbjc) { return 0; }
+
+FORCEINLINE UINT joyGetPosEx( UINT uJoyID, LPJOYINFOEX pji) { return 0; }
+
+FORCEINLINE UINT joyGetNumDevs(void) { return 0; }
+
+FORCEINLINE HKL GetKeyboardLayout( DWORD ) { return NULL; }
+
+FORCEINLINE HKL LoadKeyboardLayout( LPCTSTR, UINT ) { return NULL; }
+
+FORCEINLINE UINT MapVirtualKeyEx( UINT, UINT, HKL ) { return 0; }
+
+FORCEINLINE SHORT GetKeyState( int nVirtKey ) { return 0; }
+
+FORCEINLINE BOOL PeekMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg) { return FALSE; }
+
+FORCEINLINE BOOL TranslateMessage(CONST MSG *lpMsg) { return FALSE; }
+
+FORCEINLINE BOOL DispatchMessage(CONST MSG *lpMsg) { return FALSE; }
+
+FORCEINLINE BOOL UpdateWindow(HWND hWnd) { return FALSE; }
+
+FORCEINLINE LONG RegOpenKeyEx( HKEY hKey, LPCTSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult ) { return -1; }
+
+FORCEINLINE LONG RegQueryValueEx( HKEY hKey, LPCTSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ) { return -1; }
+
+FORCEINLINE LONG RegCreateKeyEx( HKEY hKey, LPCTSTR lpSubKey, DWORD Reserved, LPTSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition ) { return -1; }
+
+FORCEINLINE LONG RegSetValueEx( HKEY hKey, LPCTSTR lpValueName, DWORD Reserved, DWORD dwType, const BYTE* lpData, DWORD cbData ) { return -1; }
+
+FORCEINLINE LONG RegDeleteValue( HKEY hKey, LPCTSTR lpValueName ) { return -1; }
+
+FORCEINLINE LONG RegCloseKey( HKEY hKey ) { return -1; }
+
+FORCEINLINE BOOL ClientToScreen( HWND hwnd, LPPOINT lpPoint )
+{
+ lpPoint->x = 0;
+ lpPoint->y = 0;
+ return TRUE;
+}
+
+FORCEINLINE BOOL SetCursorPos( int x, int y ) { return FALSE; }
+
+FORCEINLINE BOOL UnregisterClass( LPCTSTR lpClassNAme, HINSTANCE hInstance ) { return TRUE; }
+FORCEINLINE BOOL UnregisterClassW( LPCWSTR lpClassNAme, HINSTANCE hInstance ) { return TRUE; }
+
+FORCEINLINE HCURSOR LoadCursor( HINSTANCE, LPCTSTR lpCursorName ) { return NULL; }
+
+FORCEINLINE HWND GetParent( HWND hWnd ) { return NULL; }
+
+FORCEINLINE BOOL EnumChildWindows( HWND hWndParent, WNDENUMPROC lpEnumFunc, LPARAM lParam ) { return FALSE; }
+
+FORCEINLINE BOOL IsIconic( HWND hWnd ) { return FALSE; }
+
+FORCEINLINE BOOL DestroyCursor( HCURSOR hCursor ) { return TRUE; }
+
+FORCEINLINE HCURSOR LoadCursorFromFile( LPCTSTR lpFileName ) { return NULL; }
+
+FORCEINLINE HCURSOR SetCursor( HCURSOR hCursor ) { return NULL; }
+
+FORCEINLINE BOOL GetCursorPos( LPPOINT lpPoint ) { return TRUE; }
+
+FORCEINLINE BOOL ScreenToClient( HWND hWnd, LPPOINT lpPoint ) { return TRUE; }
+
+FORCEINLINE HWND SetCapture( HWND hWnd ) { return NULL; }
+
+FORCEINLINE BOOL ReleaseCapture() { return TRUE; }
+
+FORCEINLINE BOOL DeleteObject( HGDIOBJ hObject ) { return TRUE; }
+
+FORCEINLINE BOOL DeleteDC( HDC hdc ) { return TRUE; }
+
+FORCEINLINE HGDIOBJ SelectObject( HDC hdc, HGDIOBJ hgdiobj ) { return NULL; }
+
+FORCEINLINE BOOL GetComputerName( LPTSTR lpBuffer, LPDWORD nSize ) { return FALSE; }
+
+FORCEINLINE BOOL GetUserName( LPTSTR lpBuffer, LPDWORD nSize ) { return FALSE; }
+
+FORCEINLINE UINT SetErrorMode( UINT mode ) { return 0; }
+
+FORCEINLINE MCIERROR mciGetDeviceID( LPCTSTR ) { return 0; }
+
+FORCEINLINE MCIERROR mciSendString( LPCTSTR lpszCommand, LPTSTR lpszReturnString, UINT cchReturn, HANDLE hwndCallback ) { return 0; }
+
+FORCEINLINE MCIERROR mciSendCommand( MCIDEVICEID, UINT, DWORD, DWORD ) { return (UINT)MCIERR_DRIVER; }
+
+FORCEINLINE BOOL mciGetErrorString( MCIERROR, LPTSTR, UINT ) { return false; };
+
+FORCEINLINE int UuidCreate( UUID *newId ) { return 0; };
+
+FORCEINLINE HANDLE CreateFileMapping( HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCTSTR ) { return NULL; }
+
+FORCEINLINE LPVOID MapViewOfFile( HANDLE, DWORD, DWORD, DWORD, SIZE_T ) { return NULL; }
+
+FORCEINLINE BOOL UnmapViewOfFile( LPCVOID ) { return false; }
+
+FORCEINLINE BOOL GetVersionEx( LPOSVERSIONINFO lpVersionInfo ) { lpVersionInfo->dwPlatformId = VER_PLATFORM_WIN32_NT; return true; }
+
+FORCEINLINE BOOL GlobalMemoryStatusEx( LPMEMORYSTATUSEX lpBuffer ) { return false; }
+
+FORCEINLINE BOOL TerminateThread( HANDLE hThread, DWORD dwExitCode ) { return false; }
+
+FORCEINLINE BOOL HttpQueryInfo( HINTERNET hRequest, DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex ) { return false; }
+
+FORCEINLINE struct hostent FAR * _stdcall FAR gethostbyname( const char FAR * name ) { return NULL; }
+
+FORCEINLINE BOOL InternetReadFile(HINTERNET hFile, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, LPDWORD lpdwNumberOfBytesRead ) { return false; }
+
+FORCEINLINE BOOL InternetCloseHandle( HINTERNET hInternet ) { return false; }
+
+FORCEINLINE BOOL InternetCrackUrl( LPCSTR lpszUrl, DWORD dwUrlLength, DWORD dwFlags, LPURL_COMPONENTS lpUrlComponents ) { return false; }
+
+FORCEINLINE HINTERNET InternetOpen( LPCSTR lpszAgent, DWORD dwAccessType, LPCSTR lpszProxy OPTIONAL, LPCSTR lpszProxyBypass OPTIONAL, DWORD dwFlags ) { return 0; }
+
+FORCEINLINE INTERNET_STATUS_CALLBACK InternetSetStatusCallback( HINTERNET hInternet, INTERNET_STATUS_CALLBACK lpfnInternetCallback ) { return NULL; }
+
+FORCEINLINE HINTERNET InternetOpenUrl( HINTERNET hInternet, LPCSTR lpszUrl,LPCSTR lpszHeaders OPTIONAL, DWORD dwHeadersLength, DWORD dwFlags, DWORD_PTR dwContext ) { return 0; }
+
+FORCEINLINE BOOL TerminateProcess( HANDLE, UINT ) { return false; }
+
+FORCEINLINE DWORD MsgWaitForMultipleObjects( DWORD, CONST HANDLE*, BOOL, DWORD, DWORD ) { return 0; }
+
+FORCEINLINE int gethostname( char *dest, int len ) { strncpy( dest, "localhost", len ); return 0; }
+
+FORCEINLINE BOOL GetProcessTimes( HANDLE, LPFILETIME ft1, LPFILETIME ft2, LPFILETIME ft3, LPFILETIME ft4 ) { return false; }
+
+//FORCEINLINE time_t Time(time_t *today) { ULARGE_INTEGER ul; GetSystemTimeAsFileTime( (FILETIME*)&ul ); if(today) *today=ul.QuadPart; return ul.QuadPart; }
+FORCEINLINE long Time(long *today) { ULARGE_INTEGER ul; GetSystemTimeAsFileTime( (FILETIME*)&ul ); if(today) *today=ul.QuadPart; return ul.QuadPart; }
+
+FORCEINLINE BOOL CreateProcess( LPCSTR lpApplicationName,
+ LPSTR lpCommandLine,
+ LPSECURITY_ATTRIBUTES lpProcessAttributes,
+ LPSECURITY_ATTRIBUTES lpThreadAttributes,
+ BOOL bInheritHandles, DWORD dwCreationFlags,
+ LPVOID lpEnvironment, LPCSTR lpCurrentDirectory,
+ LPSTARTUPINFO lpStartupInfo,
+ LPPROCESS_INFORMATION lpProcessInformation )
+{
+ return false;
+}
+
+PLATFORM_INTERFACE DWORD g_dwProcessAffinityMask;
+
+FORCEINLINE bool GetProcessAffinityMask( HANDLE hProcess, DWORD *lpProcessAffinityMask, DWORD *lpSystemAffinityMask )
+{
+ *lpProcessAffinityMask = g_dwProcessAffinityMask;
+ *lpSystemAffinityMask = 0x01;
+ return true;
+}
+
+FORCEINLINE bool SetProcessAffinityMask( HANDLE hProcess, DWORD dwProcessAffinityMask )
+{
+ if ( dwProcessAffinityMask == 0 )
+ {
+ // invalid
+ return false;
+ }
+
+ g_dwProcessAffinityMask = dwProcessAffinityMask;
+ return true;
+}
+
+FORCEINLINE DWORD_PTR SetThreadAffinityMask( HANDLE hThread, DWORD_PTR dwThreadAffinityMask )
+{
+ if ( dwThreadAffinityMask == 0 )
+ {
+ // invalid
+ return 0;
+ }
+
+ // must select a specific processor, even if affinity mask specifies multiple.
+ // bit mask to enum will choose last valid processor
+ DWORD dwProcessor = 0;
+ while ( dwThreadAffinityMask >>= 1 )
+ dwProcessor++;
+
+ dwProcessor = XSetThreadProcessor( hThread, dwProcessor );
+ if ( dwProcessor == (DWORD)-1 )
+ {
+ // failed
+ return 0;
+ }
+
+ // back to bit mask
+ return ( 1<<dwProcessor );
+}
+
+// snd_win.cpp
+class IAudioDevice;
+class CAudioSource;
+FORCEINLINE IAudioDevice *Audio_CreateWaveDevice( void ) { return NULL; }
+FORCEINLINE IAudioDevice *Audio_CreateDirectSoundDevice( void ) { return NULL; }
+FORCEINLINE CAudioSource* Voice_SetupAudioSource( int soundsource, int entchannel ) { return NULL; }
+
+// snd_wave_source.cpp
+FORCEINLINE float GetMP3Duration_Helper( char const *filename ) { return 0.f; }
+
+// host.cpp
+FORCEINLINE void InitPME() {}
+FORCEINLINE void ShutdownPME() {}
+
+// Steam API stubs
+class ISteamClient;
+class ISteamGameServer;
+class ISteamUtils;
+class ISteamUser;
+class ISteamUserStats;
+class ISteamFriends;
+class ISteamMasterServerUpdater;
+enum EServerMode;
+FORCEINLINE ISteamClient *SteamClient() { return NULL; }
+FORCEINLINE ISteamGameServer *SteamGameServer() { return NULL; }
+FORCEINLINE ISteamUtils *SteamGameServerUtils() { return NULL; }
+FORCEINLINE ISteamUtils *SteamUtils() { return NULL; }
+FORCEINLINE ISteamUser *SteamUser() { return NULL; }
+FORCEINLINE ISteamUserStats *SteamUserStats() { return NULL; }
+FORCEINLINE ISteamFriends *SteamFriends() { return NULL; }
+FORCEINLINE int32 GetHSteamPipe() { return 0; }
+FORCEINLINE int32 GetHSteamUser() { return 0; }
+FORCEINLINE int32 SteamAPI_GetHSteamPipe() { return 0; }
+FORCEINLINE int32 SteamAPI_GetHSteamUser() { return 0; }
+FORCEINLINE ISteamMasterServerUpdater *SteamMasterServerUpdater() { return NULL; }
+FORCEINLINE bool SteamGameServer_Init( uint32 unIP, uint16 usPort, uint16 usGamePort, uint16 usSpectatorPort, uint16 usQueryPort, EServerMode eServerMode, int nGameAppId, const char *pchGameDir, const char *pchVersionString ) { return false; }
+FORCEINLINE void SteamGameServer_Shutdown() {}
+FORCEINLINE void SteamGameServer_RunCallbacks() {}
+
+FORCEINLINE int getch( void ) { return 0; }
+
+PLATFORM_INTERFACE LONG GetWindowLong( HWND hWnd, int nIndex );
+PLATFORM_INTERFACE LONG SetWindowLong( HWND hWnd, int nIndex, LONG dwNewLong );
+PLATFORM_INTERFACE LONG_PTR GetWindowLongPtr( HWND hWnd, int nIndex );
+PLATFORM_INTERFACE LONG_PTR SetWindowLongPtr( HWND hWnd, int nIndex, LONG dwNewLong );
+PLATFORM_INTERFACE LONG_PTR GetWindowLongPtrW( HWND hWnd, int nIndex ); // false stub -- no work has been done to make unicode version of this function on 360
+PLATFORM_INTERFACE LONG_PTR SetWindowLongPtrW( HWND hWnd, int nIndex, LONG dwNewLong ); // false stub -- no work has been done to make unicode version of this function on 360
+PLATFORM_INTERFACE HWND CreateWindow( LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam );
+PLATFORM_INTERFACE HWND CreateWindowEx( DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam );
+PLATFORM_INTERFACE BOOL DestroyWindow( HWND hWnd );
+PLATFORM_INTERFACE ATOM RegisterClassEx( CONST WNDCLASSEX *lpwcx );
+PLATFORM_INTERFACE ATOM RegisterClass( CONST WNDCLASS *lpwc );
+PLATFORM_INTERFACE HWND GetFocus( VOID );
+PLATFORM_INTERFACE HWND SetFocus( HWND hWnd );
+PLATFORM_INTERFACE int GetSystemMetrics( int nIndex );
+PLATFORM_INTERFACE BOOL ShowWindow( HWND hWnd, int nCmdShow );
+PLATFORM_INTERFACE LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );
+PLATFORM_INTERFACE LRESULT CallWindowProc( WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );
+PLATFORM_INTERFACE BOOL GetClientRect( HWND hwnd, LPRECT lpRect );
+PLATFORM_INTERFACE int GetDeviceCaps( HDC hdc, int nIndex );
+PLATFORM_INTERFACE LRESULT SendMessageTimeout( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, UINT fuFlags, UINT uTimeout, PDWORD_PTR lpdwResult );
+PLATFORM_INTERFACE BOOL SetWindowPos( HWND hWnd, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags );
+
+
+
+
+
+
+
+