:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / drivers / bus / acpi / include / platform / types.h
1 /*
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)
9  * UPDATE HISTORY:
10  *               27/06/00: Created
11  *               01/05/01: Portabillity changes
12  */
13
14 #ifndef __INCLUDE_ACPI_TYPES_H
15 #define __INCLUDE_ACPI_TYPES_H
16
17 /* Fixed precision types */
18 typedef signed char         INT8, *PINT8;
19 typedef signed short        INT16, *PINT16;
20 #if 0
21 typedef signed int          INT32, *PINT32;
22 #endif
23 typedef signed long long    INT64, *PINT64;
24 #if 0
25 typedef unsigned char       UINT8, *PUINT8;
26 typedef unsigned short      UINT16, *PUINT16;
27 typedef unsigned int        UINT32, *PUINT32;
28 typedef unsigned long long  UINT64, *PUINT64;
29 #endif
30
31 typedef signed long int     LONG32, *PLONG32;
32 typedef unsigned long int   ULONG32, *PULONG32;
33 typedef unsigned long int   DWORD32, *PDWORD32;
34
35
36 #ifdef _WIN64
37
38 /* 64-bit architecture */
39
40 typedef INT64 INT, *PINT;
41 typedef LONG64 LONG, *PLONG;
42 typedef DWORD64 DWORD, *PDWORD;
43 typedef UINT64 UINT, *PUINT;
44 typedef ULONG64 ULONG, *PULONG;
45
46 /* Pointer precision types */
47 typedef long long           INT_PTR, *PINT_PTR;
48 typedef unsigned long long  UINT_PTR, *PUINT_PTR;
49 typedef long long           LONG_PTR, *PLONG_PTR;
50 typedef unsigned long long  ULONG_PTR, *PULONG_PTR;
51 typedef unsigned long long  HANDLE_PTR;
52 typedef unsigned int        UHALF_PTR, *PUHALF_PTR;
53 typedef int                 HALF_PTR, *PHALF_PTR;
54
55 #else /* _WIN64 */
56
57 /* 32-bit architecture */
58
59 typedef INT32 INT, *PINT;
60 typedef LONG32 LONG, *PLONG;
61 typedef DWORD32 DWORD, *PDWORD;
62 typedef UINT32 UINT, *PUINT;
63 typedef ULONG32 ULONG, *PULONG;
64
65
66 /* Pointer precision types */
67 typedef int               INT_PTR, *PINT_PTR;
68 typedef unsigned int      UINT_PTR, *PUINT_PTR;
69 typedef long              LONG_PTR, *PLONG_PTR;
70 typedef unsigned long     ULONG_PTR, *PULONG_PTR;
71 typedef unsigned short    UHALF_PTR, *PUHALF_PTR;
72 typedef short             HALF_PTR, *PHALF_PTR;
73 typedef unsigned long     HANDLE_PTR;
74
75 #endif /* _WIN64 */
76
77 typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
78
79 typedef long long LONG64, *PLONG64;
80
81 typedef unsigned long long ULONG64, *PULONG64;
82 typedef unsigned long long DWORD64, *PDWORD64;
83
84
85 #if 0
86 typedef unsigned char UCHAR;
87 #endif
88 typedef unsigned short USHORT;
89 typedef unsigned short WCHAR;
90 typedef unsigned short WORD;
91 typedef int BOOL;
92 #if 0
93 typedef unsigned char BOOLEAN;
94 #endif
95 typedef BOOLEAN* PBOOLEAN;
96 typedef unsigned short *LPWSTR;
97 typedef unsigned short *PWSTR;
98 typedef unsigned char *PUCHAR;
99 typedef unsigned short *PUSHORT;
100 typedef void *PVOID;
101 typedef unsigned char BYTE;
102 typedef void *LPVOID;
103 typedef float *PFLOAT;
104 typedef unsigned short *PWCH;
105 typedef unsigned short *PWORD;
106
107 typedef long long LONGLONG;
108 typedef unsigned long long ULONGLONG;
109 typedef long long *PLONGLONG;
110 typedef unsigned long long *PULONGLONG;
111
112 /* Check VOID before defining CHAR, SHORT */
113 #ifndef VOID
114 #define VOID void
115 typedef char CHAR;
116 typedef short SHORT;
117 #endif
118
119 typedef CHAR *PCHAR;
120 typedef CHAR *PCH;
121 typedef void *HANDLE;
122 typedef char CCHAR;
123 typedef CCHAR *PCCHAR;
124
125 #if 0
126 #define FALSE 0
127 #define TRUE 1
128 #endif
129
130 #ifndef NULL
131 #ifdef __cplusplus
132 #define NULL 0
133 #else
134 #define NULL ((void*)0)
135 #endif /* __cplusplus */
136 #endif /* NULL */
137
138 typedef const unsigned short *PCWSTR;
139
140 typedef char* PCSZ;
141
142 typedef union _LARGE_INTEGER
143 {
144   struct
145   {
146     DWORD LowPart;
147     LONG  HighPart;
148   } u;
149 #ifdef ANONYMOUSUNIONS
150   struct
151   {
152     DWORD LowPart;
153     LONG  HighPart;
154   };
155 #endif /* ANONYMOUSUNIONS */
156   LONGLONG QuadPart;
157 } LARGE_INTEGER, *PLARGE_INTEGER;
158
159 typedef union _ULARGE_INTEGER
160 {
161   struct
162   {
163     DWORD LowPart;
164     DWORD HighPart;
165   } u;
166 #ifdef ANONYMOUSUNIONS
167   struct
168   {
169     DWORD LowPart;
170     DWORD HighPart;
171   };
172 #endif /* ANONYMOUSUNIONS */
173   ULONGLONG QuadPart;
174 } ULARGE_INTEGER, *PULARGE_INTEGER;
175
176 typedef struct _FILETIME
177 {
178    DWORD dwLowDateTime;
179    DWORD dwHighDateTime;
180 } FILETIME, *LPFILETIME, *PFILETIME;
181
182 #define CONST const
183
184 #ifdef i386
185 #define STDCALL     __attribute__ ((stdcall))
186 #define CDECL       __attribute((cdecl))
187 #define CALLBACK    WINAPI
188 #define PASCAL      WINAPI
189 #else
190 #define STDCALL
191 #define CDECL
192 #define CALLBACK
193 #define PASCAL
194 #endif
195
196 typedef struct _LIST_ENTRY {
197   struct _LIST_ENTRY *Flink;
198   struct _LIST_ENTRY *Blink;
199 } LIST_ENTRY, *PLIST_ENTRY;
200
201 typedef struct _SINGLE_LIST_ENTRY {
202   struct _SINGLE_LIST_ENTRY *Next;
203 } SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
204
205 typedef DWORD STDCALL (*PTHREAD_START_ROUTINE) (LPVOID);
206 typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
207
208 typedef unsigned short *PWCHAR;
209
210 #ifdef __PPC__
211 #define CONTEXT_CONTROL         1L
212 #define CONTEXT_FLOATING_POINT  2L
213 #define CONTEXT_INTEGER         4L
214 #define CONTEXT_DEBUG_REGISTERS 8L
215
216 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
217 #define CONTEXT_DEBUGGER (CONTEXT_FULL)
218
219 #else /* x86 */
220 /* The doc refered me to winnt.h, so I had to look... */
221 #define SIZE_OF_80387_REGISTERS      80
222
223 /* Values for contextflags */
224 #define CONTEXT_i386    0x10000
225 #define CONTEXT_CONTROL         (CONTEXT_i386 | 1)      
226 #define CONTEXT_INTEGER         (CONTEXT_i386 | 2)      
227 #define CONTEXT_SEGMENTS        (CONTEXT_i386 | 4)      
228 #define CONTEXT_FLOATING_POINT  (CONTEXT_i386 | 8)      
229 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x10)
230 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
231
232 /* our own invention */
233 #define FLAG_TRACE_BIT 0x100
234 #define CONTEXT_DEBUGGER (CONTEXT_FULL | CONTEXT_FLOATING_POINT)
235
236 #endif
237
238 #ifdef __i386__
239
240 typedef struct _FLOATING_SAVE_AREA {
241     DWORD   ControlWord;
242     DWORD   StatusWord;
243     DWORD   TagWord;
244     DWORD   ErrorOffset;
245     DWORD   ErrorSelector;
246     DWORD   DataOffset;
247     DWORD   DataSelector;
248     BYTE    RegisterArea[80];
249     DWORD   Cr0NpxState;
250 } FLOATING_SAVE_AREA;
251
252 typedef struct _CONTEXT {
253     DWORD ContextFlags;
254
255     DWORD   Dr0;
256     DWORD   Dr1;
257     DWORD   Dr2;
258     DWORD   Dr3;
259     DWORD   Dr6;
260     DWORD   Dr7;
261
262     FLOATING_SAVE_AREA FloatSave;
263
264     DWORD   SegGs;
265     DWORD   SegFs;
266     DWORD   SegEs;
267     DWORD   SegDs;
268
269     DWORD   Edi;
270     DWORD   Esi;
271     DWORD   Ebx;
272     DWORD   Edx;
273     DWORD   Ecx;
274     DWORD   Eax;
275
276     DWORD   Ebp;
277     DWORD   Eip;
278     DWORD   SegCs;
279     DWORD   EFlags;
280     DWORD   Esp;
281     DWORD   SegSs;
282 } CONTEXT, *PCONTEXT, *LPCONTEXT;
283
284 #else /* __ppc__ */
285
286 typedef struct
287   {
288     /* Floating point registers returned when CONTEXT_FLOATING_POINT is set */
289     double Fpr0;
290     double Fpr1;
291     double Fpr2;
292     double Fpr3;
293     double Fpr4;
294     double Fpr5;
295     double Fpr6;
296     double Fpr7;
297     double Fpr8;
298     double Fpr9;
299     double Fpr10;
300     double Fpr11;
301     double Fpr12;
302     double Fpr13;
303     double Fpr14;
304     double Fpr15;
305     double Fpr16;
306     double Fpr17;
307     double Fpr18;
308     double Fpr19;
309     double Fpr20;
310     double Fpr21;
311     double Fpr22;
312     double Fpr23;
313     double Fpr24;
314     double Fpr25;
315     double Fpr26;
316     double Fpr27;
317     double Fpr28;
318     double Fpr29;
319     double Fpr30;
320     double Fpr31;
321     double Fpscr;
322
323     /* Integer registers returned when CONTEXT_INTEGER is set.  */
324     DWORD Gpr0;
325     DWORD Gpr1;
326     DWORD Gpr2;
327     DWORD Gpr3;
328     DWORD Gpr4;
329     DWORD Gpr5;
330     DWORD Gpr6;
331     DWORD Gpr7;
332     DWORD Gpr8;
333     DWORD Gpr9;
334     DWORD Gpr10;
335     DWORD Gpr11;
336     DWORD Gpr12;
337     DWORD Gpr13;
338     DWORD Gpr14;
339     DWORD Gpr15;
340     DWORD Gpr16;
341     DWORD Gpr17;
342     DWORD Gpr18;
343     DWORD Gpr19;
344     DWORD Gpr20;
345     DWORD Gpr21;
346     DWORD Gpr22;
347     DWORD Gpr23;
348     DWORD Gpr24;
349     DWORD Gpr25;
350     DWORD Gpr26;
351     DWORD Gpr27;
352     DWORD Gpr28;
353     DWORD Gpr29;
354     DWORD Gpr30;
355     DWORD Gpr31;
356
357     DWORD Cr;                   /* Condition register */
358     DWORD Xer;                  /* Fixed point exception register */
359
360     /* The following are set when CONTEXT_CONTROL is set.  */
361     DWORD Msr;                  /* Machine status register */
362     DWORD Iar;                  /* Instruction address register */
363     DWORD Lr;                   /* Link register */
364     DWORD Ctr;                  /* Control register */
365
366     /* Control which context values are returned */
367     DWORD ContextFlags;
368     DWORD Fill[3];
369
370     /* Registers returned if CONTEXT_DEBUG_REGISTERS is set.  */
371     DWORD Dr0;                          /* Breakpoint Register 1 */
372     DWORD Dr1;                          /* Breakpoint Register 2 */
373     DWORD Dr2;                          /* Breakpoint Register 3 */
374     DWORD Dr3;                          /* Breakpoint Register 4 */
375     DWORD Dr4;                          /* Breakpoint Register 5 */
376     DWORD Dr5;                          /* Breakpoint Register 6 */
377     DWORD Dr6;                          /* Debug Status Register */
378     DWORD Dr7;                          /* Debug Control Register */
379 } CONTEXT, *PCONTEXT, *LPCONTEXT;
380 #endif
381
382 typedef HANDLE *PHANDLE;
383
384 typedef struct value_ent {
385     LPWSTR ve_valuename;
386     DWORD  ve_valuelen;
387     DWORD  ve_valueptr;
388     DWORD  ve_type;
389 } WVALENT, *PWVALENT;
390
391
392 typedef const void *LPCVOID;
393 typedef BYTE *LPBYTE, *PBYTE;
394
395 typedef BOOL *PBOOL;
396
397 typedef DWORD LCID;
398 typedef DWORD *PLCID;
399
400 typedef const char *LPCSTR;
401
402 typedef char *LPSTR;
403
404 typedef const unsigned short *LPCWSTR;
405
406 typedef unsigned short RTL_ATOM;
407 typedef unsigned short *PRTL_ATOM;
408 typedef WORD ATOM;
409
410 typedef struct _COORD {
411   SHORT X;
412   SHORT Y;
413 } COORD;
414
415 typedef struct _SMALL_RECT {
416   SHORT Left;
417   SHORT Top;
418   SHORT Right;
419   SHORT Bottom;
420 } SMALL_RECT, *PSMALL_RECT;
421
422
423 typedef
424 VOID
425 (*PTIMERAPCROUTINE)(
426         LPVOID lpArgToCompletionRoutine,
427         DWORD dwTimerLowValue,
428         DWORD dwTimerHighValue
429         );
430
431 #include <ntos/except.h>
432
433 #endif /* __INCLUDE_ACPI_TYPES_H */
434
435
436
437 #if 0
438
439
440 /*
441  * COPYRIGHT:    See COPYING in the top level directory
442  * PROJECT:      ReactOS kernel
443  * FILE:         include/types.h
444  * PURPOSE:      Types used by all the parts of the system
445  * PROGRAMMER:   David Welch <welch@cwcom.net>
446  * UPDATE HISTORY: 
447  *               27/06/00: Created
448  */
449
450 #ifndef __INCLUDE_ACPI_TYPES_H
451 #define __INCLUDE_ACPI_TYPES_H
452 #if 0
453 typedef unsigned char UCHAR;
454 #endif
455 typedef unsigned int UINT;
456 typedef unsigned long ULONG;
457 typedef unsigned short USHORT;
458 typedef unsigned short WCHAR;
459 typedef unsigned short WORD;
460 typedef int BOOL;
461 #if 0
462 typedef unsigned char BOOLEAN;
463 #endif
464 typedef BOOLEAN* PBOOLEAN;
465 typedef unsigned int DWORD; /* was unsigned long */
466 typedef unsigned short *LPWSTR;
467 typedef unsigned short *PWSTR;
468 typedef unsigned char *PUCHAR;
469 typedef unsigned int *PUINT;
470 typedef unsigned long *PULONG;
471 typedef unsigned short *PUSHORT;
472 typedef void *PVOID;
473 typedef unsigned char BYTE;
474 typedef void *LPVOID;
475 typedef DWORD *PDWORD;
476 typedef float *PFLOAT;
477 typedef unsigned short *PWCH;
478 typedef unsigned short *PWORD;
479
480 typedef long long LONGLONG;
481 typedef unsigned long long ULONGLONG;
482 typedef long long *PLONGLONG;
483 typedef unsigned long long *PULONGLONG;
484
485 /* Check VOID before defining CHAR, SHORT, and LONG */
486 #ifndef VOID
487 #define VOID void
488 typedef char CHAR;
489 typedef short SHORT;
490 typedef long LONG;
491 #endif
492
493 typedef CHAR *PCHAR;
494 typedef CHAR *PCH;
495 typedef void *HANDLE;
496 typedef char CCHAR;
497
498 #if 0
499 #define FALSE 0
500 #define TRUE 1
501 #endif
502
503 typedef const unsigned short *PCWSTR;
504
505 typedef char* PCSZ;
506
507 typedef union _LARGE_INTEGER
508 {
509   struct
510   {
511     DWORD LowPart;
512     LONG  HighPart;
513   } u;
514 #ifdef ANONYMOUSUNIONS   
515   struct
516   {
517     DWORD LowPart;
518     LONG  HighPart;
519   };
520 #endif /* ANONYMOUSUNIONS */
521   LONGLONG QuadPart;
522 } LARGE_INTEGER, *PLARGE_INTEGER;
523
524 typedef union _ULARGE_INTEGER
525 {
526   struct
527   {
528     DWORD LowPart;
529     DWORD HighPart;
530   } u;
531 #ifdef ANONYMOUSUNIONS   
532   struct
533   {
534     DWORD LowPart;
535     DWORD HighPart;
536   };
537 #endif /* ANONYMOUSUNIONS */   
538   ULONGLONG QuadPart;
539 } ULARGE_INTEGER, *PULARGE_INTEGER;
540
541 #define CONST const
542
543 #ifdef i386
544 #define STDCALL     __attribute__ ((stdcall))
545 #define CDECL       __attribute((cdecl))
546 #define CALLBACK    WINAPI
547 #define PASCAL      WINAPI
548 #else
549 #define STDCALL
550 #define CDECL
551 #define CALLBACK
552 #define PASCAL
553 #endif
554
555 typedef struct _LIST_ENTRY {
556   struct _LIST_ENTRY *Flink;
557   struct _LIST_ENTRY *Blink;
558 } LIST_ENTRY, *PLIST_ENTRY;
559
560 typedef struct _SINGLE_LIST_ENTRY {
561   struct _SINGLE_LIST_ENTRY *Next;
562 } SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
563
564 typedef DWORD STDCALL (*PTHREAD_START_ROUTINE) (LPVOID);
565 typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
566
567 typedef unsigned short *PWCHAR;
568
569 #ifdef __PPC__
570 #define CONTEXT_CONTROL         1L
571 #define CONTEXT_FLOATING_POINT  2L
572 #define CONTEXT_INTEGER         4L
573 #define CONTEXT_DEBUG_REGISTERS 8L
574
575 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
576 #define CONTEXT_DEBUGGER (CONTEXT_FULL)
577
578 #else /* x86 */
579 /* The doc refered me to winnt.h, so I had to look... */
580 #define SIZE_OF_80387_REGISTERS      80
581
582 /* Values for contextflags */
583 #define CONTEXT_i386    0x10000
584 #define CONTEXT_CONTROL         (CONTEXT_i386 | 1)      
585 #define CONTEXT_INTEGER         (CONTEXT_i386 | 2)      
586 #define CONTEXT_SEGMENTS        (CONTEXT_i386 | 4)      
587 #define CONTEXT_FLOATING_POINT  (CONTEXT_i386 | 8)      
588 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x10)
589 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
590
591 /* our own invention */
592 #define FLAG_TRACE_BIT 0x100
593 #define CONTEXT_DEBUGGER (CONTEXT_FULL | CONTEXT_FLOATING_POINT)
594
595 #endif
596
597 #ifdef __i386__
598
599 typedef struct _FLOATING_SAVE_AREA {
600     DWORD   ControlWord;
601     DWORD   StatusWord;
602     DWORD   TagWord;
603     DWORD   ErrorOffset;
604     DWORD   ErrorSelector;
605     DWORD   DataOffset;
606     DWORD   DataSelector;
607     BYTE    RegisterArea[80];
608     DWORD   Cr0NpxState;
609 } FLOATING_SAVE_AREA;
610
611 typedef struct _CONTEXT {
612     DWORD ContextFlags;
613
614     DWORD   Dr0;
615     DWORD   Dr1;
616     DWORD   Dr2;
617     DWORD   Dr3;
618     DWORD   Dr6;
619     DWORD   Dr7;
620
621     FLOATING_SAVE_AREA FloatSave;
622
623     DWORD   SegGs;
624     DWORD   SegFs;
625     DWORD   SegEs;
626     DWORD   SegDs;
627
628     DWORD   Edi;
629     DWORD   Esi;
630     DWORD   Ebx;
631     DWORD   Edx;
632     DWORD   Ecx;
633     DWORD   Eax;
634
635     DWORD   Ebp;
636     DWORD   Eip;
637     DWORD   SegCs;
638     DWORD   EFlags;
639     DWORD   Esp;
640     DWORD   SegSs;
641 } CONTEXT, *PCONTEXT, *LPCONTEXT;
642
643 #else /* __ppc__ */
644
645 typedef struct
646   {
647     /* Floating point registers returned when CONTEXT_FLOATING_POINT is set */
648     double Fpr0;
649     double Fpr1;
650     double Fpr2;
651     double Fpr3;
652     double Fpr4;
653     double Fpr5;
654     double Fpr6;
655     double Fpr7;
656     double Fpr8;
657     double Fpr9;
658     double Fpr10;
659     double Fpr11;
660     double Fpr12;
661     double Fpr13;
662     double Fpr14;
663     double Fpr15;
664     double Fpr16;
665     double Fpr17;
666     double Fpr18;
667     double Fpr19;
668     double Fpr20;
669     double Fpr21;
670     double Fpr22;
671     double Fpr23;
672     double Fpr24;
673     double Fpr25;
674     double Fpr26;
675     double Fpr27;
676     double Fpr28;
677     double Fpr29;
678     double Fpr30;
679     double Fpr31;
680     double Fpscr;
681
682     /* Integer registers returned when CONTEXT_INTEGER is set.  */
683     DWORD Gpr0;
684     DWORD Gpr1;
685     DWORD Gpr2;
686     DWORD Gpr3;
687     DWORD Gpr4;
688     DWORD Gpr5;
689     DWORD Gpr6;
690     DWORD Gpr7;
691     DWORD Gpr8;
692     DWORD Gpr9;
693     DWORD Gpr10;
694     DWORD Gpr11;
695     DWORD Gpr12;
696     DWORD Gpr13;
697     DWORD Gpr14;
698     DWORD Gpr15;
699     DWORD Gpr16;
700     DWORD Gpr17;
701     DWORD Gpr18;
702     DWORD Gpr19;
703     DWORD Gpr20;
704     DWORD Gpr21;
705     DWORD Gpr22;
706     DWORD Gpr23;
707     DWORD Gpr24;
708     DWORD Gpr25;
709     DWORD Gpr26;
710     DWORD Gpr27;
711     DWORD Gpr28;
712     DWORD Gpr29;
713     DWORD Gpr30;
714     DWORD Gpr31;
715
716     DWORD Cr;                   /* Condition register */
717     DWORD Xer;                  /* Fixed point exception register */
718
719     /* The following are set when CONTEXT_CONTROL is set.  */
720     DWORD Msr;                  /* Machine status register */
721     DWORD Iar;                  /* Instruction address register */
722     DWORD Lr;                   /* Link register */
723     DWORD Ctr;                  /* Control register */
724
725     /* Control which context values are returned */
726     DWORD ContextFlags;
727     DWORD Fill[3];
728
729     /* Registers returned if CONTEXT_DEBUG_REGISTERS is set.  */
730     DWORD Dr0;                          /* Breakpoint Register 1 */
731     DWORD Dr1;                          /* Breakpoint Register 2 */
732     DWORD Dr2;                          /* Breakpoint Register 3 */
733     DWORD Dr3;                          /* Breakpoint Register 4 */
734     DWORD Dr4;                          /* Breakpoint Register 5 */
735     DWORD Dr5;                          /* Breakpoint Register 6 */
736     DWORD Dr6;                          /* Debug Status Register */
737     DWORD Dr7;                          /* Debug Control Register */
738 } CONTEXT, *PCONTEXT, *LPCONTEXT;
739 #endif
740
741 typedef HANDLE *PHANDLE;
742
743 typedef struct value_ent {
744     LPWSTR   ve_valuename;
745     DWORD ve_valuelen;
746     DWORD ve_valueptr;
747     DWORD ve_type;
748 } WVALENT, *PWVALENT;
749
750 typedef long *PLONG;
751
752 typedef const void *LPCVOID;
753 typedef BYTE *LPBYTE;
754
755 typedef BYTE *PBYTE;
756
757 typedef DWORD LCID;
758 typedef DWORD *PLCID;
759
760 typedef const char *LPCSTR;
761
762 typedef char *LPSTR;
763
764 typedef const unsigned short *LPCWSTR;
765
766 typedef unsigned short RTL_ATOM;
767 typedef unsigned short *PRTL_ATOM;
768 typedef WORD ATOM;
769
770 typedef struct _COORD {
771   SHORT X;
772   SHORT Y;
773 } COORD;
774
775 typedef struct _SMALL_RECT {
776   SHORT Left;
777   SHORT Top;
778   SHORT Right;
779   SHORT Bottom;
780 } SMALL_RECT, *PSMALL_RECT;
781
782
783 typedef
784 VOID
785 (*PTIMERAPCROUTINE)(
786         LPVOID lpArgToCompletionRoutine,
787         DWORD dwTimerLowValue,
788         DWORD dwTimerHighValue
789         );
790
791 #include <ntos/except.h>
792
793 #endif /* __INCLUDE_ACPI_TYPES_H */
794
795 #endif
796