2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: include/types.h
5 * PURPOSE: Types used by all the parts of the system
6 * PROGRAMMER: David Welch <welch@cwcom.net>
7 * DEFINES: _WIN64: 64-bit architecture
8 * _WIN32: 32-bit architecture (default)
11 * 01/05/01: Portabillity changes
14 #ifndef __INCLUDE_TYPES_H
15 #define __INCLUDE_TYPES_H
20 #define STDCALL_FUNC STDCALL
22 #define STDCALL_FUNC(a) (__stdcall a )
25 /* Fixed precision types */
26 typedef signed char INT8, *PINT8;
27 typedef signed short INT16, *PINT16;
29 typedef unsigned char UINT8, *PUINT8;
30 typedef unsigned short UINT16, *PUINT16;
33 /* Check VOID before defining CHAR, SHORT */
45 #define STDCALL __attribute__ ((stdcall))
48 #define CDECL __attribute((cdecl))
50 #define CALLBACK WINAPI
63 typedef INT32 INT, *PINT;
64 typedef LONG32 LONG, *PLONG;
65 typedef ULONG32 DWORD, *PDWORD;
66 typedef UINT32 UINT, *PUINT;
67 typedef ULONG32 ULONG, *PULONG;
72 #define _WCHAR_T_DEFINED
73 #ifndef __WCHAR_TYPE__
74 #define __WCHAR_TYPE__ short unsigned int
78 typedef __WCHAR_TYPE__ wchar_t;
81 #endif /* wchar_t not already defined */
85 //#ifndef _WCHAR_T_DEFINED
86 //#define _WCHAR_T_DEFINED
87 //typedef unsigned short wchar_t;
91 typedef unsigned char UCHAR;
92 typedef unsigned short USHORT;
93 typedef wchar_t WCHAR;
94 typedef unsigned short WORD;
96 typedef unsigned char BOOLEAN;
97 typedef BOOLEAN* PBOOLEAN;
98 typedef wchar_t *LPWSTR;
99 typedef wchar_t *PWSTR;
100 typedef unsigned char *PUCHAR;
101 typedef unsigned short *PUSHORT;
103 typedef unsigned char BYTE;
104 typedef void *LPVOID;
105 typedef float *PFLOAT;
106 typedef wchar_t *PWCH;
107 typedef unsigned short *PWORD;
109 #include <msvcrt/crttypes.h> // for definition of LONGLONG, PLONGLONG etc
111 typedef const void *LPCVOID;
112 typedef BYTE *LPBYTE, *PBYTE;
115 typedef DWORD *PLCID;
116 typedef const char *LPCSTR;
118 typedef const wchar_t *LPCWSTR;
121 typedef void *HANDLE;
122 typedef HANDLE *PHANDLE;
124 typedef CCHAR *PCCHAR;
125 typedef wchar_t *PWCHAR;
126 typedef ULONG WAIT_TYPE;
127 typedef USHORT CSHORT;
128 typedef const wchar_t *PCWSTR;
129 typedef const char* PCSZ;
132 typedef DWORD STDCALL (*PTHREAD_START_ROUTINE) (LPVOID);
134 typedef DWORD (STDCALL *PTHREAD_START_ROUTINE) (LPVOID);
137 typedef union _LARGE_INTEGER
144 #ifdef ANONYMOUSUNIONS
150 #endif /* ANONYMOUSUNIONS */
152 } LARGE_INTEGER, *PLARGE_INTEGER;
154 typedef union _ULARGE_INTEGER
161 #ifdef ANONYMOUSUNIONS
167 #endif /* ANONYMOUSUNIONS */
169 } ULARGE_INTEGER, *PULARGE_INTEGER;
171 typedef struct _FILETIME
174 DWORD dwHighDateTime;
175 } FILETIME, *LPFILETIME, *PFILETIME;
177 typedef struct _LIST_ENTRY
179 struct _LIST_ENTRY *Flink;
180 struct _LIST_ENTRY *Blink;
181 } LIST_ENTRY, *PLIST_ENTRY;
183 typedef struct _SINGLE_LIST_ENTRY
185 struct _SINGLE_LIST_ENTRY *Next;
186 } SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
188 #define SLIST_ENTRY SINGLE_LIST_ENTRY
189 #define _SLIST_ENTRY _SINGLE_LIST_ENTRY
190 #define PSLIST_ENTRY PSINGLE_LIST_ENTRY
192 typedef struct _UNICODE_STRING
195 USHORT MaximumLength;
197 } UNICODE_STRING, *PUNICODE_STRING;
199 typedef struct _FLOATING_SAVE_AREA
208 BYTE RegisterArea[80];
210 } FLOATING_SAVE_AREA;
212 typedef unsigned short RTL_ATOM;
213 typedef unsigned short *PRTL_ATOM;
215 #else /* __USE_W32API */
219 #endif /* __USE_W32API */
232 #define NULL ((void*)0)
233 #endif /* __cplusplus */
239 #define CONTEXT_CONTROL 1L
240 #define CONTEXT_FLOATING_POINT 2L
241 #define CONTEXT_INTEGER 4L
242 #define CONTEXT_DEBUG_REGISTERS 8L
244 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
245 #define CONTEXT_DEBUGGER (CONTEXT_FULL)
249 #define SIZE_OF_80387_REGISTERS 80
251 /* Values for contextflags */
252 #define CONTEXT_i386 0x10000
256 #define CONTEXT_CONTROL (CONTEXT_i386 | 1)
257 #define CONTEXT_INTEGER (CONTEXT_i386 | 2)
258 #define CONTEXT_SEGMENTS (CONTEXT_i386 | 4)
259 #define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 8)
260 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x10)
261 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
263 #endif /* !__USE_W32API */
265 /* our own invention */
266 #define FLAG_TRACE_BIT 0x100
267 #define CONTEXT_DEBUGGER (CONTEXT_FULL | CONTEXT_FLOATING_POINT)
271 typedef struct _CONTEXT_X86
282 FLOATING_SAVE_AREA FloatSave;
302 } CONTEXT_X86, *PCONTEXT_X86, *LPCONTEXT_X86;
304 typedef struct _CONTEXT_PPC
306 /* Floating point registers returned when CONTEXT_FLOATING_POINT is set */
341 /* Integer registers returned when CONTEXT_INTEGER is set. */
375 DWORD Cr; /* Condition register */
376 DWORD Xer; /* Fixed point exception register */
378 /* The following are set when CONTEXT_CONTROL is set. */
379 DWORD Msr; /* Machine status register */
380 DWORD Iar; /* Instruction address register */
381 DWORD Lr; /* Link register */
382 DWORD Ctr; /* Control register */
384 /* Control which context values are returned */
388 /* Registers returned if CONTEXT_DEBUG_REGISTERS is set. */
389 DWORD Dr0; /* Breakpoint Register 1 */
390 DWORD Dr1; /* Breakpoint Register 2 */
391 DWORD Dr2; /* Breakpoint Register 3 */
392 DWORD Dr3; /* Breakpoint Register 4 */
393 DWORD Dr4; /* Breakpoint Register 5 */
394 DWORD Dr5; /* Breakpoint Register 6 */
395 DWORD Dr6; /* Debug Status Register */
396 DWORD Dr7; /* Debug Control Register */
397 } CONTEXT_PPC, *PCONTEXT_PPC, *LPCONTEXT_PPC;
399 typedef struct value_ent
405 } WVALENT, *PWVALENT;
407 //#include "except.h"
411 typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
415 typedef CONTEXT_X86 CONTEXT;
416 typedef PCONTEXT_X86 PCONTEXT;
417 typedef LPCONTEXT_X86 LPCONTEXT;
421 typedef CONTEXT_PPC CONTEXT;
422 typedef PCONTEXT_PPC PCONTEXT;
423 typedef LPCONTEXT_PPC LPCONTEXT;
429 typedef struct _COORD
435 typedef struct _SMALL_RECT
441 } SMALL_RECT, *PSMALL_RECT;
447 LPVOID lpArgToCompletionRoutine,
448 DWORD dwTimerLowValue,
449 DWORD dwTimerHighValue
453 (STDCALL *PTIMERAPCROUTINE)(
454 LPVOID lpArgToCompletionRoutine,
455 DWORD dwTimerLowValue,
456 DWORD dwTimerHighValue
462 #else /* __USE_W32API */
464 typedef LPTHREAD_START_ROUTINE PTHREAD_START_ROUTINE;
466 #include <ddk/ntapi.h>
468 #endif /* __USE_W32API */
470 #endif /* __INCLUDE_TYPES_H */