source: trunk/include/win/winnt.h@ 22145

Last change on this file since 22145 was 22020, checked in by dmik, 13 years ago

Disable debug fields of RTL_CRITICAL_SECTION_DEBUG.

Odin uses the DebugInfo ptr in CRITICAL_SECTION for its own purposes
which are incompatible with NT. For this reason any NT-style usage must
be disabled.

This in particular fixes debug assertions and crashes in CRYPT32.DLL (due to
misinterpretation of the structure fields) which happened e.g. during playback of
some Flash content.

File size: 98.4 KB
Line 
1/*
2 * Win32 definitions for Windows NT
3 *
4 * Copyright 1996 Alexandre Julliard
5 */
6
7#ifndef __WINE_WINNT_H
8#define __WINE_WINNT_H
9
10#include "windef.h"
11
12/* Defines */
13
14/* Argument 1 passed to the DllEntryProc. */
15#define DLL_PROCESS_DETACH 0 /* detach process (unload library) */
16#define DLL_PROCESS_ATTACH 1 /* attach process (load library) */
17#define DLL_THREAD_ATTACH 2 /* attach new thread */
18#define DLL_THREAD_DETACH 3 /* detach thread */
19
20
21/* u.x.wProcessorArchitecture (NT) */
22#define PROCESSOR_ARCHITECTURE_INTEL 0
23#define PROCESSOR_ARCHITECTURE_MIPS 1
24#define PROCESSOR_ARCHITECTURE_ALPHA 2
25#define PROCESSOR_ARCHITECTURE_PPC 3
26#define PROCESSOR_ARCHITECTURE_SHX 4
27#define PROCESSOR_ARCHITECTURE_ARM 5
28#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
29
30/* dwProcessorType */
31#define PROCESSOR_INTEL_386 386
32#define PROCESSOR_INTEL_486 486
33#define PROCESSOR_INTEL_PENTIUM 586
34#define PROCESSOR_INTEL_860 860
35#define PROCESSOR_MIPS_R2000 2000
36#define PROCESSOR_MIPS_R3000 3000
37#define PROCESSOR_MIPS_R4000 4000
38#define PROCESSOR_ALPHA_21064 21064
39#define PROCESSOR_PPC_601 601
40#define PROCESSOR_PPC_603 603
41#define PROCESSOR_PPC_604 604
42#define PROCESSOR_PPC_620 620
43#define PROCESSOR_HITACHI_SH3 10003
44#define PROCESSOR_HITACHI_SH3E 10004
45#define PROCESSOR_HITACHI_SH4 10005
46#define PROCESSOR_MOTOROLA_821 821
47#define PROCESSOR_SHx_SH3 103
48#define PROCESSOR_SHx_SH4 104
49#define PROCESSOR_STRONGARM 2577
50#define PROCESSOR_ARM720 1824 /* 0x720 */
51#define PROCESSOR_ARM820 2080 /* 0x820 */
52#define PROCESSOR_ARM920 2336 /* 0x920 */
53#define PROCESSOR_ARM_7TDMI 70001
54
55#define ANYSIZE_ARRAY 1
56
57#define MINCHAR 0x80
58#define MAXCHAR 0x7f
59#define MINSHORT 0x8000
60#define MAXSHORT 0x7fff
61#define MINLONG 0x80000000
62#define MAXLONG 0x7fffffff
63#define MAXBYTE 0xff
64#define MAXWORD 0xffff
65#define MAXDWORD 0xffffffff
66
67#define FIELD_OFFSET(type, field) \
68 ((LONG)(INT)&(((type *)0)->field))
69
70#define CONTAINING_RECORD(address, type, field) \
71 ((type *)((PCHAR)(address) - (PCHAR)(&((type *)0)->field)))
72
73/* C99 restrict support */
74
75#if defined(ENABLE_RESTRICTED) && !defined(MIDL_PASS) && !defined(RC_INVOKED)
76# if defined(_MSC_VER) && defined(_M_MRX000)
77# define RESTRICTED_POINTER __restrict
78# elif defined(__GNUC__) && ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 95)))
79# define RESTRICTED_POINTER __restrict
80# else
81# define RESTRICTED_POINTER
82# endif
83#else
84# define RESTRICTED_POINTER
85#endif
86
87/* Types */
88
89/* TCHAR data types definitions for Winelib. */
90/* These types are _not_ defined for the emulator, because they */
91/* depend on the UNICODE macro that only exists in user's code. */
92
93#if !defined(__WINE__) && !defined(__WINE_WINDEF_H)
94# ifdef UNICODE
95typedef LPWSTR LPTSTR;
96typedef LPCWSTR LPCTSTR;
97#define __TEXT(string) L##string /*probably wrong */
98# else /* UNICODE */
99typedef LPSTR LPTSTR;
100typedef LPCSTR LPCTSTR;
101#define __TEXT(string) string
102# endif /* UNICODE */
103#endif /* __WINE__ */
104#define TEXT(quote) __TEXT(quote)
105
106typedef char CCHAR;
107typedef BYTE BOOLEAN;
108typedef BOOLEAN *PBOOLEAN;
109typedef DWORD EXECUTION_STATE;
110
111typedef CHAR *PCH, *LPCH;
112typedef const CHAR *PCCH, *LPCCH;
113
114/* Unicode string types */
115typedef WCHAR *PWCH, *LPWCH, *PWCHAR;
116typedef const WCHAR *PCWCH, *LPCWCH;
117
118#if !defined(_TCHAR_DEFINED)
119# define _TCHAR_DEFINED
120# ifdef UNICODE
121typedef WCHAR TCHAR, *PTCHAR;
122typedef LPWSTR PTSTR, LPTSTR;
123typedef LPCWSTR PCTSTR, LPCTSTR;
124# define __TEXT(string) L##string
125# else /* UNICODE */
126#ifndef __WINE_WINDEF_H
127typedef CHAR TCHAR, *PTCHAR;
128typedef LPSTR PTSTR;
129typedef LPCSTR PCTSTR;
130#endif
131# define __TEXT(string) string
132# endif /* UNICODE */
133#endif
134#define TEXT(quote) __TEXT(quote)
135
136/* Types */
137
138typedef struct _LIST_ENTRY {
139 struct _LIST_ENTRY *Flink;
140 struct _LIST_ENTRY *Blink;
141} LIST_ENTRY, *PLIST_ENTRY, * RESTRICTED_POINTER PRLIST_ENTRY;
142
143typedef struct _SINGLE_LIST_ENTRY {
144 struct _SINGLE_LIST_ENTRY *Next;
145} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
146
147#define SLIST_ENTRY SINGLE_LIST_ENTRY
148#define _SLIST_ENTRY _SINGLE_LIST_ENTRY
149#define PSLIST_ENTRY PSINGLE_LIST_ENTRY
150
151typedef union _SLIST_HEADER {
152 ULONGLONG Alignment;
153 struct {
154 SLIST_ENTRY Next;
155 WORD Depth;
156 WORD Sequence;
157 } DUMMYSTRUCTNAME;
158} SLIST_HEADER, *PSLIST_HEADER;
159
160PSLIST_ENTRY WINAPI RtlFirstEntrySList(const SLIST_HEADER*);
161VOID WINAPI RtlInitializeSListHead(PSLIST_HEADER);
162PSLIST_ENTRY WINAPI RtlInterlockedFlushSList(PSLIST_HEADER);
163PSLIST_ENTRY WINAPI RtlInterlockedPopEntrySList(PSLIST_HEADER);
164PSLIST_ENTRY WINAPI RtlInterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY);
165WORD WINAPI RtlQueryDepthSList(PSLIST_HEADER);
166
167
168/* Heap flags */
169
170#define HEAP_NO_SERIALIZE 0x00000001
171#define HEAP_GROWABLE 0x00000002
172#define HEAP_GENERATE_EXCEPTIONS 0x00000004
173#define HEAP_ZERO_MEMORY 0x00000008
174#define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010
175#define HEAP_TAIL_CHECKING_ENABLED 0x00000020
176#define HEAP_FREE_CHECKING_ENABLED 0x00000040
177#define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080
178#define HEAP_CREATE_ALIGN_16 0x00010000
179#define HEAP_CREATE_ENABLE_TRACING 0x00020000
180
181/* This flag allows it to create heaps shared by all processes under win95,
182 FIXME: correct name */
183#define HEAP_SHARED 0x04000000
184
185/* Processor feature flags. */
186#define PF_FLOATING_POINT_PRECISION_ERRATA 0
187#define PF_FLOATING_POINT_EMULATED 1
188#define PF_COMPARE_EXCHANGE_DOUBLE 2
189#define PF_MMX_INSTRUCTIONS_AVAILABLE 3
190#define PF_PPC_MOVEMEM_64BIT_OK 4
191#define PF_ALPHA_BYTE_INSTRUCTIONS 5
192#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6
193#define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7
194#define PF_RDTSC_INSTRUCTION_AVAILABLE 8
195#define PF_PAE_ENABLED 9
196#define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10
197#define PF_SSE_DAZ_MODE_AVAILABLE 11
198#define PF_NX_ENABLED 12
199#define PF_SSE3_INSTRUCTIONS_AVAILABLE 13
200#define PF_COMPARE_EXCHANGE128 14
201#define PF_COMPARE64_EXCHANGE128 15
202#define PF_CHANNELS_ENABLED 16
203
204
205/* The Win32 register context */
206
207/* CONTEXT is the CPU-dependent context; it should be used */
208/* wherever a platform-specific context is needed (e.g. exception */
209/* handling, Win32 register functions). */
210
211/* CONTEXT86 is the i386-specific context; it should be used */
212/* wherever only a 386 context makes sense (e.g. DOS interrupts, */
213/* Win16 register functions), so that this code can be compiled */
214/* on all platforms. */
215
216#define SIZE_OF_80387_REGISTERS 80
217
218typedef struct _FLOATING_SAVE_AREA
219{
220 DWORD ControlWord;
221 DWORD StatusWord;
222 DWORD TagWord;
223 DWORD ErrorOffset;
224 DWORD ErrorSelector;
225 DWORD DataOffset;
226 DWORD DataSelector;
227 BYTE RegisterArea[SIZE_OF_80387_REGISTERS];
228 DWORD Cr0NpxState;
229} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
230
231typedef struct _CONTEXT86
232{
233 DWORD ContextFlags;
234
235 /* These are selected by CONTEXT_DEBUG_REGISTERS */
236 DWORD Dr0;
237 DWORD Dr1;
238 DWORD Dr2;
239 DWORD Dr3;
240 DWORD Dr6;
241 DWORD Dr7;
242
243 /* These are selected by CONTEXT_FLOATING_POINT */
244 FLOATING_SAVE_AREA FloatSave;
245
246 /* These are selected by CONTEXT_SEGMENTS */
247 DWORD SegGs;
248 DWORD SegFs;
249 DWORD SegEs;
250 DWORD SegDs;
251
252 /* These are selected by CONTEXT_INTEGER */
253 DWORD Edi;
254 DWORD Esi;
255 DWORD Ebx;
256 DWORD Edx;
257 DWORD Ecx;
258 DWORD Eax;
259
260 /* These are selected by CONTEXT_CONTROL */
261 DWORD Ebp;
262 DWORD Eip;
263 DWORD SegCs;
264 DWORD EFlags;
265 DWORD Esp;
266 DWORD SegSs;
267} CONTEXT86;
268
269#define CONTEXT_X86 0x00010000
270#define CONTEXT_i386 CONTEXT_X86
271#define CONTEXT_i486 CONTEXT_X86
272
273#define CONTEXT86_CONTROL (CONTEXT_i386 | 0x0001) /* SS:SP, CS:IP, FLAGS, BP */
274#define CONTEXT86_INTEGER (CONTEXT_i386 | 0x0002) /* AX, BX, CX, DX, SI, DI */
275#define CONTEXT86_SEGMENTS (CONTEXT_i386 | 0x0004) /* DS, ES, FS, GS */
276#define CONTEXT86_FLOATING_POINT (CONTEXT_i386 | 0x0008L) /* 387 state */
277#define CONTEXT86_DEBUG_REGISTERS (CONTEXT_i386 | 0x0010L) /* DB 0-3,6,7 */
278#define CONTEXT86_FULL (CONTEXT86_CONTROL | CONTEXT86_INTEGER | CONTEXT86_SEGMENTS)
279
280/* i386 context definitions */
281#ifdef __i386__
282
283#define CONTEXT_CONTROL CONTEXT86_CONTROL
284#define CONTEXT_INTEGER CONTEXT86_INTEGER
285#define CONTEXT_SEGMENTS CONTEXT86_SEGMENTS
286#define CONTEXT_FLOATING_POINT CONTEXT86_FLOATING_POINT
287#define CONTEXT_DEBUG_REGISTERS CONTEXT86_DEBUG_REGISTERS
288#define CONTEXT_FULL CONTEXT86_FULL
289
290typedef CONTEXT86 CONTEXT;
291
292#endif /* __i386__ */
293
294/* Alpha context definitions */
295#ifdef _ALPHA_
296
297#define CONTEXT_ALPHA 0x00020000
298
299#define CONTEXT_CONTROL (CONTEXT_ALPHA | 0x00000001L)
300#define CONTEXT_FLOATING_POINT (CONTEXT_ALPHA | 0x00000002L)
301#define CONTEXT_INTEGER (CONTEXT_ALPHA | 0x00000004L)
302#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
303
304typedef struct _CONTEXT
305{
306 /* selected by CONTEXT_FLOATING_POINT */
307 ULONGLONG FltF0;
308 ULONGLONG FltF1;
309 ULONGLONG FltF2;
310 ULONGLONG FltF3;
311 ULONGLONG FltF4;
312 ULONGLONG FltF5;
313 ULONGLONG FltF6;
314 ULONGLONG FltF7;
315 ULONGLONG FltF8;
316 ULONGLONG FltF9;
317 ULONGLONG FltF10;
318 ULONGLONG FltF11;
319 ULONGLONG FltF12;
320 ULONGLONG FltF13;
321 ULONGLONG FltF14;
322 ULONGLONG FltF15;
323 ULONGLONG FltF16;
324 ULONGLONG FltF17;
325 ULONGLONG FltF18;
326 ULONGLONG FltF19;
327 ULONGLONG FltF20;
328 ULONGLONG FltF21;
329 ULONGLONG FltF22;
330 ULONGLONG FltF23;
331 ULONGLONG FltF24;
332 ULONGLONG FltF25;
333 ULONGLONG FltF26;
334 ULONGLONG FltF27;
335 ULONGLONG FltF28;
336 ULONGLONG FltF29;
337 ULONGLONG FltF30;
338 ULONGLONG FltF31;
339
340 /* selected by CONTEXT_INTEGER */
341 ULONGLONG IntV0;
342 ULONGLONG IntT0;
343 ULONGLONG IntT1;
344 ULONGLONG IntT2;
345 ULONGLONG IntT3;
346 ULONGLONG IntT4;
347 ULONGLONG IntT5;
348 ULONGLONG IntT6;
349 ULONGLONG IntT7;
350 ULONGLONG IntS0;
351 ULONGLONG IntS1;
352 ULONGLONG IntS2;
353 ULONGLONG IntS3;
354 ULONGLONG IntS4;
355 ULONGLONG IntS5;
356 ULONGLONG IntFp;
357 ULONGLONG IntA0;
358 ULONGLONG IntA1;
359 ULONGLONG IntA2;
360 ULONGLONG IntA3;
361 ULONGLONG IntA4;
362 ULONGLONG IntA5;
363 ULONGLONG IntT8;
364 ULONGLONG IntT9;
365 ULONGLONG IntT10;
366 ULONGLONG IntT11;
367 ULONGLONG IntRa;
368 ULONGLONG IntT12;
369 ULONGLONG IntAt;
370 ULONGLONG IntGp;
371 ULONGLONG IntSp;
372 ULONGLONG IntZero;
373
374 /* selected by CONTEXT_FLOATING_POINT */
375 ULONGLONG Fpcr;
376 ULONGLONG SoftFpcr;
377
378 /* selected by CONTEXT_CONTROL */
379 ULONGLONG Fir;
380 DWORD Psr;
381 DWORD ContextFlags;
382 DWORD Fill[4];
383} CONTEXT;
384
385#define _QUAD_PSR_OFFSET HighSoftFpcr
386#define _QUAD_FLAGS_OFFSET HighFir
387
388#endif /* _ALPHA_ */
389
390/* Mips context definitions */
391#ifdef _MIPS_
392
393#define CONTEXT_R4000 0x00010000
394
395#define CONTEXT_CONTROL (CONTEXT_R4000 | 0x00000001)
396#define CONTEXT_FLOATING_POINT (CONTEXT_R4000 | 0x00000002)
397#define CONTEXT_INTEGER (CONTEXT_R4000 | 0x00000004)
398
399#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
400
401typedef struct _CONTEXT
402{
403 DWORD Argument[4];
404 /* These are selected by CONTEXT_FLOATING_POINT */
405 DWORD FltF0;
406 DWORD FltF1;
407 DWORD FltF2;
408 DWORD FltF3;
409 DWORD FltF4;
410 DWORD FltF5;
411 DWORD FltF6;
412 DWORD FltF7;
413 DWORD FltF8;
414 DWORD FltF9;
415 DWORD FltF10;
416 DWORD FltF11;
417 DWORD FltF12;
418 DWORD FltF13;
419 DWORD FltF14;
420 DWORD FltF15;
421 DWORD FltF16;
422 DWORD FltF17;
423 DWORD FltF18;
424 DWORD FltF19;
425 DWORD FltF20;
426 DWORD FltF21;
427 DWORD FltF22;
428 DWORD FltF23;
429 DWORD FltF24;
430 DWORD FltF25;
431 DWORD FltF26;
432 DWORD FltF27;
433 DWORD FltF28;
434 DWORD FltF29;
435 DWORD FltF30;
436 DWORD FltF31;
437
438 /* These are selected by CONTEXT_INTEGER */
439 DWORD IntZero;
440 DWORD IntAt;
441 DWORD IntV0;
442 DWORD IntV1;
443 DWORD IntA0;
444 DWORD IntA1;
445 DWORD IntA2;
446 DWORD IntA3;
447 DWORD IntT0;
448 DWORD IntT1;
449 DWORD IntT2;
450 DWORD IntT3;
451 DWORD IntT4;
452 DWORD IntT5;
453 DWORD IntT6;
454 DWORD IntT7;
455 DWORD IntS0;
456 DWORD IntS1;
457 DWORD IntS2;
458 DWORD IntS3;
459 DWORD IntS4;
460 DWORD IntS5;
461 DWORD IntS6;
462 DWORD IntS7;
463 DWORD IntT8;
464 DWORD IntT9;
465 DWORD IntK0;
466 DWORD IntK1;
467 DWORD IntGp;
468 DWORD IntSp;
469 DWORD IntS8;
470 DWORD IntRa;
471 DWORD IntLo;
472 DWORD IntHi;
473
474 /* These are selected by CONTEXT_FLOATING_POINT */
475 DWORD Fsr;
476
477 /* These are selected by CONTEXT_CONTROL */
478 DWORD Fir;
479 DWORD Psr;
480
481 DWORD ContextFlags;
482 DWORD Fill[2];
483} CONTEXT;
484
485#endif /* _MIPS_ */
486
487/* PowerPC context definitions */
488#ifdef __PPC__
489
490#define CONTEXT_CONTROL 0x0001
491#define CONTEXT_FLOATING_POINT 0x0002
492#define CONTEXT_INTEGER 0x0004
493#define CONTEXT_DEBUG_REGISTERS 0x0008
494#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
495
496typedef struct
497{
498 /* These are selected by CONTEXT_FLOATING_POINT */
499 double Fpr0;
500 double Fpr1;
501 double Fpr2;
502 double Fpr3;
503 double Fpr4;
504 double Fpr5;
505 double Fpr6;
506 double Fpr7;
507 double Fpr8;
508 double Fpr9;
509 double Fpr10;
510 double Fpr11;
511 double Fpr12;
512 double Fpr13;
513 double Fpr14;
514 double Fpr15;
515 double Fpr16;
516 double Fpr17;
517 double Fpr18;
518 double Fpr19;
519 double Fpr20;
520 double Fpr21;
521 double Fpr22;
522 double Fpr23;
523 double Fpr24;
524 double Fpr25;
525 double Fpr26;
526 double Fpr27;
527 double Fpr28;
528 double Fpr29;
529 double Fpr30;
530 double Fpr31;
531 double Fpscr;
532
533 /* These are selected by CONTEXT_INTEGER */
534 DWORD Gpr0;
535 DWORD Gpr1;
536 DWORD Gpr2;
537 DWORD Gpr3;
538 DWORD Gpr4;
539 DWORD Gpr5;
540 DWORD Gpr6;
541 DWORD Gpr7;
542 DWORD Gpr8;
543 DWORD Gpr9;
544 DWORD Gpr10;
545 DWORD Gpr11;
546 DWORD Gpr12;
547 DWORD Gpr13;
548 DWORD Gpr14;
549 DWORD Gpr15;
550 DWORD Gpr16;
551 DWORD Gpr17;
552 DWORD Gpr18;
553 DWORD Gpr19;
554 DWORD Gpr20;
555 DWORD Gpr21;
556 DWORD Gpr22;
557 DWORD Gpr23;
558 DWORD Gpr24;
559 DWORD Gpr25;
560 DWORD Gpr26;
561 DWORD Gpr27;
562 DWORD Gpr28;
563 DWORD Gpr29;
564 DWORD Gpr30;
565 DWORD Gpr31;
566
567 DWORD Cr;
568 DWORD Xer;
569
570 /* These are selected by CONTEXT_CONTROL */
571 DWORD Msr;
572 DWORD Iar;
573 DWORD Lr;
574 DWORD Ctr;
575
576 DWORD ContextFlags;
577 DWORD Fill[3];
578
579 /* These are selected by CONTEXT_DEBUG_REGISTERS */
580 DWORD Dr0;
581 DWORD Dr1;
582 DWORD Dr2;
583 DWORD Dr3;
584 DWORD Dr4;
585 DWORD Dr5;
586 DWORD Dr6;
587 DWORD Dr7;
588} CONTEXT;
589
590typedef struct _STACK_FRAME_HEADER
591{
592 DWORD BackChain;
593 DWORD GlueSaved1;
594 DWORD GlueSaved2;
595 DWORD Reserved1;
596 DWORD Spare1;
597 DWORD Spare2;
598
599 DWORD Parameter0;
600 DWORD Parameter1;
601 DWORD Parameter2;
602 DWORD Parameter3;
603 DWORD Parameter4;
604 DWORD Parameter5;
605 DWORD Parameter6;
606 DWORD Parameter7;
607} STACK_FRAME_HEADER,*PSTACK_FRAME_HEADER;
608
609#endif /* __PPC__ */
610
611#ifdef __sparc__
612
613/*
614 * FIXME:
615 *
616 * There is no official CONTEXT structure defined for the SPARC
617 * architecture, so I just made one up.
618 *
619 * This structure is valid only for 32-bit SPARC architectures,
620 * not for 64-bit SPARC.
621 *
622 * Note that this structure contains only the 'top-level' registers;
623 * the rest of the register window chain is not visible.
624 *
625 * The layout follows the Solaris 'prgregset_t' structure.
626 *
627 */
628
629#define CONTEXT_SPARC 0x10000000
630
631#define CONTEXT_CONTROL (CONTEXT_SPARC | 0x00000001)
632#define CONTEXT_FLOATING_POINT (CONTEXT_SPARC | 0x00000002)
633#define CONTEXT_INTEGER (CONTEXT_SPARC | 0x00000004)
634
635#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
636
637typedef struct _CONTEXT
638{
639 DWORD ContextFlags;
640
641 /* These are selected by CONTEXT_INTEGER */
642 DWORD g0;
643 DWORD g1;
644 DWORD g2;
645 DWORD g3;
646 DWORD g4;
647 DWORD g5;
648 DWORD g6;
649 DWORD g7;
650 DWORD o0;
651 DWORD o1;
652 DWORD o2;
653 DWORD o3;
654 DWORD o4;
655 DWORD o5;
656 DWORD o6;
657 DWORD o7;
658 DWORD l0;
659 DWORD l1;
660 DWORD l2;
661 DWORD l3;
662 DWORD l4;
663 DWORD l5;
664 DWORD l6;
665 DWORD l7;
666 DWORD i0;
667 DWORD i1;
668 DWORD i2;
669 DWORD i3;
670 DWORD i4;
671 DWORD i5;
672 DWORD i6;
673 DWORD i7;
674
675 /* These are selected by CONTEXT_CONTROL */
676 DWORD psr;
677 DWORD pc;
678 DWORD npc;
679 DWORD y;
680 DWORD wim;
681 DWORD tbr;
682
683 /* FIXME: floating point registers missing */
684
685} CONTEXT;
686
687#endif
688
689
690#if !defined(CONTEXT_FULL) && !defined(RC_INVOKED)
691#error You need to define a CONTEXT for your CPU
692#endif
693
694typedef CONTEXT *PCONTEXT;
695typedef HANDLE *PHANDLE;
696
697#ifdef __WINE__
698
699/* Macros for easier access to i386 context registers */
700
701#define EAX_reg(context) ((context)->Eax)
702#define EBX_reg(context) ((context)->Ebx)
703#define ECX_reg(context) ((context)->Ecx)
704#define EDX_reg(context) ((context)->Edx)
705#define ESI_reg(context) ((context)->Esi)
706#define EDI_reg(context) ((context)->Edi)
707#define EBP_reg(context) ((context)->Ebp)
708
709#define CS_reg(context) ((context)->SegCs)
710#define DS_reg(context) ((context)->SegDs)
711#define ES_reg(context) ((context)->SegEs)
712#define FS_reg(context) ((context)->SegFs)
713#define GS_reg(context) ((context)->SegGs)
714#define SS_reg(context) ((context)->SegSs)
715
716#define EFL_reg(context) ((context)->EFlags)
717#define EIP_reg(context) ((context)->Eip)
718#define ESP_reg(context) ((context)->Esp)
719
720#define AX_reg(context) (*(WORD*)&EAX_reg(context))
721#define BX_reg(context) (*(WORD*)&EBX_reg(context))
722#define CX_reg(context) (*(WORD*)&ECX_reg(context))
723#define DX_reg(context) (*(WORD*)&EDX_reg(context))
724#define SI_reg(context) (*(WORD*)&ESI_reg(context))
725#define DI_reg(context) (*(WORD*)&EDI_reg(context))
726#define BP_reg(context) (*(WORD*)&EBP_reg(context))
727
728#define AL_reg(context) (*(BYTE*)&EAX_reg(context))
729#define AH_reg(context) (*((BYTE*)&EAX_reg(context)+1))
730#define BL_reg(context) (*(BYTE*)&EBX_reg(context))
731#define BH_reg(context) (*((BYTE*)&EBX_reg(context)+1))
732#define CL_reg(context) (*(BYTE*)&ECX_reg(context))
733#define CH_reg(context) (*((BYTE*)&ECX_reg(context)+1))
734#define DL_reg(context) (*(BYTE*)&EDX_reg(context))
735#define DH_reg(context) (*((BYTE*)&EDX_reg(context)+1))
736
737#define SET_CFLAG(context) (EFL_reg(context) |= 0x0001)
738#define RESET_CFLAG(context) (EFL_reg(context) &= ~0x0001)
739#define SET_ZFLAG(context) (EFL_reg(context) |= 0x0040)
740#define RESET_ZFLAG(context) (EFL_reg(context) &= ~0x0040)
741
742#define ISV86(context) (EFL_reg(context) & 0x00020000)
743#define V86BASE(context) ((context)->Dr7) /* ugly */
744
745
746/* Macros to retrieve the current context */
747
748#ifdef __i386__
749#define _DEFINE_REGS_ENTRYPOINT( name, fn, args ) \
750 __ASM_GLOBAL_FUNC( name, \
751 "call " __ASM_NAME("__wine_call_from_32_regs") "\n\t" \
752 ".long " __ASM_NAME(#fn) "\n\t" \
753 ".byte " #args ", " "0")
754#define DEFINE_REGS_ENTRYPOINT_0( name, fn ) \
755 extern void WINAPI name(void); \
756 _DEFINE_REGS_ENTRYPOINT( name, fn, 0 )
757#define DEFINE_REGS_ENTRYPOINT_1( name, fn, t1 ) \
758 extern void WINAPI name( t1 a1 ); \
759 _DEFINE_REGS_ENTRYPOINT( name, fn, 4 )
760#define DEFINE_REGS_ENTRYPOINT_2( name, fn, t1, t2 ) \
761 extern void WINAPI name( t1 a1, t2 a2 ); \
762 _DEFINE_REGS_ENTRYPOINT( name, fn, 8 )
763#define DEFINE_REGS_ENTRYPOINT_3( name, fn, t1, t2, t3 ) \
764 extern void WINAPI name( t1 a1, t2 a2, t3 a3 ); \
765 _DEFINE_REGS_ENTRYPOINT( name, fn, 12 )
766#define DEFINE_REGS_ENTRYPOINT_4( name, fn, t1, t2, t3, t4 ) \
767 extern void WINAPI name( t1 a1, t2 a2, t3 a3, t4 a4 ); \
768 _DEFINE_REGS_ENTRYPOINT( name, fn, 16 )
769
770#endif /* __i386__ */
771
772#ifdef __sparc__
773/* FIXME: use getcontext() to retrieve full context */
774#define _GET_CONTEXT \
775 CONTEXT context; \
776 do { memset(&context, 0, sizeof(CONTEXT)); \
777 context.ContextFlags = CONTEXT_CONTROL; \
778 context.pc = (DWORD)__builtin_return_address(0); \
779 } while (0)
780
781#define DEFINE_REGS_ENTRYPOINT_0( name, fn ) \
782 void WINAPI name ( void ) \
783 { _GET_CONTEXT; fn( &context ); }
784#define DEFINE_REGS_ENTRYPOINT_1( name, fn, t1 ) \
785 void WINAPI name ( t1 a1 ) \
786 { _GET_CONTEXT; fn( a1, &context ); }
787#define DEFINE_REGS_ENTRYPOINT_2( name, fn, t1, t2 ) \
788 void WINAPI name ( t1 a1, t2 a2 ) \
789 { _GET_CONTEXT; fn( a1, a2, &context ); }
790#define DEFINE_REGS_ENTRYPOINT_3( name, fn, t1, t2, t3 ) \
791 void WINAPI name ( t1 a1, t2 a2, t3 a3 ) \
792 { _GET_CONTEXT; fn( a1, a2, a3, &context ); }
793#define DEFINE_REGS_ENTRYPOINT_4( name, fn, t1, t2, t3, t4 ) \
794 void WINAPI name ( t1 a1, t2 a2, t3 a3, t4 a4 ) \
795 { _GET_CONTEXT; fn( a1, a2, a3, a4, &context ); }
796
797#endif /* __sparc__ */
798
799#ifndef DEFINE_REGS_ENTRYPOINT_0
800#error You need to define DEFINE_REGS_ENTRYPOINT macros for your CPU
801#endif
802
803#ifdef __i386__
804# define GET_IP(context) ((LPVOID)(context)->Eip)
805#endif
806#ifdef __sparc__
807# define GET_IP(context) ((LPVOID)(context)->pc)
808#endif
809
810#if !defined(GET_IP) && !defined(RC_INVOKED)
811# error You must define GET_IP for this CPU
812#endif
813
814#endif /* __WINE__ */
815
816/* bird-start: from newer winnt.h */
817/*
818 * Language IDs
819 */
820
821#define MAKELCID(l, s) (MAKELONG(l, s))
822
823#define MAKELANGID(p, s) ((((WORD)(s))<<10) | (WORD)(p))
824#define PRIMARYLANGID(l) ((WORD)(l) & 0x3ff)
825#define SUBLANGID(l) ((WORD)(l) >> 10)
826
827#define LANGIDFROMLCID(lcid) ((WORD)(lcid))
828#define SORTIDFROMLCID(lcid) ((WORD)((((DWORD)(lcid)) >> 16) & 0x0f))
829
830#define LANG_SYSTEM_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT))
831#define LANG_USER_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT))
832#define LOCALE_SYSTEM_DEFAULT (MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT))
833#define LOCALE_USER_DEFAULT (MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT))
834#define LOCALE_NEUTRAL (MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT))
835
836#define UNREFERENCED_PARAMETER(u) (u)
837#define DBG_UNREFERENCED_PARAMETER(u) (u)
838#define DBG_UNREFERENCED_LOCAL_VARIABLE(u) (u)
839
840/* FIXME: are the symbolic names correct for LIDs: 0x17, 0x28,
841 * 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x3a, 0x3b, 0x3c
842 */
843#define LANG_NEUTRAL 0x00
844#define LANG_INVARIANT 0x7f
845
846#define LANG_AFRIKAANS 0x36
847#define LANG_ALBANIAN 0x1c
848#define LANG_ARABIC 0x01
849#define LANG_ARMENIAN 0x2b
850#define LANG_ASSAMESE 0x4d
851#define LANG_AZERI 0x2c
852#define LANG_BASQUE 0x2d
853#define LANG_BELARUSIAN 0x23
854#define LANG_BENGALI 0x45
855#define LANG_BULGARIAN 0x02
856#define LANG_CATALAN 0x03
857#define LANG_CHINESE 0x04
858#define LANG_CROATIAN 0x1a
859#define LANG_CZECH 0x05
860#define LANG_DANISH 0x06
861#define LANG_DIVEHI 0x65
862#define LANG_DUTCH 0x13
863#define LANG_ENGLISH 0x09
864#define LANG_ESTONIAN 0x25
865#define LANG_FAEROESE 0x38
866#define LANG_FARSI 0x29
867#define LANG_FINNISH 0x0b
868#define LANG_FRENCH 0x0c
869#define LANG_GALICIAN 0x56
870#define LANG_GEORGIAN 0x37
871#define LANG_GERMAN 0x07
872#define LANG_GREEK 0x08
873#define LANG_GUJARATI 0x47
874#define LANG_HEBREW 0x0d
875#define LANG_HINDI 0x39
876#define LANG_HUNGARIAN 0x0e
877#define LANG_ICELANDIC 0x0f
878#define LANG_INDONESIAN 0x21
879#define LANG_ITALIAN 0x10
880#define LANG_JAPANESE 0x11
881#define LANG_KANNADA 0x4b
882#define LANG_KASHMIRI 0x60
883#define LANG_KAZAK 0x3f
884#define LANG_KONKANI 0x57
885#define LANG_KOREAN 0x12
886#define LANG_KYRGYZ 0x40
887#define LANG_LATVIAN 0x26
888#define LANG_LITHUANIAN 0x27
889#define LANG_MACEDONIAN 0x2f
890#define LANG_MALAY 0x3e
891#define LANG_MALAYALAM 0x4c
892#define LANG_MANIPURI 0x58
893#define LANG_MARATHI 0x4e
894#define LANG_MONGOLIAN 0x50
895#define LANG_NEPALI 0x61
896#define LANG_NORWEGIAN 0x14
897#define LANG_ORIYA 0x48
898#define LANG_POLISH 0x15
899#define LANG_PORTUGUESE 0x16
900#define LANG_PUNJABI 0x46
901#define LANG_ROMANIAN 0x18
902#define LANG_RUSSIAN 0x19
903#define LANG_SANSKRIT 0x4f
904#define LANG_SERBIAN 0x1a
905#define LANG_SINDHI 0x59
906#define LANG_SLOVAK 0x1b
907#define LANG_SLOVENIAN 0x24
908#define LANG_SPANISH 0x0a
909#define LANG_SWAHILI 0x41
910#define LANG_SWEDISH 0x1d
911#define LANG_SYRIAC 0x5a
912#define LANG_TAMIL 0x49
913#define LANG_TATAR 0x44
914#define LANG_TELUGU 0x4a
915#define LANG_THAI 0x1e
916#define LANG_TURKISH 0x1f
917#define LANG_UKRAINIAN 0x22
918#define LANG_URDU 0x20
919#define LANG_UZBEK 0x43
920#define LANG_VIETNAMESE 0x2a
921
922/* FIXME: these are not in the Windows header */
923#define LANG_GAELIC 0x3c
924#define LANG_MALTESE 0x3a
925#define LANG_MAORI 0x28
926#define LANG_RHAETO_ROMANCE 0x17
927#define LANG_SAAMI 0x3b
928#define LANG_SORBIAN 0x2e
929#define LANG_SUTU 0x30
930#define LANG_TSONGA 0x31
931#define LANG_TSWANA 0x32
932#define LANG_VENDA 0x33
933#define LANG_XHOSA 0x34
934#define LANG_ZULU 0x35
935
936/* non standard; keep the number high enough (but < 0xff) */
937#define LANG_ESPERANTO 0x8f
938#define LANG_WALON 0x90
939#define LANG_CORNISH 0x91
940#define LANG_WELSH 0x92
941#define LANG_BRETON 0x93
942
943/* Sublanguage definitions */
944#define SUBLANG_NEUTRAL 0x00 /* language neutral */
945#define SUBLANG_DEFAULT 0x01 /* user default */
946#define SUBLANG_SYS_DEFAULT 0x02 /* system default */
947
948#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
949#define SUBLANG_ARABIC_IRAQ 0x02
950#define SUBLANG_ARABIC_EGYPT 0x03
951#define SUBLANG_ARABIC_LIBYA 0x04
952#define SUBLANG_ARABIC_ALGERIA 0x05
953#define SUBLANG_ARABIC_MOROCCO 0x06
954#define SUBLANG_ARABIC_TUNISIA 0x07
955#define SUBLANG_ARABIC_OMAN 0x08
956#define SUBLANG_ARABIC_YEMEN 0x09
957#define SUBLANG_ARABIC_SYRIA 0x0a
958#define SUBLANG_ARABIC_JORDAN 0x0b
959#define SUBLANG_ARABIC_LEBANON 0x0c
960#define SUBLANG_ARABIC_KUWAIT 0x0d
961#define SUBLANG_ARABIC_UAE 0x0e
962#define SUBLANG_ARABIC_BAHRAIN 0x0f
963#define SUBLANG_ARABIC_QATAR 0x10
964#define SUBLANG_AZERI_LATIN 0x01
965#define SUBLANG_AZERI_CYRILLIC 0x02
966#define SUBLANG_CHINESE_TRADITIONAL 0x01
967#define SUBLANG_CHINESE_SIMPLIFIED 0x02
968#define SUBLANG_CHINESE_HONGKONG 0x03
969#define SUBLANG_CHINESE_SINGAPORE 0x04
970#define SUBLANG_CHINESE_MACAU 0x05
971#define SUBLANG_DUTCH 0x01
972#define SUBLANG_DUTCH_BELGIAN 0x02
973#define SUBLANG_ENGLISH_US 0x01
974#define SUBLANG_ENGLISH_UK 0x02
975#define SUBLANG_ENGLISH_AUS 0x03
976#define SUBLANG_ENGLISH_CAN 0x04
977#define SUBLANG_ENGLISH_NZ 0x05
978#define SUBLANG_ENGLISH_EIRE 0x06
979#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
980#define SUBLANG_ENGLISH_JAMAICA 0x08
981#define SUBLANG_ENGLISH_CARIBBEAN 0x09
982#define SUBLANG_ENGLISH_BELIZE 0x0a
983#define SUBLANG_ENGLISH_TRINIDAD 0x0b
984#define SUBLANG_ENGLISH_ZIMBABWE 0x0c
985#define SUBLANG_ENGLISH_PHILIPPINES 0x0d
986#define SUBLANG_FRENCH 0x01
987#define SUBLANG_FRENCH_BELGIAN 0x02
988#define SUBLANG_FRENCH_CANADIAN 0x03
989#define SUBLANG_FRENCH_SWISS 0x04
990#define SUBLANG_FRENCH_LUXEMBOURG 0x05
991#define SUBLANG_FRENCH_MONACO 0x06
992#define SUBLANG_GERMAN 0x01
993#define SUBLANG_GERMAN_SWISS 0x02
994#define SUBLANG_GERMAN_AUSTRIAN 0x03
995#define SUBLANG_GERMAN_LUXEMBOURG 0x04
996#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
997#define SUBLANG_ITALIAN 0x01
998#define SUBLANG_ITALIAN_SWISS 0x02
999#define SUBLANG_KASHMIRI_SASIA 0x02
1000#define SUBLANG_KASHMIRI_INDIA 0x02
1001#define SUBLANG_KOREAN 0x01
1002#ifdef __WIN32OS2__ /* This have been removed from the SDK. But kernel32 use it. */
1003#define SUBLANG_KOREAN_JOHAB 0x02
1004#endif
1005#define SUBLANG_LITHUANIAN 0x01
1006#define SUBLANG_MALAY_MALAYSIA 0x01
1007#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
1008#define SUBLANG_NEPALI_INDIA 0x02
1009#define SUBLANG_NORWEGIAN_BOKMAL 0x01
1010#define SUBLANG_NORWEGIAN_NYNORSK 0x02
1011#define SUBLANG_PORTUGUESE 0x02
1012#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01
1013#define SUBLANG_SERBIAN_LATIN 0x02
1014#define SUBLANG_SERBIAN_CYRILLIC 0x03
1015#define SUBLANG_SPANISH 0x01
1016#define SUBLANG_SPANISH_MEXICAN 0x02
1017#define SUBLANG_SPANISH_MODERN 0x03
1018#define SUBLANG_SPANISH_GUATEMALA 0x04
1019#define SUBLANG_SPANISH_COSTA_RICA 0x05
1020#define SUBLANG_SPANISH_PANAMA 0x06
1021#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
1022#define SUBLANG_SPANISH_VENEZUELA 0x08
1023#define SUBLANG_SPANISH_COLOMBIA 0x09
1024#define SUBLANG_SPANISH_PERU 0x0a
1025#define SUBLANG_SPANISH_ARGENTINA 0x0b
1026#define SUBLANG_SPANISH_ECUADOR 0x0c
1027#define SUBLANG_SPANISH_CHILE 0x0d
1028#define SUBLANG_SPANISH_URUGUAY 0x0e
1029#define SUBLANG_SPANISH_PARAGUAY 0x0f
1030#define SUBLANG_SPANISH_BOLIVIA 0x10
1031#define SUBLANG_SPANISH_EL_SALVADOR 0x11
1032#define SUBLANG_SPANISH_HONDURAS 0x12
1033#define SUBLANG_SPANISH_NICARAGUA 0x13
1034#define SUBLANG_SPANISH_PUERTO_RICO 0x14
1035#define SUBLANG_SWEDISH 0x01
1036#define SUBLANG_SWEDISH_FINLAND 0x02
1037#define SUBLANG_URDU_PAKISTAN 0x01
1038#define SUBLANG_URDU_INDIA 0x02
1039#define SUBLANG_UZBEK_LATIN 0x01
1040#define SUBLANG_UZBEK_CYRILLIC 0x02
1041
1042/* FIXME: these are not in the Windows header */
1043#define SUBLANG_DUTCH_SURINAM 0x03
1044#define SUBLANG_ROMANIAN 0x01
1045#define SUBLANG_ROMANIAN_MOLDAVIA 0x02
1046#define SUBLANG_RUSSIAN 0x01
1047#define SUBLANG_RUSSIAN_MOLDAVIA 0x02
1048#define SUBLANG_CROATIAN 0x01
1049#define SUBLANG_LITHUANIAN_CLASSIC 0x02
1050#define SUBLANG_GAELIC 0x01
1051#define SUBLANG_GAELIC_SCOTTISH 0x02
1052#define SUBLANG_GAELIC_MANX 0x03
1053
1054
1055/*
1056 * Sort definitions
1057 */
1058
1059#define SORT_DEFAULT 0x0
1060#define SORT_JAPANESE_XJIS 0x0
1061#define SORT_JAPANESE_UNICODE 0x1
1062#define SORT_CHINESE_BIG5 0x0
1063#define SORT_CHINESE_UNICODE 0x1
1064#define SORT_KOREAN_KSC 0x0
1065#define SORT_KOREAN_UNICODE 0x1
1066
1067
1068
1069/*
1070 * Definitions for IsTextUnicode()
1071 */
1072
1073#define IS_TEXT_UNICODE_ASCII16 0x0001
1074#define IS_TEXT_UNICODE_STATISTICS 0x0002
1075#define IS_TEXT_UNICODE_CONTROLS 0x0004
1076#define IS_TEXT_UNICODE_SIGNATURE 0x0008
1077#define IS_TEXT_UNICODE_UNICODE_MASK 0x000F
1078#define IS_TEXT_UNICODE_REVERSE_ASCII16 0x0010
1079#define IS_TEXT_UNICODE_REVERSE_STATISTICS 0x0020
1080#define IS_TEXT_UNICODE_REVERSE_CONTROLS 0x0040
1081#define IS_TEXT_UNICODE_REVERSE_SIGNATURE 0x0080
1082#define IS_TEXT_UNICODE_REVERSE_MASK 0x00F0
1083#define IS_TEXT_UNICODE_ILLEGAL_CHARS 0x0100
1084#define IS_TEXT_UNICODE_ODD_LENGTH 0x0200
1085#define IS_TEXT_UNICODE_DBCS_LEADBYTE 0x0400
1086#define IS_TEXT_UNICODE_NOT_UNICODE_MASK 0x0F00
1087#define IS_TEXT_UNICODE_NULL_BYTES 0x1000
1088#define IS_TEXT_UNICODE_NOT_ASCII_MASK 0xF000
1089
1090/* bird-end: from newer winnt.h */
1091
1092
1093
1094/* Error Masks */
1095#define APPLICATION_ERROR_MASK 0x20000000
1096#define ERROR_SEVERITY_SUCCESS 0x00000000
1097#define ERROR_SEVERITY_INFORMATIONAL 0x40000000
1098#define ERROR_SEVERITY_WARNING 0x80000000
1099#define ERROR_SEVERITY_ERROR 0xC0000000
1100
1101/*
1102 * Exception codes
1103 */
1104
1105#define STATUS_SUCCESS 0x00000000
1106#define STATUS_WAIT_0 0x00000000
1107#define STATUS_ABANDONED_WAIT_0 0x00000080
1108#define STATUS_USER_APC 0x000000C0
1109#define STATUS_TIMEOUT 0x00000102
1110#define STATUS_PENDING 0x00000103
1111
1112#define STATUS_GUARD_PAGE_VIOLATION 0x80000001
1113#define STATUS_DATATYPE_MISALIGNMENT 0x80000002
1114#define STATUS_BREAKPOINT 0x80000003
1115#define STATUS_SINGLE_STEP 0x80000004
1116#define STATUS_BUFFER_OVERFLOW 0x80000005
1117#define STATUS_NO_MORE_FILES 0x80000006
1118#define STATUS_WAKE_SYSTEM_DEBUGGER 0x80000007
1119
1120#define STATUS_HANDLES_CLOSED 0x8000000A
1121#define STATUS_NO_INHERITANCE 0x8000000B
1122#define STATUS_GUID_SUBSTITUTION_MADE 0x8000000C
1123#define STATUS_PARTIAL_COPY 0x8000000D
1124#define STATUS_DEVICE_PAPER_EMPTY 0x8000000E
1125#define STATUS_DEVICE_POWERED_OFF 0x8000000F
1126#define STATUS_DEVICE_OFF_LINE 0x80000010
1127#define STATUS_DEVICE_BUSY 0x80000011
1128#define STATUS_NO_MORE_EAS 0x80000012
1129#define STATUS_INVALID_EA_NAME 0x80000013
1130#define STATUS_EA_LIST_INCONSISTENT 0x80000014
1131#define STATUS_INVALID_EA_FLAG 0x80000015
1132#define STATUS_VERIFY_REQUIRED 0x80000016
1133#define STATUS_EXTRANEOUS_INFORMATION 0x80000017
1134#define STATUS_RXACT_COMMIT_NECESSARY 0x80000018
1135#define STATUS_NO_MORE_ENTRIES 0x8000001A
1136#define STATUS_FILEMARK_DETECTED 0x8000001B
1137#define STATUS_MEDIA_CHANGED 0x8000001C
1138#define STATUS_BUS_RESET 0x8000001D
1139#define STATUS_END_OF_MEDIA 0x8000001E
1140#define STATUS_BEGINNING_OF_MEDIA 0x8000001F
1141#define STATUS_MEDIA_CHECK 0x80000020
1142#define STATUS_SETMARK_DETECTED 0x80000021
1143#define STATUS_NO_DATA_DETECTED 0x80000022
1144#define STATUS_REDIRECTOR_HAS_OPEN_HANDLES 0x80000023
1145#define STATUS_SERVER_HAS_OPEN_HANDLES 0x80000024
1146#define STATUS_ALREADY_DISCONNECTED 0x80000025
1147#define STATUS_LONGJUMP 0x80000026
1148
1149#define STATUS_UNSUCCESSFUL 0xC0000001
1150#define STATUS_NOT_IMPLEMENTED 0xC0000002
1151#define STATUS_INVALID_INFO_CLASS 0xC0000003
1152#define STATUS_INFO_LENGTH_MISMATCH 0xC0000004
1153#define STATUS_ACCESS_VIOLATION 0xC0000005
1154#define STATUS_IN_PAGE_ERROR 0xC0000006
1155#define STATUS_PAGEFILE_QUOTA 0xC0000007
1156#define STATUS_INVALID_HANDLE 0xC0000008
1157#define STATUS_BAD_INITIAL_STACK 0xC0000009
1158#define STATUS_BAD_INITIAL_PC 0xC000000A
1159#define STATUS_INVALID_CID 0xC000000B
1160#define STATUS_TIMER_NOT_CANCELED 0xC000000C
1161#define STATUS_INVALID_PARAMETER 0xC000000D
1162#define STATUS_NO_SUCH_DEVICE 0xC000000E
1163#define STATUS_NO_SUCH_FILE 0xC000000F
1164#define STATUS_INVALID_DEVICE_REQUEST 0xC0000010
1165#define STATUS_END_OF_FILE 0xC0000011
1166#define STATUS_WRONG_VOLUME 0xC0000012
1167#define STATUS_NO_MEDIA_IN_DEVICE 0xC0000013
1168#define STATUS_UNRECOGNIZED_MEDIA 0xC0000014
1169#define STATUS_NONEXISTENT_SECTOR 0xC0000015
1170#define STATUS_MORE_PROCESSING_REQUIRED 0xC0000016
1171#define STATUS_NO_MEMORY 0xC0000017
1172#define STATUS_CONFLICTING_ADDRESSES 0xC0000018
1173#define STATUS_NOT_MAPPED_VIEW 0xC0000019
1174#define STATUS_UNABLE_TO_FREE_VM 0xC000001A
1175#define STATUS_UNABLE_TO_DELETE_SECTION 0xC000001B
1176#define STATUS_INVALID_SYSTEM_SERVICE 0xC000001C
1177#define STATUS_ILLEGAL_INSTRUCTION 0xC000001D
1178#define STATUS_INVALID_LOCK_SEQUENCE 0xC000001E
1179#define STATUS_INVALID_VIEW_SIZE 0xC000001F
1180#define STATUS_INVALID_FILE_FOR_SECTION 0xC0000020
1181#define STATUS_ALREADY_COMMITTED 0xC0000021
1182#define STATUS_ACCESS_DENIED 0xC0000022
1183#define STATUS_BUFFER_TOO_SMALL 0xC0000023
1184#define STATUS_OBJECT_TYPE_MISMATCH 0xC0000024
1185#define STATUS_NONCONTINUABLE_EXCEPTION 0xC0000025
1186#define STATUS_INVALID_DISPOSITION 0xC0000026
1187#define STATUS_UNWIND 0xC0000027
1188#define STATUS_BAD_STACK 0xC0000028
1189#define STATUS_INVALID_UNWIND_TARGET 0xC0000029
1190#define STATUS_NOT_LOCKED 0xC000002A
1191#define STATUS_PARITY_ERROR 0xC000002B
1192#define STATUS_UNABLE_TO_DECOMMIT_VM 0xC000002C
1193#define STATUS_NOT_COMMITTED 0xC000002D
1194#define STATUS_INVALID_PORT_ATTRIBUTES 0xC000002E
1195#define STATUS_PORT_MESSAGE_TOO_LONG 0xC000002F
1196#define STATUS_INVALID_PARAMETER_MIX 0xC0000030
1197#define STATUS_INVALID_QUOTA_LOWER 0xC0000031
1198#define STATUS_DISK_CORRUPT_ERROR 0xC0000032
1199#define STATUS_OBJECT_NAME_INVALID 0xC0000033
1200#define STATUS_OBJECT_NAME_NOT_FOUND 0xC0000034
1201#define STATUS_OBJECT_NAME_COLLISION 0xC0000035
1202#define STATUS_PORT_DISCONNECTED 0xC0000037
1203#define STATUS_DEVICE_ALREADY_ATTACHED 0xC0000038
1204#define STATUS_OBJECT_PATH_INVALID 0xC0000039
1205#define STATUS_OBJECT_PATH_NOT_FOUND 0xC000003A
1206#define STATUS_PATH_SYNTAX_BAD 0xC000003B
1207#define STATUS_DATA_OVERRUN 0xC000003C
1208#define STATUS_DATA_LATE_ERROR 0xC000003D
1209#define STATUS_DATA_ERROR 0xC000003E
1210#define STATUS_CRC_ERROR 0xC000003F
1211#define STATUS_SECTION_TOO_BIG 0xC0000040
1212#define STATUS_PORT_CONNECTION_REFUSED 0xC0000041
1213#define STATUS_INVALID_PORT_HANDLE 0xC0000042
1214#define STATUS_SHARING_VIOLATION 0xC0000043
1215#define STATUS_QUOTA_EXCEEDED 0xC0000044
1216#define STATUS_INVALID_PAGE_PROTECTION 0xC0000045
1217#define STATUS_MUTANT_NOT_OWNED 0xC0000046
1218#define STATUS_SEMAPHORE_LIMIT_EXCEEDED 0xC0000047
1219#define STATUS_PORT_ALREADY_SET 0xC0000048
1220#define STATUS_SECTION_NOT_IMAGE 0xC0000049
1221#define STATUS_SUSPEND_COUNT_EXCEEDED 0xC000004A
1222#define STATUS_THREAD_IS_TERMINATING 0xC000004B
1223#define STATUS_BAD_WORKING_SET_LIMIT 0xC000004C
1224#define STATUS_INCOMPATIBLE_FILE_MAP 0xC000004D
1225#define STATUS_SECTION_PROTECTION 0xC000004E
1226#define STATUS_EAS_NOT_SUPPORTED 0xC000004F
1227#define STATUS_EA_TOO_LARGE 0xC0000050
1228#define STATUS_NONEXISTENT_EA_ENTRY 0xC0000051
1229#define STATUS_NO_EAS_ON_FILE 0xC0000052
1230#define STATUS_EA_CORRUPT_ERROR 0xC0000053
1231#define STATUS_FILE_LOCK_CONFLICT 0xC0000054
1232#define STATUS_LOCK_NOT_GRANTED 0xC0000055
1233#define STATUS_DELETE_PENDING 0xC0000056
1234#define STATUS_CTL_FILE_NOT_SUPPORTED 0xC0000057
1235#define STATUS_UNKNOWN_REVISION 0xC0000058
1236#define STATUS_REVISION_MISMATCH 0xC0000059
1237#define STATUS_INVALID_OWNER 0xC000005A
1238#define STATUS_INVALID_PRIMARY_GROUP 0xC000005B
1239#define STATUS_NO_IMPERSONATION_TOKEN 0xC000005C
1240#define STATUS_CANT_DISABLE_MANDATORY 0xC000005D
1241#define STATUS_NO_LOGON_SERVERS 0xC000005E
1242#define STATUS_NO_SUCH_LOGON_SESSION 0xC000005F
1243#define STATUS_NO_SUCH_PRIVILEGE 0xC0000060
1244#define STATUS_PRIVILEGE_NOT_HELD 0xC0000061
1245#define STATUS_INVALID_ACCOUNT_NAME 0xC0000062
1246#define STATUS_USER_EXISTS 0xC0000063
1247#define STATUS_NO_SUCH_USER 0xC0000064
1248#define STATUS_GROUP_EXISTS 0xC0000065
1249#define STATUS_NO_SUCH_GROUP 0xC0000066
1250#define STATUS_MEMBER_IN_GROUP 0xC0000067
1251#define STATUS_MEMBER_NOT_IN_GROUP 0xC0000068
1252#define STATUS_LAST_ADMIN 0xC0000069
1253#define STATUS_WRONG_PASSWORD 0xC000006A
1254#define STATUS_ILL_FORMED_PASSWORD 0xC000006B
1255#define STATUS_PASSWORD_RESTRICTION 0xC000006C
1256#define STATUS_LOGON_FAILURE 0xC000006D
1257#define STATUS_ACCOUNT_RESTRICTION 0xC000006E
1258#define STATUS_INVALID_LOGON_HOURS 0xC000006F
1259#define STATUS_INVALID_WORKSTATION 0xC0000070
1260#define STATUS_PASSWORD_EXPIRED 0xC0000071
1261#define STATUS_ACCOUNT_DISABLED 0xC0000072
1262#define STATUS_NONE_MAPPED 0xC0000073
1263#define STATUS_TOO_MANY_LUIDS_REQUESTED 0xC0000074
1264#define STATUS_LUIDS_EXHAUSTED 0xC0000075
1265#define STATUS_INVALID_SUB_AUTHORITY 0xC0000076
1266#define STATUS_INVALID_ACL 0xC0000077
1267#define STATUS_INVALID_SID 0xC0000078
1268#define STATUS_INVALID_SECURITY_DESCR 0xC0000079
1269#define STATUS_PROCEDURE_NOT_FOUND 0xC000007A
1270#define STATUS_INVALID_IMAGE_FORMAT 0xC000007B
1271#define STATUS_NO_TOKEN 0xC000007C
1272#define STATUS_BAD_INHERITANCE_ACL 0xC000007D
1273#define STATUS_RANGE_NOT_LOCKED 0xC000007E
1274#define STATUS_DISK_FULL 0xC000007F
1275#define STATUS_SERVER_DISABLED 0xC0000080
1276#define STATUS_SERVER_NOT_DISABLED 0xC0000081
1277#define STATUS_TOO_MANY_GUIDS_REQUESTED 0xC0000082
1278#define STATUS_GUIDS_EXHAUSTED 0xC0000083
1279#define STATUS_INVALID_ID_AUTHORITY 0xC0000084
1280#define STATUS_AGENTS_EXHAUSTED 0xC0000085
1281#define STATUS_INVALID_VOLUME_LABEL 0xC0000086
1282#define STATUS_SECTION_NOT_EXTENDED 0xC0000087
1283#define STATUS_NOT_MAPPED_DATA 0xC0000088
1284#define STATUS_RESOURCE_DATA_NOT_FOUND 0xC0000089
1285#define STATUS_RESOURCE_TYPE_NOT_FOUND 0xC000008A
1286#define STATUS_RESOURCE_NAME_NOT_FOUND 0xC000008B
1287#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C
1288#define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D
1289#define STATUS_FLOAT_DIVIDE_BY_ZERO 0xC000008E
1290#define STATUS_FLOAT_INEXACT_RESULT 0xC000008F
1291#define STATUS_FLOAT_INVALID_OPERATION 0xC0000090
1292#define STATUS_FLOAT_OVERFLOW 0xC0000091
1293#define STATUS_FLOAT_STACK_CHECK 0xC0000092
1294#define STATUS_FLOAT_UNDERFLOW 0xC0000093
1295#define STATUS_INTEGER_DIVIDE_BY_ZERO 0xC0000094
1296#define STATUS_INTEGER_OVERFLOW 0xC0000095
1297#define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096
1298#define STATUS_TOO_MANY_PAGING_FILES 0xC0000097
1299#define STATUS_FILE_INVALID 0xC0000098
1300#define STATUS_ALLOTTED_SPACE_EXCEEDED 0xC0000099
1301#define STATUS_INSUFFICIENT_RESOURCES 0xC000009A
1302#define STATUS_DFS_EXIT_PATH_FOUND 0xC000009B
1303#define STATUS_DEVICE_DATA_ERROR 0xC000009C
1304#define STATUS_DEVICE_NOT_CONNECTED 0xC000009D
1305#define STATUS_DEVICE_POWER_FAILURE 0xC000009E
1306#define STATUS_FREE_VM_NOT_AT_BASE 0xC000009F
1307#define STATUS_MEMORY_NOT_ALLOCATED 0xC00000A0
1308#define STATUS_WORKING_SET_QUOTA 0xC00000A1
1309#define STATUS_MEDIA_WRITE_PROTECTED 0xC00000A2
1310#define STATUS_DEVICE_NOT_READY 0xC00000A3
1311#define STATUS_INVALID_GROUP_ATTRIBUTES 0xC00000A4
1312#define STATUS_BAD_IMPERSONATION_LEVEL 0xC00000A5
1313#define STATUS_CANT_OPEN_ANONYMOUS 0xC00000A6
1314#define STATUS_BAD_VALIDATION_CLASS 0xC00000A7
1315#define STATUS_BAD_TOKEN_TYPE 0xC00000A8
1316#define STATUS_BAD_MASTER_BOOT_RECORD 0xC00000A9
1317#define STATUS_INSTRUCTION_MISALIGNMENT 0xC00000AA
1318#define STATUS_INSTANCE_NOT_AVAILABLE 0xC00000AB
1319#define STATUS_PIPE_NOT_AVAILABLE 0xC00000AC
1320#define STATUS_INVALID_PIPE_STATE 0xC00000AD
1321#define STATUS_PIPE_BUSY 0xC00000AE
1322#define STATUS_ILLEGAL_FUNCTION 0xC00000AF
1323#define STATUS_PIPE_DISCONNECTED 0xC00000B0
1324#define STATUS_PIPE_CLOSING 0xC00000B1
1325#define STATUS_PIPE_CONNECTED 0xC00000B2
1326#define STATUS_PIPE_LISTENING 0xC00000B3
1327#define STATUS_INVALID_READ_MODE 0xC00000B4
1328#define STATUS_IO_TIMEOUT 0xC00000B5
1329#define STATUS_FILE_FORCED_CLOSED 0xC00000B6
1330#define STATUS_PROFILING_NOT_STARTED 0xC00000B7
1331#define STATUS_PROFILING_NOT_STOPPED 0xC00000B8
1332#define STATUS_COULD_NOT_INTERPRET 0xC00000B9
1333#define STATUS_FILE_IS_A_DIRECTORY 0xC00000BA
1334#define STATUS_NOT_SUPPORTED 0xC00000BB
1335#define STATUS_REMOTE_NOT_LISTENING 0xC00000BC
1336#define STATUS_DUPLICATE_NAME 0xC00000BD
1337#define STATUS_BAD_NETWORK_PATH 0xC00000BE
1338#define STATUS_NETWORK_BUSY 0xC00000BF
1339#define STATUS_DEVICE_DOES_NOT_EXIST 0xC00000C0
1340#define STATUS_TOO_MANY_COMMANDS 0xC00000C1
1341#define STATUS_ADAPTER_HARDWARE_ERROR 0xC00000C2
1342#define STATUS_INVALID_NETWORK_RESPONSE 0xC00000C3
1343#define STATUS_UNEXPECTED_NETWORK_ERROR 0xC00000C4
1344#define STATUS_BAD_REMOTE_ADAPTER 0xC00000C5
1345#define STATUS_PRINT_QUEUE_FULL 0xC00000C6
1346#define STATUS_NO_SPOOL_SPACE 0xC00000C7
1347#define STATUS_PRINT_CANCELLED 0xC00000C8
1348#define STATUS_NETWORK_NAME_DELETED 0xC00000C9
1349#define STATUS_NETWORK_ACCESS_DENIED 0xC00000CA
1350#define STATUS_BAD_DEVICE_TYPE 0xC00000CB
1351#define STATUS_BAD_NETWORK_NAME 0xC00000CC
1352#define STATUS_TOO_MANY_NAMES 0xC00000CD
1353#define STATUS_TOO_MANY_SESSIONS 0xC00000CE
1354#define STATUS_SHARING_PAUSED 0xC00000CF
1355#define STATUS_REQUEST_NOT_ACCEPTED 0xC00000D0
1356#define STATUS_REDIRECTOR_PAUSED 0xC00000D1
1357#define STATUS_NET_WRITE_FAULT 0xC00000D2
1358#define STATUS_PROFILING_AT_LIMIT 0xC00000D3
1359#define STATUS_NOT_SAME_DEVICE 0xC00000D4
1360#define STATUS_FILE_RENAMED 0xC00000D5
1361#define STATUS_VIRTUAL_CIRCUIT_CLOSED 0xC00000D6
1362#define STATUS_NO_SECURITY_ON_OBJECT 0xC00000D7
1363#define STATUS_CANT_WAIT 0xC00000D8
1364#define STATUS_PIPE_EMPTY 0xC00000D9
1365#define STATUS_CANT_ACCESS_DOMAIN_INFO 0xC00000DA
1366#define STATUS_CANT_TERMINATE_SELF 0xC00000DB
1367#define STATUS_INVALID_SERVER_STATE 0xC00000DC
1368#define STATUS_INVALID_DOMAIN_STATE 0xC00000DD
1369#define STATUS_INVALID_DOMAIN_ROLE 0xC00000DE
1370#define STATUS_NO_SUCH_DOMAIN 0xC00000DF
1371#define STATUS_DOMAIN_EXISTS 0xC00000E0
1372#define STATUS_DOMAIN_LIMIT_EXCEEDED 0xC00000E1
1373#define STATUS_OPLOCK_NOT_GRANTED 0xC00000E2
1374#define STATUS_INVALID_OPLOCK_PROTOCOL 0xC00000E3
1375#define STATUS_INTERNAL_DB_CORRUPTION 0xC00000E4
1376#define STATUS_INTERNAL_ERROR 0xC00000E5
1377#define STATUS_GENERIC_NOT_MAPPED 0xC00000E6
1378#define STATUS_BAD_DESCRIPTOR_FORMAT 0xC00000E7
1379#define STATUS_INVALID_USER_BUFFER 0xC00000E8
1380#define STATUS_UNEXPECTED_IO_ERROR 0xC00000E9
1381#define STATUS_UNEXPECTED_MM_CREATE_ERR 0xC00000EA
1382#define STATUS_UNEXPECTED_MM_MAP_ERROR 0xC00000EB
1383#define STATUS_UNEXPECTED_MM_EXTEND_ERR 0xC00000EC
1384#define STATUS_NOT_LOGON_PROCESS 0xC00000ED
1385#define STATUS_LOGON_SESSION_EXISTS 0xC00000EE
1386#define STATUS_INVALID_PARAMETER_1 0xC00000EF
1387#define STATUS_INVALID_PARAMETER_2 0xC00000F0
1388#define STATUS_INVALID_PARAMETER_3 0xC00000F1
1389#define STATUS_INVALID_PARAMETER_4 0xC00000F2
1390#define STATUS_INVALID_PARAMETER_5 0xC00000F3
1391#define STATUS_INVALID_PARAMETER_6 0xC00000F4
1392#define STATUS_INVALID_PARAMETER_7 0xC00000F5
1393#define STATUS_INVALID_PARAMETER_8 0xC00000F6
1394#define STATUS_INVALID_PARAMETER_9 0xC00000F7
1395#define STATUS_INVALID_PARAMETER_10 0xC00000F8
1396#define STATUS_INVALID_PARAMETER_11 0xC00000F9
1397#define STATUS_INVALID_PARAMETER_12 0xC00000FA
1398#define STATUS_REDIRECTOR_NOT_STARTED 0xC00000FB
1399#define STATUS_REDIRECTOR_STARTED 0xC00000FC
1400#define STATUS_STACK_OVERFLOW 0xC00000FD
1401#define STATUS_BAD_FUNCTION_TABLE 0xC00000FF
1402#define STATUS_VARIABLE_NOT_FOUND 0xC0000100
1403#define STATUS_DIRECTORY_NOT_EMPTY 0xC0000101
1404#define STATUS_FILE_CORRUPT_ERROR 0xC0000102
1405#define STATUS_NOT_A_DIRECTORY 0xC0000103
1406#define STATUS_BAD_LOGON_SESSION_STATE 0xC0000104
1407#define STATUS_LOGON_SESSION_COLLISION 0xC0000105
1408#define STATUS_NAME_TOO_LONG 0xC0000106
1409#define STATUS_FILES_OPEN 0xC0000107
1410#define STATUS_CONNECTION_IN_USE 0xC0000108
1411#define STATUS_MESSAGE_NOT_FOUND 0xC0000109
1412#define STATUS_PROCESS_IS_TERMINATING 0xC000010A
1413#define STATUS_INVALID_LOGON_TYPE 0xC000010B
1414#define STATUS_NO_GUID_TRANSLATION 0xC000010C
1415#define STATUS_CANNOT_IMPERSONATE 0xC000010D
1416#define STATUS_IMAGE_ALREADY_LOADED 0xC000010E
1417#define STATUS_ABIOS_NOT_PRESENT 0xC000010F
1418#define STATUS_ABIOS_LID_NOT_EXIST 0xC0000110
1419#define STATUS_ABIOS_LID_ALREADY_OWNED 0xC0000111
1420#define STATUS_ABIOS_NOT_LID_OWNER 0xC0000112
1421#define STATUS_ABIOS_INVALID_COMMAND 0xC0000113
1422#define STATUS_ABIOS_INVALID_LID 0xC0000114
1423#define STATUS_ABIOS_SELECTOR_NOT_AVAILABLE 0xC0000115
1424#define STATUS_ABIOS_INVALID_SELECTOR 0xC0000116
1425#define STATUS_NO_LDT 0xC0000117
1426#define STATUS_INVALID_LDT_SIZE 0xC0000118
1427#define STATUS_INVALID_LDT_OFFSET 0xC0000119
1428#define STATUS_INVALID_LDT_DESCRIPTOR 0xC000011A
1429#define STATUS_INVALID_IMAGE_NE_FORMAT 0xC000011B
1430#define STATUS_RXACT_INVALID_STATE 0xC000011C
1431#define STATUS_RXACT_COMMIT_FAILURE 0xC000011D
1432#define STATUS_MAPPED_FILE_SIZE_ZERO 0xC000011E
1433#define STATUS_TOO_MANY_OPENED_FILES 0xC000011F
1434#define STATUS_CANCELLED 0xC0000120
1435#define STATUS_CANNOT_DELETE 0xC0000121
1436#define STATUS_INVALID_COMPUTER_NAME 0xC0000122
1437#define STATUS_FILE_DELETED 0xC0000123
1438#define STATUS_SPECIAL_ACCOUNT 0xC0000124
1439#define STATUS_SPECIAL_GROUP 0xC0000125
1440#define STATUS_SPECIAL_USER 0xC0000126
1441#define STATUS_MEMBERS_PRIMARY_GROUP 0xC0000127
1442#define STATUS_FILE_CLOSED 0xC0000128
1443#define STATUS_TOO_MANY_THREADS 0xC0000129
1444#define STATUS_THREAD_NOT_IN_PROCESS 0xC000012A
1445#define STATUS_TOKEN_ALREADY_IN_USE 0xC000012B
1446#define STATUS_PAGEFILE_QUOTA_EXCEEDED 0xC000012C
1447#define STATUS_COMMITMENT_LIMIT 0xC000012D
1448#define STATUS_INVALID_IMAGE_LE_FORMAT 0xC000012E
1449#define STATUS_INVALID_IMAGE_NOT_MZ 0xC000012F
1450#define STATUS_INVALID_IMAGE_PROTECT 0xC0000130
1451#define STATUS_INVALID_IMAGE_WIN_16 0xC0000131
1452#define STATUS_LOGON_SERVER_CONFLICT 0xC0000132
1453#define STATUS_TIME_DIFFERENCE_AT_DC 0xC0000133
1454#define STATUS_SYNCHRONIZATION_REQUIRED 0xC0000134
1455#define STATUS_DLL_NOT_FOUND 0xC0000135
1456#define STATUS_OPEN_FAILED 0xC0000136
1457#define STATUS_IO_PRIVILEGE_FAILED 0xC0000137
1458#define STATUS_ORDINAL_NOT_FOUND 0xC0000138
1459#define STATUS_ENTRYPOINT_NOT_FOUND 0xC0000139
1460#define STATUS_CONTROL_C_EXIT 0xC000013A
1461#define STATUS_LOCAL_DISCONNECT 0xC000013B
1462#define STATUS_REMOTE_DISCONNECT 0xC000013C
1463#define STATUS_REMOTE_RESOURCES 0xC000013D
1464#define STATUS_LINK_FAILED 0xC000013E
1465#define STATUS_LINK_TIMEOUT 0xC000013F
1466#define STATUS_INVALID_CONNECTION 0xC0000140
1467#define STATUS_INVALID_ADDRESS 0xC0000141
1468#define STATUS_DLL_INIT_FAILED 0xC0000142
1469#define STATUS_MISSING_SYSTEMFILE 0xC0000143
1470#define STATUS_UNHANDLED_EXCEPTION 0xC0000144
1471#define STATUS_APP_INIT_FAILURE 0xC0000145
1472#define STATUS_PAGEFILE_CREATE_FAILED 0xC0000146
1473#define STATUS_NO_PAGEFILE 0xC0000147
1474#define STATUS_INVALID_LEVEL 0xC0000148
1475#define STATUS_WRONG_PASSWORD_CORE 0xC0000149
1476#define STATUS_ILLEGAL_FLOAT_CONTEXT 0xC000014A
1477#define STATUS_PIPE_BROKEN 0xC000014B
1478#define STATUS_REGISTRY_CORRUPT 0xC000014C
1479#define STATUS_REGISTRY_IO_FAILED 0xC000014D
1480#define STATUS_NO_EVENT_PAIR 0xC000014E
1481#define STATUS_UNRECOGNIZED_VOLUME 0xC000014F
1482#define STATUS_SERIAL_NO_DEVICE_INITED 0xC0000150
1483#define STATUS_NO_SUCH_ALIAS 0xC0000151
1484#define STATUS_MEMBER_NOT_IN_ALIAS 0xC0000152
1485#define STATUS_MEMBER_IN_ALIAS 0xC0000153
1486#define STATUS_ALIAS_EXISTS 0xC0000154
1487#define STATUS_LOGON_NOT_GRANTED 0xC0000155
1488#define STATUS_TOO_MANY_SECRETS 0xC0000156
1489#define STATUS_SECRET_TOO_LONG 0xC0000157
1490#define STATUS_INTERNAL_DB_ERROR 0xC0000158
1491#define STATUS_FULLSCREEN_MODE 0xC0000159
1492#define STATUS_TOO_MANY_CONTEXT_IDS 0xC000015A
1493#define STATUS_LOGON_TYPE_NOT_GRANTED 0xC000015B
1494#define STATUS_NOT_REGISTRY_FILE 0xC000015C
1495#define STATUS_NT_CROSS_ENCRYPTION_REQUIRED 0xC000015D
1496#define STATUS_DOMAIN_CTRLR_CONFIG_ERROR 0xC000015E
1497#define STATUS_FT_MISSING_MEMBER 0xC000015F
1498#define STATUS_ILL_FORMED_SERVICE_ENTRY 0xC0000160
1499#define STATUS_ILLEGAL_CHARACTER 0xC0000161
1500#define STATUS_UNMAPPABLE_CHARACTER 0xC0000162
1501#define STATUS_UNDEFINED_CHARACTER 0xC0000163
1502#define STATUS_FLOPPY_VOLUME 0xC0000164
1503#define STATUS_FLOPPY_ID_MARK_NOT_FOUND 0xC0000165
1504#define STATUS_FLOPPY_WRONG_CYLINDER 0xC0000166
1505#define STATUS_FLOPPY_UNKNOWN_ERROR 0xC0000167
1506#define STATUS_FLOPPY_BAD_REGISTERS 0xC0000168
1507#define STATUS_DISK_RECALIBRATE_FAILED 0xC0000169
1508#define STATUS_DISK_OPERATION_FAILED 0xC000016A
1509#define STATUS_DISK_RESET_FAILED 0xC000016B
1510#define STATUS_SHARED_IRQ_BUSY 0xC000016C
1511#define STATUS_FT_ORPHANING 0xC000016D
1512#define STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT 0xC000016E
1513
1514#define STATUS_PARTITION_FAILURE 0xC0000172
1515#define STATUS_INVALID_BLOCK_LENGTH 0xC0000173
1516#define STATUS_DEVICE_NOT_PARTITIONED 0xC0000174
1517#define STATUS_UNABLE_TO_LOCK_MEDIA 0xC0000175
1518#define STATUS_UNABLE_TO_UNLOAD_MEDIA 0xC0000176
1519#define STATUS_EOM_OVERFLOW 0xC0000177
1520#define STATUS_NO_MEDIA 0xC0000178
1521#define STATUS_NO_SUCH_MEMBER 0xC000017A
1522#define STATUS_INVALID_MEMBER 0xC000017B
1523#define STATUS_KEY_DELETED 0xC000017C
1524#define STATUS_NO_LOG_SPACE 0xC000017D
1525#define STATUS_TOO_MANY_SIDS 0xC000017E
1526#define STATUS_LM_CROSS_ENCRYPTION_REQUIRED 0xC000017F
1527#define STATUS_KEY_HAS_CHILDREN 0xC0000180
1528#define STATUS_CHILD_MUST_BE_VOLATILE 0xC0000181
1529#define STATUS_DEVICE_CONFIGURATION_ERROR 0xC0000182
1530#define STATUS_DRIVER_INTERNAL_ERROR 0xC0000183
1531#define STATUS_INVALID_DEVICE_STATE 0xC0000184
1532#define STATUS_IO_DEVICE_ERROR 0xC0000185
1533#define STATUS_DEVICE_PROTOCOL_ERROR 0xC0000186
1534#define STATUS_BACKUP_CONTROLLER 0xC0000187
1535#define STATUS_LOG_FILE_FULL 0xC0000188
1536#define STATUS_TOO_LATE 0xC0000189
1537#define STATUS_NO_TRUST_LSA_SECRET 0xC000018A
1538#define STATUS_NO_TRUST_SAM_ACCOUNT 0xC000018B
1539#define STATUS_TRUSTED_DOMAIN_FAILURE 0xC000018C
1540#define STATUS_TRUSTED_RELATIONSHIP_FAILURE 0xC000018D
1541#define STATUS_EVENTLOG_FILE_CORRUPT 0xC000018E
1542#define STATUS_EVENTLOG_CANT_START 0xC000018F
1543#define STATUS_TRUST_FAILURE 0xC0000190
1544#define STATUS_MUTANT_LIMIT_EXCEEDED 0xC0000191
1545#define STATUS_NETLOGON_NOT_STARTED 0xC0000192
1546#define STATUS_ACCOUNT_EXPIRED 0xC0000193
1547#define STATUS_POSSIBLE_DEADLOCK 0xC0000194
1548#define STATUS_NETWORK_CREDENTIAL_CONFLICT 0xC0000195
1549#define STATUS_REMOTE_SESSION_LIMIT 0xC0000196
1550#define STATUS_EVENTLOG_FILE_CHANGED 0xC0000197
1551#define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT 0xC0000198
1552#define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT 0xC0000199
1553#define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT 0xC000019A
1554#define STATUS_DOMAIN_TRUST_INCONSISTENT 0xC000019B
1555#define STATUS_FS_DRIVER_REQUIRED 0xC000019C
1556
1557#define STATUS_NO_USER_SESSION_KEY 0xC0000202
1558#define STATUS_USER_SESSION_DELETED 0xC0000203
1559#define STATUS_RESOURCE_LANG_NOT_FOUND 0xC0000204
1560#define STATUS_INSUFF_SERVER_RESOURCES 0xC0000205
1561#define STATUS_INVALID_BUFFER_SIZE 0xC0000206
1562#define STATUS_INVALID_ADDRESS_COMPONENT 0xC0000207
1563#define STATUS_INVALID_ADDRESS_WILDCARD 0xC0000208
1564#define STATUS_TOO_MANY_ADDRESSES 0xC0000209
1565#define STATUS_ADDRESS_ALREADY_EXISTS 0xC000020A
1566#define STATUS_ADDRESS_CLOSED 0xC000020B
1567#define STATUS_CONNECTION_DISCONNECTED 0xC000020C
1568#define STATUS_CONNECTION_RESET 0xC000020D
1569#define STATUS_TOO_MANY_NODES 0xC000020E
1570#define STATUS_TRANSACTION_ABORTED 0xC000020F
1571#define STATUS_TRANSACTION_TIMED_OUT 0xC0000210
1572#define STATUS_TRANSACTION_NO_RELEASE 0xC0000211
1573#define STATUS_TRANSACTION_NO_MATCH 0xC0000212
1574#define STATUS_TRANSACTION_RESPONDED 0xC0000213
1575#define STATUS_TRANSACTION_INVALID_ID 0xC0000214
1576#define STATUS_TRANSACTION_INVALID_TYPE 0xC0000215
1577#define STATUS_NOT_SERVER_SESSION 0xC0000216
1578#define STATUS_NOT_CLIENT_SESSION 0xC0000217
1579#define STATUS_CANNOT_LOAD_REGISTRY_FILE 0xC0000218
1580#define STATUS_DEBUG_ATTACH_FAILED 0xC0000219
1581#define STATUS_SYSTEM_PROCESS_TERMINATED 0xC000021A
1582#define STATUS_DATA_NOT_ACCEPTED 0xC000021B
1583#define STATUS_NO_BROWSER_SERVERS_FOUND 0xC000021C
1584#define STATUS_VDM_HARD_ERROR 0xC000021D
1585#define STATUS_DRIVER_CANCEL_TIMEOUT 0xC000021E
1586#define STATUS_REPLY_MESSAGE_MISMATCH 0xC000021F
1587#define STATUS_MAPPED_ALIGNMENT 0xC0000220
1588#define STATUS_IMAGE_CHECKSUM_MISMATCH 0xC0000221
1589#define STATUS_LOST_WRITEBEHIND_DATA 0xC0000222
1590#define STATUS_CLIENT_SERVER_PARAMETERS_INVALID 0xC0000223
1591#define STATUS_PASSWORD_MUST_CHANGE 0xC0000224
1592#define STATUS_NOT_FOUND 0xC0000225
1593#define STATUS_NOT_TINY_STREAM 0xC0000226
1594#define STATUS_RECOVERY_FAILURE 0xC0000227
1595#define STATUS_STACK_OVERFLOW_READ 0xC0000228
1596#define STATUS_FAIL_CHECK 0xC0000229
1597#define STATUS_DUPLICATE_OBJECTID 0xC000022A
1598#define STATUS_OBJECTID_EXISTS 0xC000022B
1599#define STATUS_CONVERT_TO_LARGE 0xC000022C
1600#define STATUS_RETRY 0xC000022D
1601#define STATUS_FOUND_OUT_OF_SCOPE 0xC000022E
1602#define STATUS_ALLOCATE_BUCKET 0xC000022F
1603#define STATUS_PROPSET_NOT_FOUND 0xC0000230
1604#define STATUS_MARSHALL_OVERFLOW 0xC0000231
1605#define STATUS_INVALID_VARIANT 0xC0000232
1606#define STATUS_DOMAIN_CONTROLLER_NOT_FOUND 0xC0000233
1607#define STATUS_ACCOUNT_LOCKED_OUT 0xC0000234
1608#define STATUS_HANDLE_NOT_CLOSABLE 0xC0000235
1609#define STATUS_CONNECTION_REFUSED 0xC0000236
1610#define STATUS_GRACEFUL_DISCONNECT 0xC0000237
1611#define STATUS_ADDRESS_ALREADY_ASSOCIATED 0xC0000238
1612#define STATUS_ADDRESS_NOT_ASSOCIATED 0xC0000239
1613#define STATUS_CONNECTION_INVALID 0xC000023A
1614#define STATUS_CONNECTION_ACTIVE 0xC000023B
1615#define STATUS_NETWORK_UNREACHABLE 0xC000023C
1616#define STATUS_HOST_UNREACHABLE 0xC000023D
1617#define STATUS_PROTOCOL_UNREACHABLE 0xC000023E
1618#define STATUS_PORT_UNREACHABLE 0xC000023F
1619#define STATUS_REQUEST_ABORTED 0xC0000240
1620#define STATUS_CONNECTION_ABORTED 0xC0000241
1621#define STATUS_BAD_COMPRESSION_BUFFER 0xC0000242
1622#define STATUS_USER_MAPPED_FILE 0xC0000243
1623#define STATUS_AUDIT_FAILED 0xC0000244
1624#define STATUS_TIMER_RESOLUTION_NOT_SET 0xC0000245
1625#define STATUS_CONNECTION_COUNT_LIMIT 0xC0000246
1626#define STATUS_LOGIN_TIME_RESTRICTION 0xC0000247
1627#define STATUS_LOGIN_WKSTA_RESTRICTION 0xC0000248
1628#define STATUS_IMAGE_MP_UP_MISMATCH 0xC0000249
1629#define STATUS_INSUFFICIENT_LOGON_INFO 0xC0000250
1630#define STATUS_BAD_DLL_ENTRYPOINT 0xC0000251
1631#define STATUS_BAD_SERVICE_ENTRYPOINT 0xC0000252
1632#define STATUS_LPC_REPLY_LOST 0xC0000253
1633#define STATUS_IP_ADDRESS_CONFLICT1 0xC0000254
1634#define STATUS_IP_ADDRESS_CONFLICT2 0xC0000255
1635#define STATUS_REGISTRY_QUOTA_LIMIT 0xC0000256
1636#define STATUS_PATH_NOT_COVERED 0xC0000257
1637#define STATUS_NO_CALLBACK_ACTIVE 0xC0000258
1638#define STATUS_LICENSE_QUOTA_EXCEEDED 0xC0000259
1639#define STATUS_PWD_TOO_SHORT 0xC000025A
1640#define STATUS_PWD_TOO_RECENT 0xC000025B
1641#define STATUS_PWD_HISTORY_CONFLICT 0xC000025C
1642#define STATUS_PLUGPLAY_NO_DEVICE 0xC000025E
1643#define STATUS_UNSUPPORTED_COMPRESSION 0xC000025F
1644#define STATUS_INVALID_HW_PROFILE 0xC0000260
1645#define STATUS_INVALID_PLUGPLAY_DEVICE_PATH 0xC0000261
1646#define STATUS_DRIVER_ORDINAL_NOT_FOUND 0xC0000262
1647#define STATUS_DRIVER_ENTRYPOINT_NOT_FOUND 0xC0000263
1648#define STATUS_RESOURCE_NOT_OWNED 0xC0000264
1649#define STATUS_TOO_MANY_LINKS 0xC0000265
1650#define STATUS_QUOTA_LIST_INCONSISTENT 0xC0000266
1651#define STATUS_FILE_IS_OFFLINE 0xC0000267
1652#define STATUS_EVALUATION_EXPIRATION 0xC0000268
1653#define STATUS_ILLEGAL_DLL_RELOCATION 0xC0000269
1654#define STATUS_LICENSE_VIOLATION 0xC000026A
1655#define STATUS_DLL_INIT_FAILED_LOGOFF 0xC000026B
1656#define STATUS_DRIVER_UNABLE_TO_LOAD 0xC000026C
1657#define STATUS_DFS_UNAVAILABLE 0xC000026D
1658#define STATUS_VOLUME_DISMOUNTED 0xC000026E
1659#define STATUS_WX86_INTERNAL_ERROR 0xC000026F
1660#define STATUS_WX86_FLOAT_STACK_CHECK 0xC0000270
1661#define STATUS_WOW_ASSERTION 0xC0009898
1662#define RPC_NT_INVALID_STRING_BINDING 0xC0020001
1663#define RPC_NT_WRONG_KIND_OF_BINDING 0xC0020002
1664#define RPC_NT_INVALID_BINDING 0xC0020003
1665#define RPC_NT_PROTSEQ_NOT_SUPPORTED 0xC0020004
1666#define RPC_NT_INVALID_RPC_PROTSEQ 0xC0020005
1667#define RPC_NT_INVALID_STRING_UUID 0xC0020006
1668#define RPC_NT_INVALID_ENDPOINT_FORMAT 0xC0020007
1669#define RPC_NT_INVALID_NET_ADDR 0xC0020008
1670#define RPC_NT_NO_ENDPOINT_FOUND 0xC0020009
1671#define RPC_NT_INVALID_TIMEOUT 0xC002000A
1672#define RPC_NT_OBJECT_NOT_FOUND 0xC002000B
1673#define RPC_NT_ALREADY_REGISTERED 0xC002000C
1674#define RPC_NT_TYPE_ALREADY_REGISTERED 0xC002000D
1675#define RPC_NT_ALREADY_LISTENING 0xC002000E
1676#define RPC_NT_NO_PROTSEQS_REGISTERED 0xC002000F
1677#define RPC_NT_NOT_LISTENING 0xC0020010
1678#define RPC_NT_UNKNOWN_MGR_TYPE 0xC0020011
1679#define RPC_NT_UNKNOWN_IF 0xC0020012
1680#define RPC_NT_NO_BINDINGS 0xC0020013
1681#define RPC_NT_NO_PROTSEQS 0xC0020014
1682#define RPC_NT_CANT_CREATE_ENDPOINT 0xC0020015
1683#define RPC_NT_OUT_OF_RESOURCES 0xC0020016
1684#define RPC_NT_SERVER_UNAVAILABLE 0xC0020017
1685#define RPC_NT_SERVER_TOO_BUSY 0xC0020018
1686#define RPC_NT_INVALID_NETWORK_OPTIONS 0xC0020019
1687#define RPC_NT_NO_CALL_ACTIVE 0xC002001A
1688#define RPC_NT_CALL_FAILED 0xC002001B
1689#define RPC_NT_CALL_FAILED_DNE 0xC002001C
1690#define RPC_NT_PROTOCOL_ERROR 0xC002001D
1691#define RPC_NT_UNSUPPORTED_TRANS_SYN 0xC002001F
1692#define RPC_NT_UNSUPPORTED_TYPE 0xC0020021
1693#define RPC_NT_INVALID_TAG 0xC0020022
1694#define RPC_NT_INVALID_BOUND 0xC0020023
1695#define RPC_NT_NO_ENTRY_NAME 0xC0020024
1696#define RPC_NT_INVALID_NAME_SYNTAX 0xC0020025
1697#define RPC_NT_UNSUPPORTED_NAME_SYNTAX 0xC0020026
1698#define RPC_NT_UUID_NO_ADDRESS 0xC0020028
1699#define RPC_NT_DUPLICATE_ENDPOINT 0xC0020029
1700#define RPC_NT_UNKNOWN_AUTHN_TYPE 0xC002002A
1701#define RPC_NT_MAX_CALLS_TOO_SMALL 0xC002002B
1702#define RPC_NT_STRING_TOO_LONG 0xC002002C
1703#define RPC_NT_PROTSEQ_NOT_FOUND 0xC002002D
1704#define RPC_NT_PROCNUM_OUT_OF_RANGE 0xC002002E
1705#define RPC_NT_BINDING_HAS_NO_AUTH 0xC002002F
1706#define RPC_NT_UNKNOWN_AUTHN_SERVICE 0xC0020030
1707#define RPC_NT_UNKNOWN_AUTHN_LEVEL 0xC0020031
1708#define RPC_NT_INVALID_AUTH_IDENTITY 0xC0020032
1709#define RPC_NT_UNKNOWN_AUTHZ_SERVICE 0xC0020033
1710#define EPT_NT_INVALID_ENTRY 0xC0020034
1711#define EPT_NT_CANT_PERFORM_OP 0xC0020035
1712#define EPT_NT_NOT_REGISTERED 0xC0020036
1713#define RPC_NT_NOTHING_TO_EXPORT 0xC0020037
1714#define RPC_NT_INCOMPLETE_NAME 0xC0020038
1715#define RPC_NT_INVALID_VERS_OPTION 0xC0020039
1716#define RPC_NT_NO_MORE_MEMBERS 0xC002003A
1717#define RPC_NT_NOT_ALL_OBJS_UNEXPORTED 0xC002003B
1718#define RPC_NT_INTERFACE_NOT_FOUND 0xC002003C
1719#define RPC_NT_ENTRY_ALREADY_EXISTS 0xC002003D
1720#define RPC_NT_ENTRY_NOT_FOUND 0xC002003E
1721#define RPC_NT_NAME_SERVICE_UNAVAILABLE 0xC002003F
1722#define RPC_NT_INVALID_NAF_ID 0xC0020040
1723#define RPC_NT_CANNOT_SUPPORT 0xC0020041
1724#define RPC_NT_NO_CONTEXT_AVAILABLE 0xC0020042
1725#define RPC_NT_INTERNAL_ERROR 0xC0020043
1726#define RPC_NT_ZERO_DIVIDE 0xC0020044
1727#define RPC_NT_ADDRESS_ERROR 0xC0020045
1728#define RPC_NT_FP_DIV_ZERO 0xC0020046
1729#define RPC_NT_FP_UNDERFLOW 0xC0020047
1730#define RPC_NT_FP_OVERFLOW 0xC0020048
1731#define RPC_NT_NO_MORE_ENTRIES 0xC0030001
1732#define RPC_NT_SS_CHAR_TRANS_OPEN_FAIL 0xC0030002
1733#define RPC_NT_SS_CHAR_TRANS_SHORT_FILE 0xC0030003
1734#define RPC_NT_SS_IN_NULL_CONTEXT 0xC0030004
1735#define RPC_NT_SS_CONTEXT_MISMATCH 0xC0030005
1736#define RPC_NT_SS_CONTEXT_DAMAGED 0xC0030006
1737#define RPC_NT_SS_HANDLES_MISMATCH 0xC0030007
1738#define RPC_NT_SS_CANNOT_GET_CALL_HANDLE 0xC0030008
1739#define RPC_NT_NULL_REF_POINTER 0xC0030009
1740#define RPC_NT_ENUM_VALUE_OUT_OF_RANGE 0xC003000A
1741#define RPC_NT_BYTE_COUNT_TOO_SMALL 0xC003000B
1742#define RPC_NT_BAD_STUB_DATA 0xC003000C
1743#define RPC_NT_CALL_IN_PROGRESS 0xC0020049
1744#define RPC_NT_NO_MORE_BINDINGS 0xC002004A
1745#define RPC_NT_GROUP_MEMBER_NOT_FOUND 0xC002004B
1746#define EPT_NT_CANT_CREATE 0xC002004C
1747#define RPC_NT_INVALID_OBJECT 0xC002004D
1748#define RPC_NT_NO_INTERFACES 0xC002004F
1749#define RPC_NT_CALL_CANCELLED 0xC0020050
1750#define RPC_NT_BINDING_INCOMPLETE 0xC0020051
1751#define RPC_NT_COMM_FAILURE 0xC0020052
1752#define RPC_NT_UNSUPPORTED_AUTHN_LEVEL 0xC0020053
1753#define RPC_NT_NO_PRINC_NAME 0xC0020054
1754#define RPC_NT_NOT_RPC_ERROR 0xC0020055
1755#define RPC_NT_UUID_LOCAL_ONLY 0x40020056
1756#define RPC_NT_SEC_PKG_ERROR 0xC0020057
1757#define RPC_NT_NOT_CANCELLED 0xC0020058
1758#define RPC_NT_INVALID_ES_ACTION 0xC0030059
1759#define RPC_NT_WRONG_ES_VERSION 0xC003005A
1760#define RPC_NT_WRONG_STUB_VERSION 0xC003005B
1761#define RPC_NT_INVALID_PIPE_OBJECT 0xC003005C
1762#define RPC_NT_INVALID_PIPE_OPERATION 0xC003005D
1763#define RPC_NT_WRONG_PIPE_VERSION 0xC003005E
1764#define RPC_NT_SEND_INCOMPLETE 0x400200AF
1765
1766#define STATUS_RESOURCE_LANG_NOT_FOUND 0xC0000204
1767
1768#define MAXIMUM_WAIT_OBJECTS 64
1769#define MAXIMUM_SUSPEND_COUNT 127
1770
1771#define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION
1772#define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT
1773#define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT
1774#define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP
1775#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED
1776#define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND
1777#define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO
1778#define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT
1779#define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION
1780#define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW
1781#define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK
1782#define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW
1783#define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO
1784#define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW
1785#define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION
1786#define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR
1787#define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION
1788#define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION
1789#define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW
1790#define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION
1791#define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION
1792#define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE
1793#define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT
1794
1795/* Wine extension; Windows doesn't have a name for this code */
1796#define EXCEPTION_CRITICAL_SECTION_WAIT 0xc0000194
1797
1798
1799/*
1800 * Return values from the actual exception handlers
1801 */
1802
1803#define ExceptionContinueExecution 0
1804#define ExceptionContinueSearch 1
1805#define ExceptionNestedException 2
1806#define ExceptionCollidedUnwind 3
1807
1808/*
1809 * Return values from filters in except() and from UnhandledExceptionFilter
1810 */
1811
1812#define EXCEPTION_EXECUTE_HANDLER 1
1813#define EXCEPTION_CONTINUE_SEARCH 0
1814#define EXCEPTION_CONTINUE_EXECUTION -1
1815
1816/*
1817 * From OS/2 2.0 exception handling
1818 * Win32 seems to use the same flags as ExceptionFlags in an EXCEPTION_RECORD
1819 */
1820
1821#define EH_NONCONTINUABLE 0x01
1822#define EH_UNWINDING 0x02
1823#define EH_EXIT_UNWIND 0x04
1824#define EH_STACK_INVALID 0x08
1825#define EH_NESTED_CALL 0x10
1826
1827#define EXCEPTION_CONTINUABLE 0
1828#define EXCEPTION_NONCONTINUABLE EH_NONCONTINUABLE
1829
1830/*
1831 * The exception record used by Win32 to give additional information
1832 * about exception to exception handlers.
1833 */
1834
1835#define EXCEPTION_MAXIMUM_PARAMETERS 15
1836
1837typedef struct __EXCEPTION_RECORD
1838{
1839 DWORD ExceptionCode;
1840 DWORD ExceptionFlags;
1841 struct __EXCEPTION_RECORD *ExceptionRecord;
1842
1843 LPVOID ExceptionAddress;
1844 DWORD NumberParameters;
1845 DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
1846} EXCEPTION_RECORD, *PEXCEPTION_RECORD;
1847
1848/*
1849 * The exception pointers structure passed to exception filters
1850 * in except() and the UnhandledExceptionFilter().
1851 */
1852
1853typedef struct _EXCEPTION_POINTERS
1854{
1855 PEXCEPTION_RECORD ExceptionRecord;
1856 PCONTEXT ContextRecord;
1857} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
1858
1859
1860/*
1861 * The exception frame, used for registering exception handlers
1862 * Win32 cares only about this, but compilers generally emit
1863 * larger exception frames for their own use.
1864 */
1865
1866struct __EXCEPTION_FRAME;
1867
1868typedef DWORD (*PEXCEPTION_HANDLER)(PEXCEPTION_RECORD,struct __EXCEPTION_FRAME*,
1869 PCONTEXT,struct __EXCEPTION_FRAME **);
1870
1871typedef struct __EXCEPTION_FRAME
1872{
1873 struct __EXCEPTION_FRAME *Prev;
1874 PEXCEPTION_HANDLER Handler;
1875} EXCEPTION_FRAME, *PEXCEPTION_FRAME;
1876
1877
1878/*
1879 * function pointer to a exception filter
1880 */
1881
1882#ifdef __IBMC__
1883typedef LONG ( * CALLBACK PTOP_LEVEL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS ExceptionInfo);
1884#else
1885typedef LONG ( CALLBACK * PTOP_LEVEL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS ExceptionInfo);
1886#endif
1887
1888typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
1889
1890DWORD WINAPI UnhandledExceptionFilter( PEXCEPTION_POINTERS epointers );
1891LPTOP_LEVEL_EXCEPTION_FILTER
1892WINAPI SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER filter );
1893
1894/* status values for ContinueDebugEvent */
1895#define DBG_CONTINUE 0x00010002
1896#define DBG_TERMINATE_THREAD 0x40010003
1897#define DBG_TERMINATE_PROCESS 0x40010004
1898#define DBG_CONTROL_C 0x40010005
1899#define DBG_CONTROL_BREAK 0x40010008
1900#define DBG_EXCEPTION_NOT_HANDLED 0x80010001
1901
1902struct _TEB;
1903
1904#ifdef __WINE__
1905
1906#ifndef __WIN32OS2__
1907#if defined(__i386__)
1908static inline struct _TEB * WINE_UNUSED __get_teb(void)
1909{
1910 struct _TEB *teb;
1911 __asm__(".byte 0x64\n\tmovl (0x18),%0" : "=r" (teb));
1912 return teb;
1913}
1914#elif defined(HAVE__LWP_CREATE)
1915extern void *_lwp_getprivate(void);
1916static inline struct _TEB * WINE_UNUSED __get_teb(void)
1917{
1918 return (struct _TEB *)_lwp_getprivate();
1919}
1920#else
1921#error NtCurrentTeb() not defined for this architecture!
1922#endif
1923
1924#define NtCurrentTeb() __get_teb()
1925
1926#else /* __WINE__ */
1927#define NtCurrentTeb GetThreadTEB
1928struct _TEB *WINAPI GetThreadTEB(void);
1929#endif
1930#endif //__WIN32OS2__
1931
1932/*
1933 * Here follows typedefs for security and tokens.
1934 */
1935
1936/*
1937 * First a constant for the following typdefs.
1938 */
1939
1940#define ANYSIZE_ARRAY 1
1941
1942/* FIXME: Orphan. What does it point to? */
1943typedef PVOID PACCESS_TOKEN;
1944
1945/*
1946 * TOKEN_INFORMATION_CLASS
1947 */
1948
1949typedef enum _TOKEN_INFORMATION_CLASS {
1950 TokenUser = 1,
1951 TokenGroups,
1952 TokenPrivileges,
1953 TokenOwner,
1954 TokenPrimaryGroup,
1955 TokenDefaultDacl,
1956 TokenSource,
1957 TokenType,
1958 TokenImpersonationLevel,
1959 TokenStatistics
1960} TOKEN_INFORMATION_CLASS;
1961
1962#ifndef _SECURITY_DEFINED
1963#define _SECURITY_DEFINED
1964
1965typedef DWORD ACCESS_MASK, *PACCESS_MASK;
1966
1967typedef struct _GENERIC_MAPPING {
1968 ACCESS_MASK GenericRead;
1969 ACCESS_MASK GenericWrite;
1970 ACCESS_MASK GenericExecute;
1971 ACCESS_MASK GenericAll;
1972} GENERIC_MAPPING, *PGENERIC_MAPPING;
1973
1974#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED
1975#define SID_IDENTIFIER_AUTHORITY_DEFINED
1976typedef struct {
1977 BYTE Value[6];
1978} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
1979#endif /* !defined(SID_IDENTIFIER_AUTHORITY_DEFINED) */
1980
1981#ifndef SID_DEFINED
1982#define SID_DEFINED
1983typedef struct _SID {
1984 BYTE Revision;
1985 BYTE SubAuthorityCount;
1986 SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
1987 DWORD SubAuthority[1];
1988} SID,*PSID;
1989#endif /* !defined(SID_DEFINED) */
1990
1991#define SID_REVISION (1) /* Current revision */
1992#define SID_MAX_SUB_AUTHORITIES (15) /* current max subauths */
1993#define SID_RECOMMENDED_SUB_AUTHORITIES (1) /* recommended subauths */
1994
1995
1996/*
1997 * ACL
1998 */
1999
2000#define ACL_REVISION1 1
2001#define ACL_REVISION2 2
2002#define ACL_REVISION3 3
2003#define ACL_REVISION4 4
2004
2005typedef enum _ACL_INFORMATION_CLASS {
2006 AclRevisionInformation = 1,
2007 AclSizeInformation
2008} ACL_INFORMATION_CLASS;
2009
2010typedef struct _ACL_REVISION_INFORMATION {
2011 DWORD AclRevision;
2012} ACL_REVISION_INFORMATION;
2013typedef ACL_REVISION_INFORMATION *PACL_REVISION_INFORMATION;
2014
2015typedef struct _ACL_SIZE_INFORMATION {
2016 DWORD AceCount;
2017 DWORD AclBytesInUse;
2018 DWORD AclBytesFree;
2019} ACL_SIZE_INFORMATION;
2020typedef ACL_SIZE_INFORMATION *PACL_SIZE_INFORMATION;
2021
2022#define MIN_ACL_REVISION ACL_REVISION2
2023#define MAX_ACL_REVISION ACL_REVISION4
2024
2025typedef struct _ACL {
2026 BYTE AclRevision;
2027 BYTE Sbz1;
2028 WORD AclSize;
2029 WORD AceCount;
2030 WORD Sbz2;
2031} ACL, *PACL;
2032
2033
2034/* SECURITY_DESCRIPTOR */
2035#define SECURITY_DESCRIPTOR_REVISION 1
2036#define SECURITY_DESCRIPTOR_REVISION1 1
2037
2038
2039#define SE_OWNER_DEFAULTED 0x0001
2040#define SE_GROUP_DEFAULTED 0x0002
2041#define SE_DACL_PRESENT 0x0004
2042#define SE_DACL_DEFAULTED 0x0008
2043#define SE_SACL_PRESENT 0x0010
2044#define SE_SACL_DEFAULTED 0x0020
2045#define SE_SELF_RELATIVE 0x8000
2046
2047typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION;
2048typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
2049
2050/* The security descriptor structure */
2051typedef struct {
2052 BYTE Revision;
2053 BYTE Sbz1;
2054 SECURITY_DESCRIPTOR_CONTROL Control;
2055 DWORD Owner;
2056 DWORD Group;
2057 DWORD Sacl;
2058 DWORD Dacl;
2059} SECURITY_DESCRIPTOR_RELATIVE, *PISECURITY_DESCRIPTOR_RELATIVE;
2060
2061typedef struct {
2062 BYTE Revision;
2063 BYTE Sbz1;
2064 SECURITY_DESCRIPTOR_CONTROL Control;
2065 PSID Owner;
2066 PSID Group;
2067 PACL Sacl;
2068 PACL Dacl;
2069} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
2070
2071#define SECURITY_DESCRIPTOR_MIN_LENGTH (sizeof(SECURITY_DESCRIPTOR))
2072
2073
2074#endif /* _SECURITY_DEFINED */
2075
2076
2077/*
2078 * SID_AND_ATTRIBUTES
2079 */
2080
2081
2082typedef struct _SID_AND_ATTRIBUTES {
2083 PSID Sid;
2084 DWORD Attributes;
2085} SID_AND_ATTRIBUTES ;
2086
2087/* security entities */
2088#define SECURITY_NULL_RID (0x00000000L)
2089#define SECURITY_WORLD_RID (0x00000000L)
2090#define SECURITY_LOCAL_RID (0X00000000L)
2091
2092#define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
2093
2094/* S-1-1 */
2095#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
2096
2097/* S-1-2 */
2098#define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
2099
2100/* S-1-3 */
2101#define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3}
2102#define SECURITY_CREATOR_OWNER_RID (0x00000000L)
2103#define SECURITY_CREATOR_GROUP_RID (0x00000001L)
2104#define SECURITY_CREATOR_OWNER_SERVER_RID (0x00000002L)
2105#define SECURITY_CREATOR_GROUP_SERVER_RID (0x00000003L)
2106
2107/* S-1-4 */
2108#define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4}
2109
2110/* S-1-5 */
2111#define SECURITY_NT_AUTHORITY {0,0,0,0,0,5}
2112#define SECURITY_DIALUP_RID 0x00000001L
2113#define SECURITY_NETWORK_RID 0x00000002L
2114#define SECURITY_BATCH_RID 0x00000003L
2115#define SECURITY_INTERACTIVE_RID 0x00000004L
2116#define SECURITY_LOGON_IDS_RID 0x00000005L
2117#define SECURITY_SERVICE_RID 0x00000006L
2118#define SECURITY_ANONYMOUS_LOGON_RID 0x00000007L
2119#define SECURITY_PROXY_RID 0x00000008L
2120#define SECURITY_ENTERPRISE_CONTROLLERS_RID 0x00000009L
2121#define SECURITY_PRINCIPAL_SELF_RID 0x0000000AL
2122#define SECURITY_AUTHENTICATED_USER_RID 0x0000000BL
2123#define SECURITY_RESTRICTED_CODE_RID 0x0000000CL
2124#define SECURITY_TERMINAL_SERVER_RID 0x0000000DL
2125#define SECURITY_LOCAL_SYSTEM_RID 0x00000012L
2126#define SECURITY_NT_NON_UNIQUE 0x00000015L
2127#define SECURITY_BUILTIN_DOMAIN_RID 0x00000020L
2128
2129#define DOMAIN_GROUP_RID_ADMINS 0x00000200L
2130#define DOMAIN_GROUP_RID_USERS 0x00000201L
2131#define DOMAIN_GROUP_RID_GUESTS 0x00000202L
2132
2133#define DOMAIN_ALIAS_RID_ADMINS 0x00000220L
2134#define DOMAIN_ALIAS_RID_USERS 0x00000221L
2135#define DOMAIN_ALIAS_RID_GUESTS 0x00000222L
2136
2137#define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID
2138
2139#define SECURITY_LOGON_IDS_RID_COUNT (3L)
2140
2141
2142/*
2143 * Token access rights
2144 */
2145
2146#define TOKEN_ASSIGN_PRIMARY (0x0001)
2147#define TOKEN_DUPLICATE (0x0002)
2148#define TOKEN_IMPERSONATE (0x0004)
2149#define TOKEN_QUERY (0x0008)
2150#define TOKEN_QUERY_SOURCE (0x0010)
2151#define TOKEN_ADJUST_PRIVILEGES (0x0020)
2152#define TOKEN_ADJUST_GROUPS (0x0040)
2153#define TOKEN_ADJUST_DEFAULT (0x0080)
2154#define TOKEN_ADJUST_SESSIONID (0x0100)
2155
2156#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED | \
2157 TOKEN_ASSIGN_PRIMARY | \
2158 TOKEN_DUPLICATE | \
2159 TOKEN_IMPERSONATE | \
2160 TOKEN_QUERY | \
2161 TOKEN_QUERY_SOURCE | \
2162 TOKEN_ADJUST_PRIVILEGES | \
2163 TOKEN_ADJUST_GROUPS | \
2164 TOKEN_ADJUST_DEFAULT)
2165
2166#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | \
2167 TOKEN_ADJUST_SESSIONID)
2168
2169#define TOKEN_READ (STANDARD_RIGHTS_READ | \
2170 TOKEN_QUERY)
2171
2172#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE | \
2173 TOKEN_ADJUST_PRIVILEGES | \
2174 TOKEN_ADJUST_GROUPS | \
2175 TOKEN_ADJUST_DEFAULT)
2176
2177#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE)
2178
2179/*
2180 * TOKEN_USER
2181 */
2182
2183typedef struct _TOKEN_USER {
2184 SID_AND_ATTRIBUTES User;
2185} TOKEN_USER, *PTOKEN_USER;
2186
2187/*
2188 * TOKEN_GROUPS
2189 */
2190
2191typedef struct _TOKEN_GROUPS {
2192 DWORD GroupCount;
2193 SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
2194} TOKEN_GROUPS, *PTOKEN_GROUPS;
2195
2196/*
2197 * LUID_AND_ATTRIBUTES
2198 */
2199#if defined(__WIN32OS2__) && !defined(WINE_LARGE_INTEGER)
2200typedef struct _LARGE_INTEGER {
2201 ULONG LowPart;
2202 LONG HighPart;
2203} LARGE_INTEGER, *LPLARGE_INTEGER, *PLARGE_INTEGER;
2204
2205typedef struct _ULARGE_INTEGER {
2206 ULONG LowPart;
2207 LONG HighPart;
2208} ULARGE_INTEGER, *LPULARGE_INTEGER, *PULARGE_INTEGER;
2209#else
2210typedef union _LARGE_INTEGER {
2211 struct {
2212 DWORD LowPart;
2213 LONG HighPart;
2214 } DUMMYSTRUCTNAME;
2215 LONGLONG QuadPart;
2216} LARGE_INTEGER, *LPLARGE_INTEGER, *PLARGE_INTEGER;
2217
2218typedef union _ULARGE_INTEGER {
2219 struct {
2220 DWORD LowPart;
2221 DWORD HighPart;
2222 } DUMMYSTRUCTNAME;
2223 ULONGLONG QuadPart;
2224} ULARGE_INTEGER, *LPULARGE_INTEGER, *PULARGE_INTEGER;
2225#endif
2226/*
2227 * Locally Unique Identifier
2228 */
2229
2230typedef LARGE_INTEGER LUID,*PLUID;
2231
2232typedef struct _LUID_AND_ATTRIBUTES {
2233 LUID Luid;
2234 DWORD Attributes;
2235} LUID_AND_ATTRIBUTES;
2236
2237/*
2238 * PRIVILEGE_SET
2239 */
2240
2241typedef struct _PRIVILEGE_SET {
2242 DWORD PrivilegeCount;
2243 DWORD Control;
2244 LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
2245} PRIVILEGE_SET, *PPRIVILEGE_SET;
2246
2247/*
2248 * TOKEN_PRIVILEGES
2249 */
2250
2251typedef struct _TOKEN_PRIVILEGES {
2252 DWORD PrivilegeCount;
2253 LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
2254} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
2255
2256/*
2257 * TOKEN_OWNER
2258 */
2259
2260typedef struct _TOKEN_OWNER {
2261 PSID Owner;
2262} TOKEN_OWNER, *PTOKEN_OWNER;
2263
2264/*
2265 * TOKEN_PRIMARY_GROUP
2266 */
2267
2268typedef struct _TOKEN_PRIMARY_GROUP {
2269 PSID PrimaryGroup;
2270} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP;
2271
2272
2273/*
2274 * TOKEN_DEFAULT_DACL
2275 */
2276
2277typedef struct _TOKEN_DEFAULT_DACL {
2278 PACL DefaultDacl;
2279} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL;
2280
2281/*
2282 * TOKEN_SOURCEL
2283 */
2284
2285#define TOKEN_SOURCE_LENGTH 8
2286
2287typedef struct _TOKEN_SOURCE {
2288 char SourceName[TOKEN_SOURCE_LENGTH];
2289 LUID SourceIdentifier;
2290} TOKEN_SOURCE, *PTOKEN_SOURCE;
2291
2292/*
2293 * TOKEN_TYPE
2294 */
2295
2296typedef enum tagTOKEN_TYPE {
2297 TokenPrimary = 1,
2298 TokenImpersonation
2299} TOKEN_TYPE, *PTOKEN_TYPE;
2300
2301/*
2302 * SECURITY_IMPERSONATION_LEVEL
2303 */
2304
2305typedef enum _SECURITY_IMPERSONATION_LEVEL {
2306 SecurityAnonymous,
2307 SecurityIdentification,
2308 SecurityImpersonation,
2309 SecurityDelegation
2310} SECURITY_IMPERSONATION_LEVEL, *PSECURITY_IMPERSONATION_LEVEL;
2311
2312
2313typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,
2314 * PSECURITY_CONTEXT_TRACKING_MODE;
2315/*
2316 * Quality of Service
2317 */
2318
2319typedef struct _SECURITY_QUALITY_OF_SERVICE {
2320 DWORD Length;
2321 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
2322 SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
2323 BOOL EffectiveOnly;
2324} SECURITY_QUALITY_OF_SERVICE, *PSECURITY_QUALITY_OF_SERVICE;
2325
2326/*
2327 * TOKEN_STATISTICS
2328 */
2329
2330typedef struct _TOKEN_STATISTICS {
2331 LUID TokenId;
2332 LUID AuthenticationId;
2333 LARGE_INTEGER ExpirationTime;
2334 TOKEN_TYPE TokenType;
2335 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
2336 DWORD DynamicCharged;
2337 DWORD DynamicAvailable;
2338 DWORD GroupCount;
2339 DWORD PrivilegeCount;
2340 LUID ModifiedId;
2341} TOKEN_STATISTICS, *PTOKEN_STATISTICS;
2342
2343/*
2344 * ACLs of NT
2345 */
2346
2347#define ACL_REVISION 2
2348
2349#define ACL_REVISION1 1
2350#define ACL_REVISION2 2
2351
2352/* ACEs, directly starting after an ACL */
2353typedef struct _ACE_HEADER {
2354 BYTE AceType;
2355 BYTE AceFlags;
2356 WORD AceSize;
2357} ACE_HEADER,*PACE_HEADER;
2358
2359/* AceType */
2360#define ACCESS_ALLOWED_ACE_TYPE 0
2361#define ACCESS_DENIED_ACE_TYPE 1
2362#define SYSTEM_AUDIT_ACE_TYPE 2
2363#define SYSTEM_ALARM_ACE_TYPE 3
2364
2365/* inherit AceFlags */
2366#define OBJECT_INHERIT_ACE 0x01
2367#define CONTAINER_INHERIT_ACE 0x02
2368#define NO_PROPAGATE_INHERIT_ACE 0x04
2369#define INHERIT_ONLY_ACE 0x08
2370#define INHERITED_ACE 0x10
2371#define VALID_INHERIT_FLAGS 0x1F
2372
2373/* AceFlags mask for what events we (should) audit */
2374#define SUCCESSFUL_ACCESS_ACE_FLAG 0x40
2375#define FAILED_ACCESS_ACE_FLAG 0x80
2376
2377/* different ACEs depending on AceType
2378 * SidStart marks the begin of a SID
2379 * so the thing finally looks like this:
2380 * 0: ACE_HEADER
2381 * 4: ACCESS_MASK
2382 * 8... : SID
2383 */
2384typedef struct _ACCESS_ALLOWED_ACE {
2385 ACE_HEADER Header;
2386 DWORD Mask;
2387 DWORD SidStart;
2388} ACCESS_ALLOWED_ACE,*PACCESS_ALLOWED_ACE;
2389
2390typedef struct _ACCESS_DENIED_ACE {
2391 ACE_HEADER Header;
2392 DWORD Mask;
2393 DWORD SidStart;
2394} ACCESS_DENIED_ACE,*PACCESS_DENIED_ACE;
2395
2396typedef struct _SYSTEM_AUDIT_ACE {
2397 ACE_HEADER Header;
2398 DWORD Mask;
2399 DWORD SidStart;
2400} SYSTEM_AUDIT_ACE,*PSYSTEM_AUDIT_ACE;
2401
2402typedef struct _SYSTEM_ALARM_ACE {
2403 ACE_HEADER Header;
2404 DWORD Mask;
2405 DWORD SidStart;
2406} SYSTEM_ALARM_ACE,*PSYSTEM_ALARM_ACE;
2407
2408typedef enum tagSID_NAME_USE {
2409 SidTypeUser = 1,
2410 SidTypeGroup,
2411 SidTypeDomain,
2412 SidTypeAlias,
2413 SidTypeWellKnownGroup,
2414 SidTypeDeletedAccount,
2415 SidTypeInvalid,
2416 SidTypeUnknown
2417} SID_NAME_USE,*PSID_NAME_USE;
2418
2419/* Access rights */
2420
2421#define DELETE 0x00010000
2422#define READ_CONTROL 0x00020000
2423#define WRITE_DAC 0x00040000
2424#define WRITE_OWNER 0x00080000
2425#define SYNCHRONIZE 0x00100000
2426#define STANDARD_RIGHTS_REQUIRED 0x000f0000
2427
2428#define STANDARD_RIGHTS_READ READ_CONTROL
2429#define STANDARD_RIGHTS_WRITE READ_CONTROL
2430#define STANDARD_RIGHTS_EXECUTE READ_CONTROL
2431
2432#define STANDARD_RIGHTS_ALL 0x001f0000
2433
2434#define SPECIFIC_RIGHTS_ALL 0x0000ffff
2435
2436#define GENERIC_READ 0x80000000
2437#define GENERIC_WRITE 0x40000000
2438#define GENERIC_EXECUTE 0x20000000
2439#define GENERIC_ALL 0x10000000
2440
2441#define MAXIMUM_ALLOWED 0x02000000
2442#define ACCESS_SYSTEM_SECURITY 0x01000000
2443
2444#define EVENT_MODIFY_STATE 0x0002
2445#define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
2446
2447#define SEMAPHORE_MODIFY_STATE 0x0002
2448#define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
2449
2450#define MUTEX_MODIFY_STATE 0x0001
2451#define MUTEX_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x1)
2452
2453#define PROCESS_TERMINATE 0x0001
2454#define PROCESS_CREATE_THREAD 0x0002
2455#define PROCESS_VM_OPERATION 0x0008
2456#define PROCESS_VM_READ 0x0010
2457#define PROCESS_VM_WRITE 0x0020
2458#define PROCESS_DUP_HANDLE 0x0040
2459#define PROCESS_CREATE_PROCESS 0x0080
2460#define PROCESS_SET_QUOTA 0x0100
2461#define PROCESS_SET_INFORMATION 0x0200
2462#define PROCESS_QUERY_INFORMATION 0x0400
2463#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xfff)
2464
2465#define THREAD_TERMINATE 0x0001
2466#define THREAD_SUSPEND_RESUME 0x0002
2467#define THREAD_GET_CONTEXT 0x0008
2468#define THREAD_SET_CONTEXT 0x0010
2469#define THREAD_SET_INFORMATION 0x0020
2470#define THREAD_QUERY_INFORMATION 0x0040
2471#define THREAD_SET_THREAD_TOKEN 0x0080
2472#define THREAD_IMPERSONATE 0x0100
2473#define THREAD_DIRECT_IMPERSONATION 0x0200
2474#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3ff)
2475
2476#define THREAD_BASE_PRIORITY_LOWRT 15
2477#define THREAD_BASE_PRIORITY_MAX 2
2478#define THREAD_BASE_PRIORITY_MIN -2
2479#define THREAD_BASE_PRIORITY_IDLE -15
2480
2481#define FILE_READ_DATA 0x0001 /* file & pipe */
2482#define FILE_LIST_DIRECTORY 0x0001 /* directory */
2483#define FILE_WRITE_DATA 0x0002 /* file & pipe */
2484#define FILE_ADD_FILE 0x0002 /* directory */
2485#define FILE_APPEND_DATA 0x0004 /* file */
2486#define FILE_ADD_SUBDIRECTORY 0x0004 /* directory */
2487#define FILE_CREATE_PIPE_INSTANCE 0x0004 /* named pipe */
2488#define FILE_READ_EA 0x0008 /* file & directory */
2489#define FILE_READ_PROPERTIES FILE_READ_EA
2490#define FILE_WRITE_EA 0x0010 /* file & directory */
2491#define FILE_WRITE_PROPERTIES FILE_WRITE_EA
2492#define FILE_EXECUTE 0x0020 /* file */
2493#define FILE_TRAVERSE 0x0020 /* directory */
2494#define FILE_DELETE_CHILD 0x0040 /* directory */
2495#define FILE_READ_ATTRIBUTES 0x0080 /* all */
2496#define FILE_WRITE_ATTRIBUTES 0x0100 /* all */
2497#define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x1ff)
2498
2499#define FILE_GENERIC_READ (STANDARD_RIGHTS_READ | FILE_READ_DATA | \
2500 FILE_READ_ATTRIBUTES | FILE_READ_EA | \
2501 SYNCHRONIZE)
2502#define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | \
2503 FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | \
2504 FILE_APPEND_DATA | SYNCHRONIZE)
2505#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | FILE_EXECUTE | \
2506 FILE_READ_ATTRIBUTES | SYNCHRONIZE)
2507
2508
2509/* File attribute flags
2510 */
2511#define FILE_SHARE_READ 0x00000001L
2512#define FILE_SHARE_WRITE 0x00000002L
2513#define FILE_SHARE_DELETE 0x00000004L
2514#define FILE_ATTRIBUTE_READONLY 0x00000001L
2515#define FILE_ATTRIBUTE_HIDDEN 0x00000002L
2516#define FILE_ATTRIBUTE_SYSTEM 0x00000004L
2517#define FILE_ATTRIBUTE_LABEL 0x00000008L /* Not in Windows API */
2518#define FILE_ATTRIBUTE_DIRECTORY 0x00000010L
2519#define FILE_ATTRIBUTE_ARCHIVE 0x00000020L
2520#define FILE_ATTRIBUTE_NORMAL 0x00000080L
2521#define FILE_ATTRIBUTE_TEMPORARY 0x00000100L
2522#define FILE_ATTRIBUTE_ATOMIC_WRITE 0x00000200L
2523#define FILE_ATTRIBUTE_XACTION_WRITE 0x00000400L
2524#define FILE_ATTRIBUTE_COMPRESSED 0x00000800L
2525#define FILE_ATTRIBUTE_OFFLINE 0x00001000L
2526#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001L
2527#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002L
2528#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004L
2529#define FILE_NOTIFY_CHANGE_SIZE 0x00000008L
2530#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010L
2531#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020L
2532#define FILE_NOTIFY_CHANGE_CREATION 0x00000040L
2533#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100L
2534#define FILE_ACTION_ADDED 0x00000001L
2535#define FILE_ACTION_REMOVED 0x00000002L
2536#define FILE_ACTION_MODIFIED 0x00000003L
2537#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004L
2538#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005L
2539#define MAILSLOT_NO_MESSAGE ((DWORD)-1)
2540#define MAILSLOT_WAIT_FOREVER ((DWORD)-1)
2541
2542/* File alignments (NT) */
2543#define FILE_BYTE_ALIGNMENT 0x00000000
2544#define FILE_WORD_ALIGNMENT 0x00000001
2545#define FILE_LONG_ALIGNMENT 0x00000003
2546#define FILE_QUAD_ALIGNMENT 0x00000007
2547#define FILE_OCTA_ALIGNMENT 0x0000000f
2548#define FILE_32_BYTE_ALIGNMENT 0x0000001f
2549#define FILE_64_BYTE_ALIGNMENT 0x0000003f
2550#define FILE_128_BYTE_ALIGNMENT 0x0000007f
2551#define FILE_256_BYTE_ALIGNMENT 0x000000ff
2552#define FILE_512_BYTE_ALIGNMENT 0x000001ff
2553
2554#define MAILSLOT_NO_MESSAGE ((DWORD)-1)
2555#define MAILSLOT_WAIT_FOREVER ((DWORD)-1)
2556
2557#define REG_NONE 0 /* no type */
2558#define REG_SZ 1 /* string type (ASCII) */
2559#define REG_EXPAND_SZ 2 /* string, includes %ENVVAR% (expanded by caller) (ASCII) */
2560#define REG_BINARY 3 /* binary format, callerspecific */
2561/* YES, REG_DWORD == REG_DWORD_LITTLE_ENDIAN */
2562#define REG_DWORD 4 /* DWORD in little endian format */
2563#define REG_DWORD_LITTLE_ENDIAN 4 /* DWORD in little endian format */
2564#define REG_DWORD_BIG_ENDIAN 5 /* DWORD in big endian format */
2565#define REG_LINK 6 /* symbolic link (UNICODE) */
2566#define REG_MULTI_SZ 7 /* multiple strings, delimited by \0, terminated by \0\0 (ASCII) */
2567#define REG_RESOURCE_LIST 8 /* resource list? huh? */
2568#define REG_FULL_RESOURCE_DESCRIPTOR 9 /* full resource descriptor? huh? */
2569#define REG_RESOURCE_REQUIREMENTS_LIST 10
2570#define REG_QWORD 11 /* QWORD in little endian format */
2571#define REG_QWORD_LITTLE_ENDIAN 11 /* QWORD in little endian format */
2572
2573/* Registry security values */
2574#define OWNER_SECURITY_INFORMATION 0x00000001
2575#define GROUP_SECURITY_INFORMATION 0x00000002
2576#define DACL_SECURITY_INFORMATION 0x00000004
2577#define SACL_SECURITY_INFORMATION 0x00000008
2578
2579
2580#define EVENTLOG_SUCCESS 0x0000
2581#define EVENTLOG_ERROR_TYPE 0x0001
2582#define EVENTLOG_WARNING_TYPE 0x0002
2583#define EVENTLOG_INFORMATION_TYPE 0x0004
2584#define EVENTLOG_AUDIT_SUCCESS 0x0008
2585#define EVENTLOG_AUDIT_FAILURE 0x0010
2586
2587#define SERVICE_BOOT_START 0x00000000
2588#define SERVICE_SYSTEM_START 0x00000001
2589#define SERVICE_AUTO_START 0x00000002
2590#define SERVICE_DEMAND_START 0x00000003
2591#define SERVICE_DISABLED 0x00000004
2592
2593#define SERVICE_ERROR_IGNORE 0x00000000
2594#define SERVICE_ERROR_NORMAL 0x00000001
2595#define SERVICE_ERROR_SEVERE 0x00000002
2596#define SERVICE_ERROR_CRITICAL 0x00000003
2597
2598/* Service types */
2599#define SERVICE_KERNEL_DRIVER 0x00000001
2600#define SERVICE_FILE_SYSTEM_DRIVER 0x00000002
2601#define SERVICE_ADAPTER 0x00000004
2602#define SERVICE_RECOGNIZER_DRIVER 0x00000008
2603
2604#define SERVICE_DRIVER ( SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | \
2605 SERVICE_RECOGNIZER_DRIVER )
2606
2607#define SERVICE_WIN32_OWN_PROCESS 0x00000010
2608#define SERVICE_WIN32_SHARE_PROCESS 0x00000020
2609#define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS)
2610
2611#define SERVICE_INTERACTIVE_PROCESS 0x00000100
2612
2613#define SERVICE_TYPE_ALL ( SERVICE_WIN32 | SERVICE_ADAPTER | \
2614 SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS )
2615
2616
2617typedef enum _CM_SERVICE_NODE_TYPE
2618{
2619 DriverType = SERVICE_KERNEL_DRIVER,
2620 FileSystemType = SERVICE_FILE_SYSTEM_DRIVER,
2621 Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS,
2622 Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS,
2623 AdapterType = SERVICE_ADAPTER,
2624 RecognizerType = SERVICE_RECOGNIZER_DRIVER
2625} SERVICE_NODE_TYPE;
2626
2627typedef enum _CM_SERVICE_LOAD_TYPE
2628{
2629 BootLoad = SERVICE_BOOT_START,
2630 SystemLoad = SERVICE_SYSTEM_START,
2631 AutoLoad = SERVICE_AUTO_START,
2632 DemandLoad = SERVICE_DEMAND_START,
2633 DisableLoad = SERVICE_DISABLED
2634} SERVICE_LOAD_TYPE;
2635
2636typedef enum _CM_ERROR_CONTROL_TYPE
2637{
2638 IgnoreError = SERVICE_ERROR_IGNORE,
2639 NormalError = SERVICE_ERROR_NORMAL,
2640 SevereError = SERVICE_ERROR_SEVERE,
2641 CriticalError = SERVICE_ERROR_CRITICAL
2642} SERVICE_ERROR_TYPE;
2643
2644/* archive format */
2645
2646#define IMAGE_ARCHIVE_START_SIZE 8
2647#define IMAGE_ARCHIVE_START "!<arch>\n"
2648#define IMAGE_ARCHIVE_END "`\n"
2649#define IMAGE_ARCHIVE_PAD "\n"
2650#define IMAGE_ARCHIVE_LINKER_MEMBER "/ "
2651#define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// "
2652
2653typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER
2654{
2655 BYTE Name[16];
2656 BYTE Date[12];
2657 BYTE UserID[6];
2658 BYTE GroupID[6];
2659 BYTE Mode[8];
2660 BYTE Size[10];
2661 BYTE EndHeader[2];
2662} IMAGE_ARCHIVE_MEMBER_HEADER, *PIMAGE_ARCHIVE_MEMBER_HEADER;
2663
2664#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
2665
2666typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR
2667{
2668 DWORD TimeDateStamp;
2669 WORD OffsetModuleName;
2670 WORD NumberOfModuleForwarderRefs;
2671/* Array of zero or more IMAGE_BOUND_FORWARDER_REF follows */
2672} IMAGE_BOUND_IMPORT_DESCRIPTOR, *PIMAGE_BOUND_IMPORT_DESCRIPTOR;
2673
2674typedef struct _IMAGE_BOUND_FORWARDER_REF
2675{
2676 DWORD TimeDateStamp;
2677 WORD OffsetModuleName;
2678 WORD Reserved;
2679} IMAGE_BOUND_FORWARDER_REF, *PIMAGE_BOUND_FORWARDER_REF;
2680
2681#define IMAGE_DEBUG_MISC_EXENAME 1
2682
2683typedef struct _IMAGE_DEBUG_MISC {
2684 DWORD DataType;
2685 DWORD Length;
2686 BYTE Unicode;
2687 BYTE Reserved[ 3 ];
2688 BYTE Data[ 1 ];
2689} IMAGE_DEBUG_MISC, *PIMAGE_DEBUG_MISC;
2690
2691
2692#include "pshpack2.h"
2693
2694typedef struct _IMAGE_SYMBOL {
2695 union {
2696 BYTE ShortName[8];
2697 struct {
2698 DWORD Short;
2699 DWORD Long;
2700 } Name;
2701 DWORD LongName[2];
2702 } N;
2703 DWORD Value;
2704 SHORT SectionNumber;
2705 WORD Type;
2706 BYTE StorageClass;
2707 BYTE NumberOfAuxSymbols;
2708} IMAGE_SYMBOL;
2709typedef IMAGE_SYMBOL *PIMAGE_SYMBOL;
2710
2711#define IMAGE_SIZEOF_SYMBOL 18
2712
2713typedef struct _IMAGE_LINENUMBER {
2714 union {
2715 DWORD SymbolTableIndex;
2716 DWORD VirtualAddress;
2717 } Type;
2718 WORD Linenumber;
2719} IMAGE_LINENUMBER;
2720typedef IMAGE_LINENUMBER *PIMAGE_LINENUMBER;
2721
2722#define IMAGE_SIZEOF_LINENUMBER 6
2723
2724typedef union _IMAGE_AUX_SYMBOL {
2725 struct {
2726 DWORD TagIndex;
2727 union {
2728 struct {
2729 WORD Linenumber;
2730 WORD Size;
2731 } LnSz;
2732 DWORD TotalSize;
2733 } Misc;
2734 union {
2735 struct {
2736 DWORD PointerToLinenumber;
2737 DWORD PointerToNextFunction;
2738 } Function;
2739 struct {
2740 WORD Dimension[4];
2741 } Array;
2742 } FcnAry;
2743 WORD TvIndex;
2744 } Sym;
2745 struct {
2746 BYTE Name[IMAGE_SIZEOF_SYMBOL];
2747 } File;
2748 struct {
2749 DWORD Length;
2750 WORD NumberOfRelocations;
2751 WORD NumberOfLinenumbers;
2752 DWORD CheckSum;
2753 SHORT Number;
2754 BYTE Selection;
2755 } Section;
2756} IMAGE_AUX_SYMBOL;
2757typedef IMAGE_AUX_SYMBOL *PIMAGE_AUX_SYMBOL;
2758
2759#define IMAGE_SIZEOF_AUX_SYMBOL 18
2760
2761#include "poppack.h"
2762
2763//#include "guiddef.h"
2764
2765typedef struct _RTL_CRITICAL_SECTION_DEBUG
2766{
2767#ifndef __WIN32OS2__
2768 WORD Type;
2769 WORD CreatorBackTraceIndex;
2770 struct _RTL_CRITICAL_SECTION *CriticalSection;
2771 LIST_ENTRY ProcessLocksList;
2772 DWORD EntryCount;
2773 DWORD ContentionCount;
2774 DWORD Spare[ 2 ];
2775#endif
2776} RTL_CRITICAL_SECTION_DEBUG, *PRTL_CRITICAL_SECTION_DEBUG, RTL_RESOURCE_DEBUG, *PRTL_RESOURCE_DEBUG;
2777
2778typedef struct _RTL_CRITICAL_SECTION {
2779 PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
2780 LONG LockCount;
2781 LONG RecursionCount;
2782 HANDLE OwningThread;
2783 HANDLE LockSemaphore;
2784 ULONG_PTR SpinCount;
2785} RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
2786
2787#include <peexe.h>
2788
2789#include "pshpack2.h"
2790
2791typedef struct _IMAGE_RELOCATION
2792{
2793 union {
2794 DWORD VirtualAddress;
2795 DWORD RelocCount;
2796 } DUMMYUNIONNAME;
2797 DWORD SymbolTableIndex;
2798 WORD Type;
2799} IMAGE_RELOCATION, *PIMAGE_RELOCATION;
2800
2801#include "poppack.h"
2802
2803typedef struct _NT_TIB
2804{
2805 struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
2806 PVOID StackBase;
2807 PVOID StackLimit;
2808 PVOID SubSystemTib;
2809 union {
2810 PVOID FiberData;
2811 DWORD Version;
2812 } DUMMYUNIONNAME;
2813 PVOID ArbitraryUserPointer;
2814 struct _NT_TIB *Self;
2815} NT_TIB, *PNT_TIB;
2816
2817typedef struct _MEMORY_BASIC_INFORMATION
2818{
2819 LPVOID BaseAddress;
2820 LPVOID AllocationBase;
2821 DWORD AllocationProtect;
2822 DWORD RegionSize;
2823 DWORD State;
2824 DWORD Protect;
2825 DWORD Type;
2826} MEMORY_BASIC_INFORMATION,*LPMEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION;
2827
2828#ifdef __IBMC__
2829typedef void (* __stdcall WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN );
2830#else
2831typedef void (__stdcall *WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN );
2832#endif
2833
2834#define REG_QWORD 11 /* QWORD in little endian format */
2835
2836#define DECLSPEC_NORETURN
2837
2838typedef struct _QUOTA_LIMITS {
2839 DWORD PagedPoolLimit;
2840 DWORD NonPagedPoolLimit;
2841 DWORD MinimumWorkingSetSize;
2842 DWORD MaximumWorkingSetSize;
2843 DWORD PagefileLimit;
2844 LARGE_INTEGER TimeLimit;
2845} QUOTA_LIMITS, *PQUOTA_LIMITS;
2846
2847#endif
Note: See TracBrowser for help on using the repository browser.