Reactos
1/*
2 * minwindef.h
3 *
4 * Basic Win-API definitions
5 *
6 * This file is part of the ReactOS SDK.
7 *
8 * Contributors:
9 * Created by Timo Kreuzer <timo.kreuzer@reactos.org>
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23#ifndef _MINWINDEF_
24#define _MINWINDEF_
25
26#pragma once
27
28#include <specstrings.h>
29
30#ifndef NO_STRICT
31#ifndef STRICT
32#define STRICT 1
33#endif
34#endif
35
36#ifndef WIN32
37#define WIN32
38#endif
39
40#if defined(_MAC) && !defined(_WIN32)
41#define _WIN32
42#endif
43
44#ifndef BASETYPES
45#define BASETYPES
46#ifndef __ROS_LONG64__
47typedef unsigned long ULONG;
48#else
49typedef unsigned int ULONG;
50#endif
51typedef ULONG *PULONG;
52typedef unsigned short USHORT;
53typedef USHORT *PUSHORT;
54typedef unsigned char UCHAR;
55typedef UCHAR *PUCHAR;
56typedef _Null_terminated_ char *PSZ;
57#endif /* BASETYPES */
58
59#undef MAX_PATH // TODO: Remove this
60#define MAX_PATH 260
61
62#ifndef NULL
63#ifdef __cplusplus
64#ifndef _WIN64
65#define NULL 0
66#else
67#define NULL 0LL
68#endif /* W64 */
69#else
70#define NULL ((void *)0)
71#endif
72#endif
73
74#ifndef FALSE
75#define FALSE 0
76#endif
77
78#ifndef TRUE
79#define TRUE 1
80#endif
81
82#ifndef IN
83#define IN
84#endif
85
86#ifndef OUT
87#define OUT
88#endif
89
90#ifndef OPTIONAL
91#define OPTIONAL
92#endif
93
94#undef far
95#undef near
96#undef pascal
97
98#define far
99#define near
100#define pascal __stdcall
101
102#define cdecl
103#ifndef CDECL
104#define CDECL
105#endif
106
107#if !defined(__x86_64__) //defined(_STDCALL_SUPPORTED)
108#ifndef CALLBACK
109#define CALLBACK __stdcall
110#endif
111#ifndef WINAPI
112#define WINAPI __stdcall
113#endif
114#define WINAPIV __cdecl
115#define APIENTRY WINAPI
116#define APIPRIVATE WINAPI
117#define PASCAL WINAPI
118#else
119#define CALLBACK
120#define WINAPI
121#define WINAPIV
122#define APIENTRY WINAPI
123#define APIPRIVATE
124#define PASCAL pascal
125#endif
126
127#undef FAR
128#undef NEAR
129#define FAR
130#define NEAR
131
132#ifndef CONST
133#define CONST const
134#endif
135
136typedef int BOOL;
137typedef BOOL *PBOOL;
138typedef BOOL *LPBOOL;
139typedef unsigned char BYTE;
140typedef unsigned short WORD;
141#ifndef __ROS_LONG64__
142typedef unsigned long DWORD;
143#else
144typedef unsigned int DWORD;
145#endif
146typedef float FLOAT;
147typedef FLOAT *PFLOAT;
148typedef BYTE *PBYTE;
149typedef BYTE *LPBYTE;
150typedef int *PINT;
151typedef int *LPINT;
152typedef WORD *PWORD;
153typedef WORD *LPWORD;
154#ifndef __ROS_LONG64__
155typedef long *LPLONG;
156#else
157typedef int *LPLONG;
158#endif
159typedef DWORD *PDWORD;
160typedef DWORD *LPDWORD;
161typedef void *LPVOID;
162#ifndef _LPCVOID_DEFINED
163#define _LPCVOID_DEFINED
164typedef CONST void *LPCVOID;
165#endif
166typedef int INT;
167typedef unsigned int UINT;
168typedef unsigned int *PUINT;
169
170#ifndef NT_INCLUDED
171#include <winnt.h>
172#endif
173
174typedef UINT_PTR WPARAM;
175typedef LONG_PTR LPARAM;
176typedef LONG_PTR LRESULT;
177
178#ifndef NOMINMAX
179#ifndef max
180#define max(a, b) (((a) > (b)) ? (a) : (b))
181#endif
182#ifndef min
183#define min(a, b) (((a) < (b)) ? (a) : (b))
184#endif
185#endif
186
187#define MAKEWORD(bLow, bHigh) ((WORD)(((BYTE)((DWORD_PTR)(bLow) & 0xff )) | (((WORD)((BYTE)((DWORD_PTR)(bHigh) & 0xff))) << 8 )))
188#define MAKELONG(wLow, wHigh) ((LONG)(((WORD)((DWORD_PTR)(wLow) & 0xffff)) | (((DWORD)((WORD)((DWORD_PTR)(wHigh) & 0xffff))) << 16)))
189#define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xffff))
190#define HIWORD(l) ((WORD)(((DWORD_PTR)(l) >> 16) & 0xffff))
191#define LOBYTE(w) ((BYTE)((DWORD_PTR)(w) & 0xff))
192#define HIBYTE(w) ((BYTE)(((DWORD_PTR)(w) >> 8) & 0xff))
193
194typedef WORD ATOM;
195
196typedef HANDLE *SPHANDLE;
197typedef HANDLE *LPHANDLE;
198typedef HANDLE HGLOBAL;
199typedef HANDLE HLOCAL;
200typedef HANDLE GLOBALHANDLE;
201typedef HANDLE LOCALHANDLE;
202
203typedef INT_PTR (WINAPI *FARPROC)();
204typedef INT_PTR (WINAPI *NEARPROC)();
205typedef INT_PTR (WINAPI *PROC)();
206
207DECLARE_HANDLE(HKEY);
208typedef HKEY *PHKEY;
209
210DECLARE_HANDLE(HMETAFILE);
211DECLARE_HANDLE(HINSTANCE);
212typedef HINSTANCE HMODULE;
213DECLARE_HANDLE(HRGN);
214DECLARE_HANDLE(HRSRC);
215DECLARE_HANDLE(HSTR);
216DECLARE_HANDLE(HTASK);
217DECLARE_HANDLE(HWINSTA);
218DECLARE_HANDLE(HKL);
219DECLARE_HANDLE(HSPRITE);
220DECLARE_HANDLE(HLSURF);
221
222typedef int HFILE;
223
224typedef struct _FILETIME
225{
226 DWORD dwLowDateTime;
227 DWORD dwHighDateTime;
228} FILETIME, *PFILETIME, *LPFILETIME;
229#define _FILETIME_
230
231#endif // _MINWINDEF_