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

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