ReactOS 0.4.15-dev-7961-gdcf9eb0
ntbasedef.h
Go to the documentation of this file.
1/* Defines the "size" of an any-size array */
2#ifndef ANYSIZE_ARRAY
3#define ANYSIZE_ARRAY 1
4#endif
5
6/* Helper macro to enable gcc's extension. */
7#ifndef __GNU_EXTENSION
8 #ifdef __GNUC__
9 #define __GNU_EXTENSION __extension__
10 #else
11 #define __GNU_EXTENSION
12 #endif
13#endif /* __GNU_EXTENSION */
14
15#ifndef DUMMYUNIONNAME
16 #if defined(NONAMELESSUNION)// || !defined(_MSC_EXTENSIONS)
17 #define _ANONYMOUS_UNION
18 #define _UNION_NAME(x) x
19 #define DUMMYUNIONNAME u
20 #define DUMMYUNIONNAME1 u1
21 #define DUMMYUNIONNAME2 u2
22 #define DUMMYUNIONNAME3 u3
23 #define DUMMYUNIONNAME4 u4
24 #define DUMMYUNIONNAME5 u5
25 #define DUMMYUNIONNAME6 u6
26 #define DUMMYUNIONNAME7 u7
27 #define DUMMYUNIONNAME8 u8
28 #define DUMMYUNIONNAME9 u9
29 #else
30 #define _ANONYMOUS_UNION __GNU_EXTENSION
31 #define _UNION_NAME(x)
32 #define DUMMYUNIONNAME
33 #define DUMMYUNIONNAME1
34 #define DUMMYUNIONNAME2
35 #define DUMMYUNIONNAME3
36 #define DUMMYUNIONNAME4
37 #define DUMMYUNIONNAME5
38 #define DUMMYUNIONNAME6
39 #define DUMMYUNIONNAME7
40 #define DUMMYUNIONNAME8
41 #define DUMMYUNIONNAME9
42 #endif /* NONAMELESSUNION */
43#endif /* !DUMMYUNIONNAME */
44
45#ifndef DUMMYSTRUCTNAME
46 #if defined(NONAMELESSUNION)// || !defined(_MSC_EXTENSIONS)
47 #define _ANONYMOUS_STRUCT
48 #define _STRUCT_NAME(x) x
49 #define DUMMYSTRUCTNAME s
50 #define DUMMYSTRUCTNAME1 s1
51 #define DUMMYSTRUCTNAME2 s2
52 #define DUMMYSTRUCTNAME3 s3
53 #define DUMMYSTRUCTNAME4 s4
54 #define DUMMYSTRUCTNAME5 s5
55 #else
56 #define _ANONYMOUS_STRUCT __GNU_EXTENSION
57 #define _STRUCT_NAME(x)
58 #define DUMMYSTRUCTNAME
59 #define DUMMYSTRUCTNAME1
60 #define DUMMYSTRUCTNAME2
61 #define DUMMYSTRUCTNAME3
62 #define DUMMYSTRUCTNAME4
63 #define DUMMYSTRUCTNAME5
64 #endif /* NONAMELESSUNION */
65#endif /* DUMMYSTRUCTNAME */
66
67#if defined(STRICT_GS_ENABLED)
68 #pragma strict_gs_check(push, on)
69#endif
70
71#if defined(_M_MRX000) || defined(_M_ALPHA) || defined(_M_PPC) || defined(_M_IA64) || defined(_M_AMD64) || defined(_M_ARM) || defined(_M_ARM64)
72 #define ALIGNMENT_MACHINE
73 #define UNALIGNED __unaligned
74 #if defined(_WIN64)
75 #define UNALIGNED64 __unaligned
76 #else
77 #define UNALIGNED64
78 #endif
79#else
80 #undef ALIGNMENT_MACHINE
81 #define UNALIGNED
82 #define UNALIGNED64
83#endif
84
85#if defined(_WIN64) || defined(_M_ALPHA)
86 #define MAX_NATURAL_ALIGNMENT sizeof(ULONGLONG)
87 #define MEMORY_ALLOCATION_ALIGNMENT 16
88#else
89 #define MAX_NATURAL_ALIGNMENT sizeof($ULONG)
90 #define MEMORY_ALLOCATION_ALIGNMENT 8
91#endif
92
93/* C99 restrict support */
94#if defined(ENABLE_RESTRICTED) && defined(_M_MRX000) && !defined(MIDL_PASS) && !defined(RC_INVOKED)
95 #define RESTRICTED_POINTER __restrict
96#else
97 #define RESTRICTED_POINTER
98#endif
99
100/* Returns the base address of a structure from a structure member */
101#ifndef CONTAINING_RECORD
102 #define CONTAINING_RECORD(address, type, field) \
103 ((type *)(((ULONG_PTR)address) - (ULONG_PTR)(&(((type *)0)->field))))
104#endif
105
106/* Returns the byte offset of the specified structure's member */
107#if !defined(__GNUC__) && !defined(__clang__)
108 #define FIELD_OFFSET(Type, Field) ((LONG)(LONG_PTR)&(((Type*) 0)->Field))
109#else
110 #define FIELD_OFFSET(Type, Field) ((LONG)__builtin_offsetof(Type, Field))
111#endif /* __GNUC__ */
112
113/* Returns the type's alignment */
114#if defined(_MSC_VER)
115 #define TYPE_ALIGNMENT(t) __alignof(t)
116#else
117 #define TYPE_ALIGNMENT(t) FIELD_OFFSET(struct { char x; t test; }, test)
118#endif /* _MSC_VER */
119
120#if defined(_AMD64_) || defined(_X86_)
121 #define PROBE_ALIGNMENT(_s) TYPE_ALIGNMENT($ULONG)
122#elif defined(_IA64_) || defined(_ARM_) || defined(_ARM64_)
123 #define PROBE_ALIGNMENT(_s) max((TYPE_ALIGNMENT(_s), TYPE_ALIGNMENT($ULONG))
124#elif !defined(RC_INVOKED)
125 #error "Unknown architecture"
126#endif
127
128#if defined(_WIN64)
129 #define PROBE_ALIGNMENT32(_s) TYPE_ALIGNMENT($ULONG)
130#endif /* _WIN64 */
131
132#ifdef __cplusplus
133 #define EXTERN_C extern "C"
134#else
135 #define EXTERN_C extern
136#endif /* __cplusplus */
137
138#define NTAPI __stdcall
139
140#ifndef STDMETHODCALLTYPE
141 #define STDMETHODCALLTYPE __stdcall
142 #define STDMETHODVCALLTYPE __cdecl
143 #define STDAPICALLTYPE __stdcall
144 #define STDAPIVCALLTYPE __cdecl
145 #define STDAPI EXTERN_C HRESULT STDAPICALLTYPE
146 #define STDAPI_(t) EXTERN_C t STDAPICALLTYPE
147 #define STDMETHODIMP HRESULT STDMETHODCALLTYPE
148 #define STDMETHODIMP_(t) t STDMETHODCALLTYPE
149 #define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE
150 #define STDAPIV_(t) EXTERN_C t STDAPIVCALLTYPE
151 #define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE
152 #define STDMETHODIMPV_(t) t STDMETHODVCALLTYPE
153#endif /* !STDMETHODCALLTYPE */
154
155#define STDOVERRIDEMETHODIMP __override STDMETHODIMP
156#define STDOVERRIDEMETHODIMP_(t) __override STDMETHODIMP_(t)
157#define IFACEMETHODIMP __override STDMETHODIMP
158#define IFACEMETHODIMP_(t) __override STDMETHODIMP_(t)
159#define STDOVERRIDEMETHODIMPV __override STDMETHODIMPV
160#define STDOVERRIDEMETHODIMPV_(t) __override STDMETHODIMPV_(t)
161#define IFACEMETHODIMPV __override STDMETHODIMPV
162#define IFACEMETHODIMPV_(t) __override STDMETHODIMPV_(t)
163
164/* Import and Export Specifiers */
165
166#ifndef DECLSPEC_IMPORT
167 #define DECLSPEC_IMPORT __declspec(dllimport) // MIDL?
168#endif /* DECLSPEC_IMPORT */
169
170#ifndef DECLSPEC_EXPORT
171 #if defined(__REACTOS__) || defined(__WINESRC__)
172 #define DECLSPEC_EXPORT __declspec(dllexport)
173 #endif
174#endif /* DECLSPEC_EXPORT */
175
176#define DECLSPEC_NORETURN __declspec(noreturn)
177
178#ifndef DECLSPEC_ADDRSAFE
179 #if defined(_MSC_VER) && (defined(_M_ALPHA) || defined(_M_AXP64))
180 #define DECLSPEC_ADDRSAFE __declspec(address_safe)
181 #else
182 #define DECLSPEC_ADDRSAFE
183 #endif
184#endif /* DECLSPEC_ADDRSAFE */
185
186#ifndef DECLSPEC_NOTHROW
187 #if !defined(MIDL_PASS)
188 #define DECLSPEC_NOTHROW __declspec(nothrow)
189 #else
190 #define DECLSPEC_NOTHROW
191 #endif
192#endif /* DECLSPEC_NOTHROW */
193
194#ifndef NOP_FUNCTION
195 #if defined(_MSC_VER)
196 #define NOP_FUNCTION __noop
197 #else
198 #define NOP_FUNCTION (void)0
199 #endif
200#endif /* NOP_FUNCTION */
201
202#if !defined(_NTSYSTEM_)
203 #define NTSYSAPI DECLSPEC_IMPORT
204 #define NTSYSCALLAPI DECLSPEC_IMPORT
205#else
206 #define NTSYSAPI
207 #if defined(_NTDLLBUILD_)
208 #define NTSYSCALLAPI
209 #else
210 #define NTSYSCALLAPI DECLSPEC_ADDRSAFE
211 #endif
212#endif /* _NTSYSTEM_ */
213
214/* Inlines */
215#ifndef FORCEINLINE
216 #define FORCEINLINE __forceinline
217#endif /* FORCEINLINE */
218
219#ifndef DECLSPEC_NOINLINE
220 #if (_MSC_VER >= 1300)
221 #define DECLSPEC_NOINLINE __declspec(noinline)
222 #elif defined(__GNUC__)
223 #define DECLSPEC_NOINLINE __attribute__((noinline))
224 #else
225 #define DECLSPEC_NOINLINE
226 #endif
227#endif /* DECLSPEC_NOINLINE */
228
229#if !defined(_M_CEE_PURE)
230 #define NTAPI_INLINE NTAPI
231#else
232 #define NTAPI_INLINE
233#endif /* _M_CEE_PURE */
234
235/* Use to specify structure alignment. Note: VS and GCC behave slightly
236 different. Therefore it is important to stick to the following rules:
237 - If you want a struct to be aligned, put DECLSPEC_ALIGN after "struct":
238 "typedef struct DECLSPEC_ALIGN(16) _FOO { ... } FOO, *PFOO;"
239 _alignof(PFOO) is sizeof(void*) here as usual.
240 - If you don't want the struct, but only the typedef to be aligned,
241 use an extra typedef.
242 struct _BAR { ... };
243 typedef DECLSPEC_ALIGN(16) struct _BAR BAR, *ALIGNEDPBAR;
244 _alignof(ALIGNEDPBAR) is 16 now! */
245#ifndef DECLSPEC_ALIGN
246 #if defined(_MSC_VER) && !defined(MIDL_PASS)
247 #define DECLSPEC_ALIGN(x) __declspec(align(x))
248 #elif defined(__GNUC__)
249 #define DECLSPEC_ALIGN(x) __attribute__((aligned(x)))
250 #else
251 #define DECLSPEC_ALIGN(x)
252 #endif
253#endif /* DECLSPEC_ALIGN */
254
255#ifndef SYSTEM_CACHE_ALIGNMENT_SIZE
256 #if defined(_AMD64_) || defined(_X86_)
257 #define SYSTEM_CACHE_ALIGNMENT_SIZE 64
258 #else
259 #define SYSTEM_CACHE_ALIGNMENT_SIZE 128
260 #endif
261#endif /* SYSTEM_CACHE_ALIGNMENT_SIZE */
262
263#ifndef DECLSPEC_CACHEALIGN
264 #define DECLSPEC_CACHEALIGN DECLSPEC_ALIGN(SYSTEM_CACHE_ALIGNMENT_SIZE)
265#endif /* DECLSPEC_CACHEALIGN */
266
267#ifndef DECLSPEC_UUID
268 #if defined(_MSC_VER) && defined(__cplusplus)
269 #define DECLSPEC_UUID(x) __declspec(uuid(x))
270 #else
271 #define DECLSPEC_UUID(x)
272 #endif
273#endif /* DECLSPEC_UUID */
274
275#ifndef DECLSPEC_NOVTABLE
276 #if defined(_MSC_VER) && defined(__cplusplus)
277 #define DECLSPEC_NOVTABLE __declspec(novtable)
278 #else
279 #define DECLSPEC_NOVTABLE
280 #endif
281#endif /* DECLSPEC_NOVTABLE */
282
283#ifndef DECLSPEC_SELECTANY
284 #if defined(_MSC_VER) || defined(__GNUC__)
285 #define DECLSPEC_SELECTANY __declspec(selectany)
286 #else
287 #define DECLSPEC_SELECTANY
288 #endif
289#endif /* DECLSPEC_SELECTANY */
290
291#ifndef DECLSPEC_DEPRECATED
292 #if (defined(_MSC_VER) || defined(__GNUC__)) && !defined(MIDL_PASS)
293 #define DECLSPEC_DEPRECATED __declspec(deprecated)
294 #define DEPRECATE_SUPPORTED
295 #else
296 #define DECLSPEC_DEPRECATED
297 #undef DEPRECATE_SUPPORTED
298 #endif
299#endif /* DECLSPEC_DEPRECATED */
300
301#ifdef DEPRECATE_DDK_FUNCTIONS
302 #ifdef _NTDDK_
303 #define DECLSPEC_DEPRECATED_DDK DECLSPEC_DEPRECATED
304 #ifdef DEPRECATE_SUPPORTED
305 #define PRAGMA_DEPRECATED_DDK 1
306 #endif
307 #else
308 #define DECLSPEC_DEPRECATED_DDK
309 #define PRAGMA_DEPRECATED_DDK 1
310 #endif
311#else
312 #define DECLSPEC_DEPRECATED_DDK
313 #define PRAGMA_DEPRECATED_DDK 0
314#endif /* DEPRECATE_DDK_FUNCTIONS */
315
316/* Use to silence unused variable warnings when it is intentional */
317#define UNREFERENCED_PARAMETER(P) ((void)(P))
318#define DBG_UNREFERENCED_PARAMETER(P) ((void)(P))
319#define DBG_UNREFERENCED_LOCAL_VARIABLE(L) ((void)(L))
320
321/* Void Pointers */
322typedef void *PVOID;
323typedef void * POINTER_64 PVOID64;
324
325/* Handle Type */
326typedef void *HANDLE, **PHANDLE;
327#ifdef STRICT
328 #define DECLARE_HANDLE(n) typedef struct n##__{int unused;} *n
329#else
330 #define DECLARE_HANDLE(n) typedef HANDLE n
331#endif
332
333/* Upper-Case Versions of Some Standard C Types */
334#ifndef VOID
335 #define VOID void
336 typedef char CHAR;
337 typedef short SHORT;
338
339 #if defined(__ROS_LONG64__)
340 typedef int LONG;
341 #else
342 typedef long LONG;
343 #endif
344
345 #if !defined(MIDL_PASS)
346 typedef int INT;
347 #endif /* !MIDL_PASS */
348#endif /* VOID */
349
351/* Unsigned Types */
352typedef unsigned char UCHAR, *PUCHAR;
353typedef unsigned short USHORT, *PUSHORT;
354typedef unsigned long ULONG, *PULONG;
355
356typedef double DOUBLE;
358
359/* Signed Types */
360typedef SHORT *PSHORT;
361typedef LONG *PLONG;
362
363/* Flag types */
364typedef unsigned char FCHAR;
365typedef unsigned short FSHORT;
366typedef unsigned long FLONG;
367
368typedef unsigned char BOOLEAN, *PBOOLEAN;
370typedef ULONG LOGICAL, *PLOGICAL;
372typedef signed char SCHAR, *PSCHAR;
374
375#ifndef _HRESULT_DEFINED
376 #define _HRESULT_DEFINED
377 typedef _Return_type_success_(return >= 0) LONG HRESULT;
378#endif /* _HRESULT_DEFINED */
379
380/* 64-bit types */
381#define _ULONGLONG_
384#define _DWORDLONG_
386
387/* Update Sequence Number */
388typedef LONGLONG USN;
389
390/* ANSI (Multi-byte Character) types */
391typedef CHAR *PCHAR, *LPCH, *PCH, *PNZCH;
398
401
403/* Pointer to an Asciiz string */
404typedef _Null_terminated_ CHAR *PSZ;
407
408/* UNICODE (Wide Character) types */
409typedef wchar_t WCHAR;
410typedef WCHAR *PWCHAR, *LPWCH, *PWCH;
419
424
425typedef WCHAR *PNZWCH;
429
430#if (_WIN32_WINNT >= 0x0600) || (defined(__cplusplus) && defined(WINDOWS_ENABLE_CPLUSPLUS))
431 typedef CONST WCHAR *LPCWCHAR, *PCWCHAR;
432 typedef CONST WCHAR UNALIGNED *LPCUWCHAR, *PCUWCHAR;
433 typedef unsigned long UCSCHAR, *PUCSCHAR, *PUCSSTR;
434 typedef const UCSCHAR *PCUCSCHAR, *PCUCSSTR;
435 typedef UCSCHAR UNALIGNED *PUUCSCHAR, *PUUCSSTR;
436 typedef const UCSCHAR UNALIGNED *PCUUCSCHAR, *PCUUCSSTR;
437 #define UCSCHAR_INVALID_CHARACTER (0xffffffff)
438 #define MIN_UCSCHAR (0)
439 #define MAX_UCSCHAR (0x0010FFFF)
440#endif /* _WIN32_WINNT >= 0x0600 */
441
442#ifdef UNICODE
443
444 #ifndef _TCHAR_DEFINED
445 typedef WCHAR TCHAR, *PTCHAR;
447 typedef WCHAR TUCHAR, *PTUCHAR;
450 typedef WCHAR TBYTE, *PTBYTE;
452 #define _TCHAR_DEFINED
453 #endif /* !_TCHAR_DEFINED */
454
455 typedef LPWCH LPTCH, PTCH;
456 typedef LPCWCH LPCTCH, PCTCH;
457 typedef LPWSTR PTSTR, LPTSTR;
458 typedef LPCWSTR PCTSTR, LPCTSTR;
459 typedef LPUWSTR PUTSTR, LPUTSTR;
460 typedef LPCUWSTR PCUTSTR, LPCUTSTR;
461 typedef LPWSTR LP;
462 typedef PZZWSTR PZZTSTR;
463 typedef PCZZWSTR PCZZTSTR;
464 typedef PUZZWSTR PUZZTSTR;
465 typedef PCUZZWSTR PCUZZTSTR;
466 typedef PZPWSTR PZPTSTR;
467 typedef PNZWCH PNZTCH;
468 typedef PCNZWCH PCNZTCH;
469 typedef PUNZWCH PUNZTCH;
470 typedef PCUNZWCH PCUNZTCH;
471 #define __TEXT(quote) L##quote
472
473#else /* UNICODE */
474
475 #ifndef _TCHAR_DEFINED
476 typedef char TCHAR, *PTCHAR;
478 typedef unsigned char TUCHAR, *PTUCHAR;
481 typedef unsigned char TBYTE, *PTBYTE;
483 #define _TCHAR_DEFINED
484 #endif /* !_TCHAR_DEFINED */
485 typedef LPCH LPTCH, PTCH;
494 #define __TEXT(quote) quote
495
496#endif /* UNICODE */
497
498#define TEXT(quote) __TEXT(quote)
499
500/* Cardinal Data Types */
501typedef char CCHAR;
503typedef CCHAR *PCCHAR;
504typedef short CSHORT, *PCSHORT;
507
508/* NLS basics (Locale and Language Ids) */
509typedef $ULONG LCID, *PLCID;
510typedef $USHORT LANGID;
511
512#ifndef __COMPARTMENT_ID_DEFINED__
513#define __COMPARTMENT_ID_DEFINED__
514typedef enum
515{
519#endif /* __COMPARTMENT_ID_DEFINED__ */
520
521#ifndef __OBJECTID_DEFINED
522#define __OBJECTID_DEFINED
523typedef struct _OBJECTID {
527#endif /* __OBJECTID_DEFINED */
528
529#ifdef _MSC_VER
530 #pragma warning(push)
531 #pragma warning(disable:4201) // nameless struct / union
532#endif
533
534typedef struct
535#if defined(_M_IA64)
537#endif
538_FLOAT128 {
543
544/* Large Integer Unions */
545#if defined(MIDL_PASS)
546typedef struct _LARGE_INTEGER {
547#else
548typedef union _LARGE_INTEGER {
549 _ANONYMOUS_STRUCT struct
550 {
551 $ULONG LowPart;
554 struct
555 {
556 $ULONG LowPart;
558 } u;
559#endif /* MIDL_PASS */
562
563#if defined(MIDL_PASS)
564typedef struct _ULARGE_INTEGER {
565#else
566typedef union _ULARGE_INTEGER {
567 _ANONYMOUS_STRUCT struct
568 {
569 $ULONG LowPart;
570 $ULONG HighPart;
572 struct
573 {
574 $ULONG LowPart;
575 $ULONG HighPart;
576 } u;
577#endif /* MIDL_PASS */
580
581#ifdef _MSC_VER
582#pragma warning(pop) /* disable:4201 */
583#endif
584
585/* Locally Unique Identifier */
586typedef struct _LUID
587{
588 $ULONG LowPart;
589 LONG HighPart;
591
592#define APPLICATION_ERROR_MASK 0x20000000
593#define ERROR_SEVERITY_SUCCESS 0x00000000
594#define ERROR_SEVERITY_INFORMATIONAL 0x40000000
595#define ERROR_SEVERITY_WARNING 0x80000000
596#define ERROR_SEVERITY_ERROR 0xC0000000
597
599/* Native API Return Value Macros */
600#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)
601#define NT_INFORMATION(Status) ((((ULONG)(Status)) >> 30) == 1)
602#define NT_WARNING(Status) ((((ULONG)(Status)) >> 30) == 2)
603#define NT_ERROR(Status) ((((ULONG)(Status)) >> 30) == 3)
605
606#define ANSI_NULL ((CHAR)0)
607#define UNICODE_NULL ((WCHAR)0)
608#define UNICODE_STRING_MAX_BYTES ((USHORT) 65534)
609#define UNICODE_STRING_MAX_CHARS (32767)
610
611/* Doubly Linked Lists */
612typedef struct _LIST_ENTRY {
613 struct _LIST_ENTRY *Flink;
614 struct _LIST_ENTRY *Blink;
616
617typedef struct LIST_ENTRY32 {
618 $ULONG Flink;
619 $ULONG Blink;
621
622typedef struct LIST_ENTRY64 {
626
627/* Singly Linked Lists */
628typedef struct _SINGLE_LIST_ENTRY {
631
633typedef struct _SINGLE_LIST_ENTRY32 {
634 ULONG Next;
637
638typedef struct _PROCESSOR_NUMBER {
639 $USHORT Group;
640 $UCHAR Number;
641 $UCHAR Reserved;
643
644#define ALL_PROCESSOR_GROUPS 0xffff
645
646typedef
650NTAPI
652 _Inout_ struct _EXCEPTION_RECORD *ExceptionRecord,
656
658
659typedef struct _GROUP_AFFINITY {
661 $USHORT Group;
662 $USHORT Reserved[3];
664
665/* Helper Macros */
666
667#define RTL_FIELD_TYPE(type, field) (((type*)0)->field)
668#define RTL_BITS_OF(sizeOfArg) (sizeof(sizeOfArg) * 8)
669#define RTL_BITS_OF_FIELD(type, field) (RTL_BITS_OF(RTL_FIELD_TYPE(type, field)))
670#define RTL_FIELD_SIZE(type, field) (sizeof(((type *)0)->field))
671
672#define RTL_SIZEOF_THROUGH_FIELD(type, field) \
673 (FIELD_OFFSET(type, field) + RTL_FIELD_SIZE(type, field))
674
675#define RTL_CONTAINS_FIELD(Struct, Size, Field) \
676 ( (((PCHAR)(&(Struct)->Field)) + sizeof((Struct)->Field)) <= (((PCHAR)(Struct))+(Size)) )
677
678#define RTL_NUMBER_OF_V1(A) (sizeof(A)/sizeof((A)[0]))
679
680#ifdef __GNUC__
681 #define RTL_NUMBER_OF_V2(A) \
682 (({ int _check_array_type[__builtin_types_compatible_p(typeof(A), typeof(&A[0])) ? -1 : 1]; (void)_check_array_type; }), \
683 RTL_NUMBER_OF_V1(A))
684#elif defined(__cplusplus)
685extern "C++" {
686 template <typename T, size_t N>
687 static char (& SAFE_RTL_NUMBER_OF(T (&)[N]))[N];
688}
689 #define RTL_NUMBER_OF_V2(A) sizeof(SAFE_RTL_NUMBER_OF(A))
690#else
691 #define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A)
692#endif
693
694#ifdef ENABLE_RTL_NUMBER_OF_V2
695 #define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V2(A)
696#else
697 #define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V1(A)
698#endif
699
700#define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A)
701#define _ARRAYSIZE(A) RTL_NUMBER_OF_V1(A)
702
703#define RTL_NUMBER_OF_FIELD(type, field) \
704 (RTL_NUMBER_OF(RTL_FIELD_TYPE(type, field)))
705
706#define RTL_PADDING_BETWEEN_FIELDS(type, field1, field2) \
707 ((FIELD_OFFSET(type, field2) > FIELD_OFFSET(type, field1)) \
708 ? (FIELD_OFFSET(type, field2) - FIELD_OFFSET(type, field1) - RTL_FIELD_SIZE(type, field1)) \
709 : (FIELD_OFFSET(type, field1) - FIELD_OFFSET(type, field2) - RTL_FIELD_SIZE(type, field2)))
710
711#if defined(__cplusplus)
712 #define RTL_CONST_CAST(type) const_cast<type>
713#else
714 #define RTL_CONST_CAST(type) (type)
715#endif
716
717#ifdef __cplusplus
718#define DEFINE_ENUM_FLAG_OPERATORS(_ENUMTYPE) \
719extern "C++" { \
720 inline _ENUMTYPE operator|(_ENUMTYPE a, _ENUMTYPE b) { return _ENUMTYPE(((int)a) | ((int)b)); } \
721 inline _ENUMTYPE &operator|=(_ENUMTYPE &a, _ENUMTYPE b) { return (_ENUMTYPE &)(((int &)a) |= ((int)b)); } \
722 inline _ENUMTYPE operator&(_ENUMTYPE a, _ENUMTYPE b) { return _ENUMTYPE(((int)a) & ((int)b)); } \
723 inline _ENUMTYPE &operator&=(_ENUMTYPE &a, _ENUMTYPE b) { return (_ENUMTYPE &)(((int &)a) &= ((int)b)); } \
724 inline _ENUMTYPE operator~(_ENUMTYPE a) { return _ENUMTYPE(~((int)a)); } \
725 inline _ENUMTYPE operator^(_ENUMTYPE a, _ENUMTYPE b) { return _ENUMTYPE(((int)a) ^ ((int)b)); } \
726 inline _ENUMTYPE &operator^=(_ENUMTYPE &a, _ENUMTYPE b) { return (_ENUMTYPE &)(((int &)a) ^= ((int)b)); } \
727}
728#else
729#define DEFINE_ENUM_FLAG_OPERATORS(_ENUMTYPE)
730#endif
731
732#define COMPILETIME_OR_2FLAGS(a,b) ((UINT)(a)|(UINT)(b))
733#define COMPILETIME_OR_3FLAGS(a,b,c) ((UINT)(a)|(UINT)(b)|(UINT)(c))
734#define COMPILETIME_OR_4FLAGS(a,b,c,d) ((UINT)(a)|(UINT)(b)|(UINT)(c)|(UINT)(d))
735#define COMPILETIME_OR_5FLAGS(a,b,c,d,e) ((UINT)(a)|(UINT)(b)|(UINT)(c)|(UINT)(d)|(UINT)(e))
736
737/* Type Limits */
738#define MINCHAR 0x80
739#define MAXCHAR 0x7f
740#define MINSHORT 0x8000
741#define MAXSHORT 0x7fff
742#define MINLONG 0x80000000
743#define MAXLONG 0x7fffffff
745#define MAXUCHAR 0xff
746#define MAXUSHORT 0xffff
747#define MAXULONG 0xffffffff
750#define MAXBYTE 0xff
751#define MAXWORD 0xffff
752#define MAXDWORD 0xffffffff
754#define MAXLONGLONG (0x7fffffffffffffffLL)
755
756/* 32 to 64 bit multiplication. GCC is really bad at optimizing the native math */
757#if defined(_M_IX86) && !defined(_M_ARM) && !defined(_M_ARM64) && \
758 !defined(MIDL_PASS)&& !defined(RC_INVOKED) && !defined(_M_CEE_PURE)
759 #define Int32x32To64(a,b) __emul(a,b)
760 #define UInt32x32To64(a,b) __emulu(a,b)
761#else
762 #define Int32x32To64(a,b) (((__int64)(long)(a))*((__int64)(long)(b)))
763 #define UInt32x32To64(a,b) ((unsigned __int64)(unsigned int)(a)*(unsigned __int64)(unsigned int)(b))
764#endif
765
766#if defined(MIDL_PASS)|| defined(RC_INVOKED) || defined(_M_CEE_PURE) || defined(_M_ARM)
767/* Use native math */
768 #define Int64ShllMod32(a,b) ((unsigned __int64)(a)<<(b))
769 #define Int64ShraMod32(a,b) (((__int64)(a))>>(b))
770 #define Int64ShrlMod32(a,b) (((unsigned __int64)(a))>>(b))
771#else
772/* Use intrinsics */
773 #define Int64ShllMod32(a,b) __ll_lshift(a,b)
774 #define Int64ShraMod32(a,b) __ll_rshift(a,b)
775 #define Int64ShrlMod32(a,b) __ull_rshift(a,b)
776#endif
777
778#define RotateLeft32 _rotl
779#define RotateLeft64 _rotl64
780#define RotateRight32 _rotr
781#define RotateRight64 _rotr64
782
783#if defined(_M_AMD64)
784 #define RotateLeft8 _rotl8
785 #define RotateLeft16 _rotl16
786 #define RotateRight8 _rotr8
787 #define RotateRight16 _rotr16
788#endif /* _M_AMD64 */
789
790/* C_ASSERT Definition */
791#define C_ASSERT(expr) extern char (*c_assert(void)) [(expr) ? 1 : -1]
792
793/* Eliminate Microsoft C/C++ compiler warning 4715 */
794#if defined(_MSC_VER)
795 #define DEFAULT_UNREACHABLE default: __assume(0)
796#elif defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5))))
797 #define DEFAULT_UNREACHABLE default: __builtin_unreachable()
798#else
799 #define DEFAULT_UNREACHABLE default: break
800#endif
801
802#if defined(__GNUC__) || defined(__clang__)
803 #define UNREACHABLE __builtin_unreachable()
804#elif defined(_MSC_VER)
805 #define UNREACHABLE __assume(0)
806#else
807 #define UNREACHABLE
808#endif
809
810#define VER_WORKSTATION_NT 0x40000000
811#define VER_SERVER_NT 0x80000000
812#define VER_SUITE_SMALLBUSINESS 0x00000001
813#define VER_SUITE_ENTERPRISE 0x00000002
814#define VER_SUITE_BACKOFFICE 0x00000004
815#define VER_SUITE_COMMUNICATIONS 0x00000008
816#define VER_SUITE_TERMINAL 0x00000010
817#define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020
818#define VER_SUITE_EMBEDDEDNT 0x00000040
819#define VER_SUITE_DATACENTER 0x00000080
820#define VER_SUITE_SINGLEUSERTS 0x00000100
821#define VER_SUITE_PERSONAL 0x00000200
822#define VER_SUITE_BLADE 0x00000400
823#define VER_SUITE_EMBEDDED_RESTRICTED 0x00000800
824#define VER_SUITE_SECURITY_APPLIANCE 0x00001000
825#define VER_SUITE_STORAGE_SERVER 0x00002000
826#define VER_SUITE_COMPUTE_SERVER 0x00004000
827#define VER_SUITE_WH_SERVER 0x00008000
828
829/* Product types */
830#define PRODUCT_UNDEFINED 0x00000000
831#define PRODUCT_ULTIMATE 0x00000001
832#define PRODUCT_HOME_BASIC 0x00000002
833#define PRODUCT_HOME_PREMIUM 0x00000003
834#define PRODUCT_ENTERPRISE 0x00000004
835#define PRODUCT_HOME_BASIC_N 0x00000005
836#define PRODUCT_BUSINESS 0x00000006
837#define PRODUCT_STANDARD_SERVER 0x00000007
838#define PRODUCT_DATACENTER_SERVER 0x00000008
839#define PRODUCT_SMALLBUSINESS_SERVER 0x00000009
840#define PRODUCT_ENTERPRISE_SERVER 0x0000000A
841#define PRODUCT_STARTER 0x0000000B
842#define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C
843#define PRODUCT_STANDARD_SERVER_CORE 0x0000000D
844#define PRODUCT_ENTERPRISE_SERVER_CORE 0x0000000E
845#define PRODUCT_ENTERPRISE_SERVER_IA64 0x0000000F
846#define PRODUCT_BUSINESS_N 0x00000010
847#define PRODUCT_WEB_SERVER 0x00000011
848#define PRODUCT_CLUSTER_SERVER 0x00000012
849#define PRODUCT_HOME_SERVER 0x00000013
850#define PRODUCT_STORAGE_EXPRESS_SERVER 0x00000014
851#define PRODUCT_STORAGE_STANDARD_SERVER 0x00000015
852#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x00000016
853#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x00000017
854#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x00000018
855#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x00000019
856#define PRODUCT_HOME_PREMIUM_N 0x0000001A
857#define PRODUCT_ENTERPRISE_N 0x0000001B
858#define PRODUCT_ULTIMATE_N 0x0000001C
859#define PRODUCT_WEB_SERVER_CORE 0x0000001D
860#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x0000001E
861#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x0000001F
862#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x00000020
863#define PRODUCT_SERVER_FOUNDATION 0x00000021
864#define PRODUCT_HOME_PREMIUM_SERVER 0x00000022
865#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x00000023
866#define PRODUCT_STANDARD_SERVER_V 0x00000024
867#define PRODUCT_DATACENTER_SERVER_V 0x00000025
868#define PRODUCT_ENTERPRISE_SERVER_V 0x00000026
869#define PRODUCT_DATACENTER_SERVER_CORE_V 0x00000027
870#define PRODUCT_STANDARD_SERVER_CORE_V 0x00000028
871#define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x00000029
872#define PRODUCT_HYPERV 0x0000002A
873#define PRODUCT_STORAGE_EXPRESS_SERVER_CORE 0x0000002B
874#define PRODUCT_STORAGE_STANDARD_SERVER_CORE 0x0000002C
875#define PRODUCT_STORAGE_WORKGROUP_SERVER_CORE 0x0000002D
876#define PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE 0x0000002E
877#define PRODUCT_STARTER_N 0x0000002F
878#define PRODUCT_PROFESSIONAL 0x00000030
879#define PRODUCT_PROFESSIONAL_N 0x00000031
880#define PRODUCT_SB_SOLUTION_SERVER 0x00000032
881#define PRODUCT_SERVER_FOR_SB_SOLUTIONS 0x00000033
882#define PRODUCT_STANDARD_SERVER_SOLUTIONS 0x00000034
883#define PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE 0x00000035
884#define PRODUCT_SB_SOLUTION_SERVER_EM 0x00000036
885#define PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM 0x00000037
886#define PRODUCT_SOLUTION_EMBEDDEDSERVER 0x00000038
887#define PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE 0x00000039
888#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT 0x0000003B
889#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL 0x0000003C
890#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC 0x0000003D
891#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC 0x0000003E
892#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE 0x0000003F
893#define PRODUCT_CLUSTER_SERVER_V 0x00000040
894#define PRODUCT_EMBEDDED 0x00000041
895#define PRODUCT_STARTER_E 0x00000042
896#define PRODUCT_HOME_BASIC_E 0x00000043
897#define PRODUCT_HOME_PREMIUM_E 0x00000044
898#define PRODUCT_PROFESSIONAL_E 0x00000045
899#define PRODUCT_ENTERPRISE_E 0x00000046
900#define PRODUCT_ULTIMATE_E 0x00000047
901#define PRODUCT_ENTERPRISE_EVALUATION 0x00000048
902#define PRODUCT_MULTIPOINT_STANDARD_SERVER 0x0000004C
903#define PRODUCT_MULTIPOINT_PREMIUM_SERVER 0x0000004D
904#define PRODUCT_STANDARD_EVALUATION_SERVER 0x0000004F
905#define PRODUCT_DATACENTER_EVALUATION_SERVER 0x00000050
906#define PRODUCT_ENTERPRISE_N_EVALUATION 0x00000054
907#define PRODUCT_EMBEDDED_AUTOMOTIVE 0x00000055
908#define PRODUCT_EMBEDDED_INDUSTRY_A 0x00000056
909#define PRODUCT_THINPC 0x00000057
910#define PRODUCT_EMBEDDED_A 0x00000058
911#define PRODUCT_EMBEDDED_INDUSTRY 0x00000059
912#define PRODUCT_EMBEDDED_E 0x0000005A
913#define PRODUCT_EMBEDDED_INDUSTRY_E 0x0000005B
914#define PRODUCT_EMBEDDED_INDUSTRY_A_E 0x0000005C
915#define PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER 0x0000005F
916#define PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER 0x00000060
917#define PRODUCT_CORE_ARM 0x00000061
918#define PRODUCT_CORE_N 0x00000062
919#define PRODUCT_CORE_COUNTRYSPECIFIC 0x00000063
920#define PRODUCT_CORE_SINGLELANGUAGE 0x00000064
921#define PRODUCT_CORE 0x00000065
922#define PRODUCT_PROFESSIONAL_WMC 0x00000067
923#define PRODUCT_ENTERPRISE_S_N_EVALUATION 0x00000082
924#define PRODUCT_UNLICENSED 0xABCDABCD
925
926/* LangID and NLS */
927#define MAKELANGID(p, s) ((((USHORT)(s)) << 10) | (USHORT)(p))
928#define PRIMARYLANGID(lgid) ((USHORT)(lgid) & 0x3ff)
929#define SUBLANGID(lgid) ((USHORT)(lgid) >> 10)
930#define MAKELCID(lgid, srtid) (($ULONG)(((($ULONG)((USHORT)(srtid))) << 16) | \
931 (($ULONG)((USHORT)(lgid)))))
932#define MAKESORTLCID(lgid, srtid, ver) \
933 (($ULONG)((MAKELCID(lgid, srtid)) | \
934 ((($ULONG)((USHORT)(ver))) << 20)))
935#define LANGIDFROMLCID(lcid) ((USHORT)(lcid))
936#define SORTIDFROMLCID(lcid) ((USHORT)(((($ULONG)(lcid)) >> 16) & 0xf))
937#define SORTVERSIONFROMLCID(lcid) ((USHORT)(((($ULONG)(lcid)) >> 20) & 0xf))
938
939#define NLS_VALID_LOCALE_MASK 0x000fffff
940#define LOCALE_NAME_MAX_LENGTH 85
941
942/* Primary language IDs. */
943#define LANG_NEUTRAL 0x00
944#define LANG_INVARIANT 0x7f
945#define LANG_AFRIKAANS 0x36
946#define LANG_ALBANIAN 0x1c
947#define LANG_ALSATIAN 0x84
948#define LANG_AMHARIC 0x5e
949#define LANG_ARABIC 0x01
950#define LANG_ARMENIAN 0x2b
951#define LANG_ASSAMESE 0x4d
952#define LANG_AZERI 0x2c
953#define LANG_AZERBAIJANI 0x2c
954#define LANG_BANGLA 0x45
955#define LANG_BASHKIR 0x6d
956#define LANG_BASQUE 0x2d
957#define LANG_BELARUSIAN 0x23
958#define LANG_BENGALI 0x45
959#define LANG_BOSNIAN 0x1a
960#define LANG_BOSNIAN_NEUTRAL 0x781a
961#define LANG_BRETON 0x7e
962#define LANG_BULGARIAN 0x02
963#define LANG_CATALAN 0x03
964#define LANG_CENTRAL_KURDISH 0x92
965#define LANG_CHEROKEE 0x5c
966#define LANG_CHINESE 0x04
967#define LANG_CHINESE_SIMPLIFIED 0x04
968#define LANG_CHINESE_TRADITIONAL 0x7c04
969#define LANG_CORSICAN 0x83
970#define LANG_CROATIAN 0x1a
971#define LANG_CZECH 0x05
972#define LANG_DANISH 0x06
973#define LANG_DARI 0x8c
974#define LANG_DIVEHI 0x65
975#define LANG_DUTCH 0x13
976#define LANG_ENGLISH 0x09
977#define LANG_ESTONIAN 0x25
978#define LANG_FAEROESE 0x38
979#define LANG_FARSI 0x29
980#define LANG_FILIPINO 0x64
981#define LANG_FINNISH 0x0b
982#define LANG_FRENCH 0x0c
983#define LANG_FRISIAN 0x62
984#define LANG_FULAH 0x67
985#define LANG_GALICIAN 0x56
986#define LANG_GEORGIAN 0x37
987#define LANG_GERMAN 0x07
988#define LANG_GREEK 0x08
989#define LANG_GREENLANDIC 0x6f
990#define LANG_GUJARATI 0x47
991#define LANG_HAUSA 0x68
992#define LANG_HAWAIIAN 0x75
993#define LANG_HEBREW 0x0d
994#define LANG_HINDI 0x39
995#define LANG_HUNGARIAN 0x0e
996#define LANG_ICELANDIC 0x0f
997#define LANG_IGBO 0x70
998#define LANG_INDONESIAN 0x21
999#define LANG_INUKTITUT 0x5d
1000#define LANG_IRISH 0x3c
1001#define LANG_ITALIAN 0x10
1002#define LANG_JAPANESE 0x11
1003#define LANG_KANNADA 0x4b
1004#define LANG_KASHMIRI 0x60
1005#define LANG_KAZAK 0x3f
1006#define LANG_KHMER 0x53
1007#define LANG_KICHE 0x86
1008#define LANG_KINYARWANDA 0x87
1009#define LANG_KONKANI 0x57
1010#define LANG_KOREAN 0x12
1011#define LANG_KYRGYZ 0x40
1012#define LANG_LAO 0x54
1013#define LANG_LATVIAN 0x26
1014#define LANG_LITHUANIAN 0x27
1015#define LANG_LOWER_SORBIAN 0x2e
1016#define LANG_LUXEMBOURGISH 0x6e
1017#define LANG_MACEDONIAN 0x2f
1018#define LANG_MALAY 0x3e
1019#define LANG_MALAYALAM 0x4c
1020#define LANG_MALTESE 0x3a
1021#define LANG_MANIPURI 0x58
1022#define LANG_MAORI 0x81
1023#define LANG_MAPUDUNGUN 0x7a
1024#define LANG_MARATHI 0x4e
1025#define LANG_MOHAWK 0x7c
1026#define LANG_MONGOLIAN 0x50
1027#define LANG_NEPALI 0x61
1028#define LANG_NORWEGIAN 0x14
1029#define LANG_OCCITAN 0x82
1030#define LANG_ODIA 0x48
1031#define LANG_ORIYA 0x48
1032#define LANG_PASHTO 0x63
1033#define LANG_PERSIAN 0x29
1034#define LANG_POLISH 0x15
1035#define LANG_PORTUGUESE 0x16
1036#define LANG_PULAR 0x67
1037#define LANG_PUNJABI 0x46
1038#define LANG_QUECHUA 0x6b
1039#define LANG_ROMANIAN 0x18
1040#define LANG_ROMANSH 0x17
1041#define LANG_RUSSIAN 0x19
1042#define LANG_SAKHA 0x85
1043#define LANG_SAMI 0x3b
1044#define LANG_SANSKRIT 0x4f
1045#define LANG_SCOTTISH_GAELIC 0x91
1046#define LANG_SERBIAN 0x1a
1047#define LANG_SERBIAN_NEUTRAL 0x7c1a
1048#define LANG_SINDHI 0x59
1049#define LANG_SINHALESE 0x5b
1050#define LANG_SLOVAK 0x1b
1051#define LANG_SLOVENIAN 0x24
1052#define LANG_SOTHO 0x6c
1053#define LANG_SPANISH 0x0a
1054#define LANG_SWAHILI 0x41
1055#define LANG_SWEDISH 0x1d
1056#define LANG_SYRIAC 0x5a
1057#define LANG_TAJIK 0x28
1058#define LANG_TAMAZIGHT 0x5f
1059#define LANG_TAMIL 0x49
1060#define LANG_TATAR 0x44
1061#define LANG_TELUGU 0x4a
1062#define LANG_THAI 0x1e
1063#define LANG_TIBETAN 0x51
1064#define LANG_TIGRIGNA 0x73
1065#define LANG_TIGRINYA 0x73
1066#define LANG_TSWANA 0x32
1067#define LANG_TURKISH 0x1f
1068#define LANG_TURKMEN 0x42
1069#define LANG_UIGHUR 0x80
1070#define LANG_UKRAINIAN 0x22
1071#define LANG_UPPER_SORBIAN 0x2e
1072#define LANG_URDU 0x20
1073#define LANG_UZBEK 0x43
1074#define LANG_VALENCIAN 0x03
1075#define LANG_VIETNAMESE 0x2a
1076#define LANG_WELSH 0x52
1077#define LANG_WOLOF 0x88
1078#define LANG_XHOSA 0x34
1079#define LANG_YAKUT 0x85
1080#define LANG_YI 0x78
1081#define LANG_YORUBA 0x6a
1082#define LANG_ZULU 0x35
1083
1084#ifdef __REACTOS__
1085/* WINE extensions */
1086/* These are documented by the MSDN but are missing from the Windows header */
1087#define LANG_MALAGASY 0x8d
1088
1089/* FIXME: these are not defined anywhere */
1090#define LANG_SUTU 0x30
1091#define LANG_TSONGA 0x31
1092#define LANG_VENDA 0x33
1093
1094/* non standard; keep the number high enough (but < 0xff) */
1095#define LANG_ASTURIAN 0xa5
1096#define LANG_ESPERANTO 0x8f
1097#define LANG_WALON 0x90
1098#define LANG_CORNISH 0x92
1099#define LANG_MANX_GAELIC 0x94
1100#endif
1101
1102#define SUBLANG_NEUTRAL 0x00
1103#define SUBLANG_DEFAULT 0x01
1104#define SUBLANG_SYS_DEFAULT 0x02
1105#define SUBLANG_CUSTOM_DEFAULT 0x03
1106#define SUBLANG_CUSTOM_UNSPECIFIED 0x04
1107#define SUBLANG_UI_CUSTOM_DEFAULT 0x05
1108#define SUBLANG_AFRIKAANS_SOUTH_AFRICA 0x01
1109#define SUBLANG_ALBANIAN_ALBANIA 0x01
1110#define SUBLANG_ALSATIAN_FRANCE 0x01
1111#define SUBLANG_AMHARIC_ETHIOPIA 0x01
1112#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
1113#define SUBLANG_ARABIC_IRAQ 0x02
1114#define SUBLANG_ARABIC_EGYPT 0x03
1115#define SUBLANG_ARABIC_LIBYA 0x04
1116#define SUBLANG_ARABIC_ALGERIA 0x05
1117#define SUBLANG_ARABIC_MOROCCO 0x06
1118#define SUBLANG_ARABIC_TUNISIA 0x07
1119#define SUBLANG_ARABIC_OMAN 0x08
1120#define SUBLANG_ARABIC_YEMEN 0x09
1121#define SUBLANG_ARABIC_SYRIA 0x0a
1122#define SUBLANG_ARABIC_JORDAN 0x0b
1123#define SUBLANG_ARABIC_LEBANON 0x0c
1124#define SUBLANG_ARABIC_KUWAIT 0x0d
1125#define SUBLANG_ARABIC_UAE 0x0e
1126#define SUBLANG_ARABIC_BAHRAIN 0x0f
1127#define SUBLANG_ARABIC_QATAR 0x10
1128#define SUBLANG_ARMENIAN_ARMENIA 0x01
1129#define SUBLANG_ASSAMESE_INDIA 0x01
1130#define SUBLANG_AZERI_LATIN 0x01
1131#define SUBLANG_AZERI_CYRILLIC 0x02
1132#define SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN 0x01
1133#define SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC 0x02
1134#define SUBLANG_BANGLA_INDIA 0x01
1135#define SUBLANG_BANGLA_BANGLADESH 0x02
1136#define SUBLANG_BASHKIR_RUSSIA 0x01
1137#define SUBLANG_BASQUE_BASQUE 0x01
1138#define SUBLANG_BELARUSIAN_BELARUS 0x01
1139#define SUBLANG_BENGALI_INDIA 0x01
1140#define SUBLANG_BENGALI_BANGLADESH 0x02
1141#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05
1142#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08
1143#define SUBLANG_BRETON_FRANCE 0x01
1144#define SUBLANG_BULGARIAN_BULGARIA 0x01
1145#define SUBLANG_CATALAN_CATALAN 0x01
1146#define SUBLANG_CENTRAL_KURDISH_IRAQ 0x01
1147#define SUBLANG_CHEROKEE_CHEROKEE 0x01
1148#define SUBLANG_CHINESE_TRADITIONAL 0x01
1149#define SUBLANG_CHINESE_SIMPLIFIED 0x02
1150#define SUBLANG_CHINESE_HONGKONG 0x03
1151#define SUBLANG_CHINESE_SINGAPORE 0x04
1152#define SUBLANG_CHINESE_MACAU 0x05
1153#define SUBLANG_CORSICAN_FRANCE 0x01
1154#define SUBLANG_CZECH_CZECH_REPUBLIC 0x01
1155#define SUBLANG_CROATIAN_CROATIA 0x01
1156#define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04
1157#define SUBLANG_DANISH_DENMARK 0x01
1158#define SUBLANG_DARI_AFGHANISTAN 0x01
1159#define SUBLANG_DIVEHI_MALDIVES 0x01
1160#define SUBLANG_DUTCH 0x01
1161#define SUBLANG_DUTCH_BELGIAN 0x02
1162#define SUBLANG_ENGLISH_US 0x01
1163#define SUBLANG_ENGLISH_UK 0x02
1164#define SUBLANG_ENGLISH_AUS 0x03
1165#define SUBLANG_ENGLISH_CAN 0x04
1166#define SUBLANG_ENGLISH_NZ 0x05
1167#define SUBLANG_ENGLISH_EIRE 0x06
1168#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
1169#define SUBLANG_ENGLISH_JAMAICA 0x08
1170#define SUBLANG_ENGLISH_CARIBBEAN 0x09
1171#define SUBLANG_ENGLISH_BELIZE 0x0a
1172#define SUBLANG_ENGLISH_TRINIDAD 0x0b
1173#define SUBLANG_ENGLISH_ZIMBABWE 0x0c
1174#define SUBLANG_ENGLISH_PHILIPPINES 0x0d
1175#define SUBLANG_ENGLISH_INDIA 0x10
1176#define SUBLANG_ENGLISH_MALAYSIA 0x11
1177#define SUBLANG_ENGLISH_SINGAPORE 0x12
1178#define SUBLANG_ESTONIAN_ESTONIA 0x01
1179#define SUBLANG_FAEROESE_FAROE_ISLANDS 0x01
1180#define SUBLANG_FILIPINO_PHILIPPINES 0x01
1181#define SUBLANG_FINNISH_FINLAND 0x01
1182#define SUBLANG_FRENCH 0x01
1183#define SUBLANG_FRENCH_BELGIAN 0x02
1184#define SUBLANG_FRENCH_CANADIAN 0x03
1185#define SUBLANG_FRENCH_SWISS 0x04
1186#define SUBLANG_FRENCH_LUXEMBOURG 0x05
1187#define SUBLANG_FRENCH_MONACO 0x06
1188#define SUBLANG_FRISIAN_NETHERLANDS 0x01
1189#define SUBLANG_FULAH_SENEGAL 0x02
1190#define SUBLANG_GALICIAN_GALICIAN 0x01
1191#define SUBLANG_GEORGIAN_GEORGIA 0x01
1192#define SUBLANG_GERMAN 0x01
1193#define SUBLANG_GERMAN_SWISS 0x02
1194#define SUBLANG_GERMAN_AUSTRIAN 0x03
1195#define SUBLANG_GERMAN_LUXEMBOURG 0x04
1196#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
1197#define SUBLANG_GREEK_GREECE 0x01
1198#define SUBLANG_GREENLANDIC_GREENLAND 0x01
1199#define SUBLANG_GUJARATI_INDIA 0x01
1200#define SUBLANG_HAUSA_NIGERIA_LATIN 0x01
1201#define SUBLANG_HAWAIIAN_US 0x01
1202#define SUBLANG_HEBREW_ISRAEL 0x01
1203#define SUBLANG_HINDI_INDIA 0x01
1204#define SUBLANG_HUNGARIAN_HUNGARY 0x01
1205#define SUBLANG_ICELANDIC_ICELAND 0x01
1206#define SUBLANG_IGBO_NIGERIA 0x01
1207#define SUBLANG_INDONESIAN_INDONESIA 0x01
1208#define SUBLANG_INUKTITUT_CANADA 0x01
1209#define SUBLANG_INUKTITUT_CANADA_LATIN 0x02
1210#define SUBLANG_IRISH_IRELAND 0x02
1211#define SUBLANG_ITALIAN 0x01
1212#define SUBLANG_ITALIAN_SWISS 0x02
1213#define SUBLANG_JAPANESE_JAPAN 0x01
1214#define SUBLANG_KANNADA_INDIA 0x01
1215#define SUBLANG_KASHMIRI_SASIA 0x02
1216#define SUBLANG_KASHMIRI_INDIA 0x02
1217#define SUBLANG_KAZAK_KAZAKHSTAN 0x01
1218#define SUBLANG_KHMER_CAMBODIA 0x01
1219#define SUBLANG_KICHE_GUATEMALA 0x01
1220#define SUBLANG_KINYARWANDA_RWANDA 0x01
1221#define SUBLANG_KONKANI_INDIA 0x01
1222#define SUBLANG_KOREAN 0x01
1223#define SUBLANG_KYRGYZ_KYRGYZSTAN 0x01
1224#define SUBLANG_LAO_LAO 0x01
1225#define SUBLANG_LATVIAN_LATVIA 0x01
1226#define SUBLANG_LITHUANIAN 0x01
1227#define SUBLANG_LOWER_SORBIAN_GERMANY 0x02
1228#define SUBLANG_LUXEMBOURGISH_LUXEMBOURG 0x01
1229#define SUBLANG_MACEDONIAN_MACEDONIA 0x01
1230#define SUBLANG_MALAY_MALAYSIA 0x01
1231#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
1232#define SUBLANG_MALAYALAM_INDIA 0x01
1233#define SUBLANG_MALTESE_MALTA 0x01
1234#define SUBLANG_MAORI_NEW_ZEALAND 0x01
1235#define SUBLANG_MAPUDUNGUN_CHILE 0x01
1236#define SUBLANG_MARATHI_INDIA 0x01
1237#define SUBLANG_MOHAWK_MOHAWK 0x01
1238#define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01
1239#define SUBLANG_MONGOLIAN_PRC 0x02
1240#define SUBLANG_NEPALI_INDIA 0x02
1241#define SUBLANG_NEPALI_NEPAL 0x01
1242#define SUBLANG_NORWEGIAN_BOKMAL 0x01
1243#define SUBLANG_NORWEGIAN_NYNORSK 0x02
1244#define SUBLANG_OCCITAN_FRANCE 0x01
1245#define SUBLANG_ODIA_INDIA 0x01
1246#define SUBLANG_ORIYA_INDIA 0x01
1247#define SUBLANG_PASHTO_AFGHANISTAN 0x01
1248#define SUBLANG_PERSIAN_IRAN 0x01
1249#define SUBLANG_POLISH_POLAND 0x01
1250#define SUBLANG_PORTUGUESE 0x02
1251#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01
1252#define SUBLANG_PULAR_SENEGAL 0x02
1253#define SUBLANG_PUNJABI_INDIA 0x01
1254#define SUBLANG_PUNJABI_PAKISTAN 0x02
1255#define SUBLANG_QUECHUA_BOLIVIA 0x01
1256#define SUBLANG_QUECHUA_ECUADOR 0x02
1257#define SUBLANG_QUECHUA_PERU 0x03
1258#define SUBLANG_ROMANIAN_ROMANIA 0x01
1259#define SUBLANG_ROMANSH_SWITZERLAND 0x01
1260#define SUBLANG_RUSSIAN_RUSSIA 0x01
1261#define SUBLANG_SAKHA_RUSSIA 0x01
1262#define SUBLANG_SAMI_NORTHERN_NORWAY 0x01
1263#define SUBLANG_SAMI_NORTHERN_SWEDEN 0x02
1264#define SUBLANG_SAMI_NORTHERN_FINLAND 0x03
1265#define SUBLANG_SAMI_LULE_NORWAY 0x04
1266#define SUBLANG_SAMI_LULE_SWEDEN 0x05
1267#define SUBLANG_SAMI_SOUTHERN_NORWAY 0x06
1268#define SUBLANG_SAMI_SOUTHERN_SWEDEN 0x07
1269#define SUBLANG_SAMI_SKOLT_FINLAND 0x08
1270#define SUBLANG_SAMI_INARI_FINLAND 0x09
1271#define SUBLANG_SANSKRIT_INDIA 0x01
1272#define SUBLANG_SCOTTISH_GAELIC 0x01
1273#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN 0x06
1274#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x07
1275#define SUBLANG_SERBIAN_MONTENEGRO_LATIN 0x0b
1276#define SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC 0x0c
1277#define SUBLANG_SERBIAN_SERBIA_LATIN 0x09
1278#define SUBLANG_SERBIAN_SERBIA_CYRILLIC 0x0a
1279#define SUBLANG_SERBIAN_CROATIA 0x01
1280#define SUBLANG_SERBIAN_LATIN 0x02
1281#define SUBLANG_SERBIAN_CYRILLIC 0x03
1282#define SUBLANG_SINDHI_INDIA 0x01
1283#define SUBLANG_SINDHI_PAKISTAN 0x02
1284#define SUBLANG_SINDHI_AFGHANISTAN 0x02
1285#define SUBLANG_SINHALESE_SRI_LANKA 0x01
1286#define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA 0x01
1287#define SUBLANG_SLOVAK_SLOVAKIA 0x01
1288#define SUBLANG_SLOVENIAN_SLOVENIA 0x01
1289#define SUBLANG_SPANISH 0x01
1290#define SUBLANG_SPANISH_MEXICAN 0x02
1291#define SUBLANG_SPANISH_MODERN 0x03
1292#define SUBLANG_SPANISH_GUATEMALA 0x04
1293#define SUBLANG_SPANISH_COSTA_RICA 0x05
1294#define SUBLANG_SPANISH_PANAMA 0x06
1295#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
1296#define SUBLANG_SPANISH_VENEZUELA 0x08
1297#define SUBLANG_SPANISH_COLOMBIA 0x09
1298#define SUBLANG_SPANISH_PERU 0x0a
1299#define SUBLANG_SPANISH_ARGENTINA 0x0b
1300#define SUBLANG_SPANISH_ECUADOR 0x0c
1301#define SUBLANG_SPANISH_CHILE 0x0d
1302#define SUBLANG_SPANISH_URUGUAY 0x0e
1303#define SUBLANG_SPANISH_PARAGUAY 0x0f
1304#define SUBLANG_SPANISH_BOLIVIA 0x10
1305#define SUBLANG_SPANISH_EL_SALVADOR 0x11
1306#define SUBLANG_SPANISH_HONDURAS 0x12
1307#define SUBLANG_SPANISH_NICARAGUA 0x13
1308#define SUBLANG_SPANISH_PUERTO_RICO 0x14
1309#define SUBLANG_SPANISH_US 0x15
1310#define SUBLANG_SWAHILI_KENYA 0x01
1311#define SUBLANG_SWEDISH 0x01
1312#define SUBLANG_SWEDISH_FINLAND 0x02
1313#define SUBLANG_SYRIAC_SYRIA 0x01
1314#define SUBLANG_TAJIK_TAJIKISTAN 0x01
1315#define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02
1316#define SUBLANG_TAMAZIGHT_MOROCCO_TIFINAGH 0x04
1317#define SUBLANG_TAMIL_INDIA 0x01
1318#define SUBLANG_TAMIL_SRI_LANKA 0x02
1319#define SUBLANG_TATAR_RUSSIA 0x01
1320#define SUBLANG_TELUGU_INDIA 0x01
1321#define SUBLANG_THAI_THAILAND 0x01
1322#define SUBLANG_TIBETAN_PRC 0x01
1323#define SUBLANG_TIGRIGNA_ERITREA 0x02
1324#define SUBLANG_TIGRINYA_ERITREA 0x02
1325#define SUBLANG_TIGRINYA_ETHIOPIA 0x01
1326#define SUBLANG_TSWANA_BOTSWANA 0x02
1327#define SUBLANG_TSWANA_SOUTH_AFRICA 0x01
1328#define SUBLANG_TURKISH_TURKEY 0x01
1329#define SUBLANG_TURKMEN_TURKMENISTAN 0x01
1330#define SUBLANG_UIGHUR_PRC 0x01
1331#define SUBLANG_UKRAINIAN_UKRAINE 0x01
1332#define SUBLANG_UPPER_SORBIAN_GERMANY 0x01
1333#define SUBLANG_URDU_PAKISTAN 0x01
1334#define SUBLANG_URDU_INDIA 0x02
1335#define SUBLANG_UZBEK_LATIN 0x01
1336#define SUBLANG_UZBEK_CYRILLIC 0x02
1337#define SUBLANG_VALENCIAN_VALENCIA 0x02
1338#define SUBLANG_VIETNAMESE_VIETNAM 0x01
1339#define SUBLANG_WELSH_UNITED_KINGDOM 0x01
1340#define SUBLANG_WOLOF_SENEGAL 0x01
1341#define SUBLANG_XHOSA_SOUTH_AFRICA 0x01
1342#define SUBLANG_YAKUT_RUSSIA 0x01
1343#define SUBLANG_YI_PRC 0x01
1344#define SUBLANG_YORUBA_NIGERIA 0x01
1345#define SUBLANG_ZULU_SOUTH_AFRICA 0x01
1346
1347#ifdef __REACTOS__
1348/* WINE extensions */
1349#define SUBLANG_DUTCH_SURINAM 0x03
1350#define SUBLANG_ROMANIAN_MOLDAVIA 0x02
1351#define SUBLANG_RUSSIAN_MOLDAVIA 0x02
1352#define SUBLANG_LITHUANIAN_CLASSIC 0x02
1353#define SUBLANG_MANX_GAELIC 0x01
1354#endif
1355
1356#define SORT_DEFAULT 0x0
1357#define SORT_INVARIANT_MATH 0x1
1358#define SORT_JAPANESE_XJIS 0x0
1359#define SORT_JAPANESE_UNICODE 0x1
1360#define SORT_JAPANESE_RADICALSTROKE 0x4
1361#define SORT_CHINESE_BIG5 0x0
1362#define SORT_CHINESE_PRCP 0x0
1363#define SORT_CHINESE_UNICODE 0x1
1364#define SORT_CHINESE_PRC 0x2
1365#define SORT_CHINESE_BOPOMOFO 0x3
1366#define SORT_CHINESE_RADICALSTROKE 0x4
1367#define SORT_KOREAN_KSC 0x0
1368#define SORT_KOREAN_UNICODE 0x1
1369#define SORT_GERMAN_PHONE_BOOK 0x1
1370#define SORT_HUNGARIAN_DEFAULT 0x0
1371#define SORT_HUNGARIAN_TECHNICAL 0x1
1372#define SORT_GEORGIAN_TRADITIONAL 0x0
1373#define SORT_GEORGIAN_MODERN 0x1
1374
1375#define LANG_SYSTEM_DEFAULT MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT)
1376#define LANG_USER_DEFAULT MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)
1377
1378#define LOCALE_SYSTEM_DEFAULT MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT)
1379#define LOCALE_USER_DEFAULT MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT)
1380#define LOCALE_CUSTOM_DEFAULT MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_DEFAULT), SORT_DEFAULT)
1381#define LOCALE_CUSTOM_UNSPECIFIED MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_UNSPECIFIED), SORT_DEFAULT)
1382#define LOCALE_CUSTOM_UI_DEFAULT MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_UI_CUSTOM_DEFAULT), SORT_DEFAULT)
1383#define LOCALE_NEUTRAL MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), SORT_DEFAULT)
1384#define LOCALE_INVARIANT MAKELCID(MAKELANGID(LANG_INVARIANT, SUBLANG_NEUTRAL), SORT_DEFAULT)
#define N
Definition: crc32.c:57
unsigned char BOOLEAN
LONG NTSTATUS
Definition: precomp.h:26
#define POINTER_64
Definition: basetsd.h:37
#define __int64
Definition: basetyps.h:16
return
Definition: dirsup.c:529
struct _LUID * PLUID
struct _LUID LUID
ULONG_PTR KAFFINITY
Definition: compat.h:85
EXCEPTION_DISPOSITION NTAPI EXCEPTION_ROUTINE(struct _EXCEPTION_RECORD *ExceptionRecord, PVOID EstablisherFrame, struct _CONTEXT *ContextRecord, PVOID DispatcherContext)
Definition: compat.h:704
EXCEPTION_ROUTINE * PEXCEPTION_ROUTINE
Definition: compat.h:709
enum _EXCEPTION_DISPOSITION EXCEPTION_DISPOSITION
unsigned char
Definition: typeof.h:29
#define _IRQL_requires_same_
Definition: driverspecs.h:232
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
#define T
Definition: mbstring.h:31
USHORT LANGID
Definition: mui.h:9
* PNTSTATUS
Definition: strlen.c:14
struct _ULARGE_INTEGER * PULARGE_INTEGER
Definition: drive.c:28
struct _ULARGE_INTEGER ULARGE_INTEGER
#define _Function_class_(x)
Definition: ms_sal.h:2946
#define _Inout_
Definition: ms_sal.h:378
#define _Null_terminated_
Definition: ms_sal.h:640
#define _Return_type_success_(expr)
Definition: ms_sal.h:263
#define _In_
Definition: ms_sal.h:308
#define _NullNull_terminated_
Definition: ms_sal.h:641
_In_opt_ PSID Group
Definition: rtlfuncs.h:1646
char TCHAR
Definition: ntbasedef.h:476
_Null_terminated_ CONST PWSTR * PCZPWSTR
Definition: ntbasedef.h:414
_Null_terminated_ CONST CHAR * LPCSTR
Definition: ntbasedef.h:396
#define RESTRICTED_POINTER
Definition: ntbasedef.h:97
#define DECLSPEC_ALIGN(x)
Definition: ntbasedef.h:251
struct LIST_ENTRY32 * PLIST_ENTRY32
PNZCH PUNZTCH
Definition: ntbasedef.h:492
_Null_terminated_ WCHAR UNALIGNED * LPUWSTR
Definition: ntbasedef.h:415
struct _SINGLE_LIST_ENTRY * PSINGLE_LIST_ENTRY
_Null_terminated_ CHAR * NPSTR
Definition: ntbasedef.h:393
_Null_terminated_ CONST CHAR * PCSTR
Definition: ntbasedef.h:396
_Null_terminated_ PCWSTR * PZPCWSTR
Definition: ntbasedef.h:417
PZZSTR PUZZTSTR
Definition: ntbasedef.h:489
long LONG
Definition: ntbasedef.h:342
void * PVOID
Definition: ntbasedef.h:322
struct _SINGLE_LIST_ENTRY SINGLE_LIST_ENTRY
ULONGLONG DWORDLONG
Definition: ntbasedef.h:385
WCHAR UNALIGNED * PUNZWCH
Definition: ntbasedef.h:427
* PLCID
Definition: ntbasedef.h:509
_Null_terminated_ WCHAR * PWSTR
Definition: ntbasedef.h:412
LPSTR LPUTSTR
Definition: ntbasedef.h:487
_NullNull_terminated_ WCHAR UNALIGNED * PUZZWSTR
Definition: ntbasedef.h:422
_Null_terminated_ CONST WCHAR UNALIGNED * LPCUWSTR
Definition: ntbasedef.h:418
ULONG CLONG
Definition: ntbasedef.h:505
int INT
Definition: ntbasedef.h:346
LPCSTR PCTSTR
Definition: ntbasedef.h:488
struct LIST_ENTRY64 * PLIST_ENTRY64
LONGLONG USN
Definition: ntbasedef.h:388
CONST CHAR * PCNZCH
Definition: ntbasedef.h:392
_IRQL_requires_same_ _In_ PVOID EstablisherFrame
Definition: ntbasedef.h:653
LPCSTR LPCUTSTR
Definition: ntbasedef.h:488
PZPSTR PZPTSTR
Definition: ntbasedef.h:491
_Null_terminated_ WCHAR * NWPSTR
Definition: ntbasedef.h:412
WCHAR * PWCH
Definition: ntbasedef.h:410
LPSTR PTSTR
Definition: ntbasedef.h:487
CONST WCHAR UNALIGNED * PCUNZWCH
Definition: ntbasedef.h:428
CONST CHAR * LPCCH
Definition: ntbasedef.h:392
unsigned short FSHORT
Definition: ntbasedef.h:365
LPCCH PCTCH
Definition: ntbasedef.h:486
_IRQL_requires_same_ _In_ PVOID _Inout_ struct _CONTEXT * ContextRecord
Definition: ntbasedef.h:654
CHAR * LPCH
Definition: ntbasedef.h:391
_Null_terminated_ CHAR * LPSTR
Definition: ntbasedef.h:393
unsigned long FLONG
Definition: ntbasedef.h:366
* PTUCHAR
Definition: ntbasedef.h:478
__GNU_EXTENSION typedef unsigned __int64 ULONGLONG
Definition: ntbasedef.h:383
PCNZCH PCNZTCH
Definition: ntbasedef.h:493
LPSTR PUTSTR
Definition: ntbasedef.h:487
PCNZCH PCUNZTCH
Definition: ntbasedef.h:493
CHAR * PCH
Definition: ntbasedef.h:391
PNZCH PNZTCH
Definition: ntbasedef.h:492
struct _FLOAT128 FLOAT128
$endif(_NTDEF_) typedef SHORT *PSHORT
Definition: ntbasedef.h:636
signed char * PSCHAR
Definition: ntbasedef.h:372
CHAR * PCHAR
Definition: ntbasedef.h:391
CONST WCHAR * PCNZWCH
Definition: ntbasedef.h:426
_Null_terminated_ WCHAR UNALIGNED * PUWSTR
Definition: ntbasedef.h:415
WCHAR * LPWCH
Definition: ntbasedef.h:410
PTCH
Definition: ntbasedef.h:485
CONST WCHAR * PCWCH
Definition: ntbasedef.h:411
PCZZSTR PCZZTSTR
Definition: ntbasedef.h:490
_NullNull_terminated_ CONST WCHAR UNALIGNED * PCUZZWSTR
Definition: ntbasedef.h:423
LPSTR LPTSTR
Definition: ntbasedef.h:487
_Null_terminated_ CONST WCHAR * PCWSTR
Definition: ntbasedef.h:416
SINGLE_LIST_ENTRY32
Definition: ntbasedef.h:635
_Null_terminated_ WCHAR * LPWSTR
Definition: ntbasedef.h:412
void ** PHANDLE
Definition: ntbasedef.h:326
union _LARGE_INTEGER * PLARGE_INTEGER
* PLOGICAL
Definition: ntbasedef.h:370
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
Definition: ntbasedef.h:383
_Null_terminated_ PWSTR * PZPWSTR
Definition: ntbasedef.h:413
CHAR * PNZCH
Definition: ntbasedef.h:391
*RESTRICTED_POINTER PRLIST_ENTRY
Definition: ntbasedef.h:615
_Null_terminated_ CHAR * PSTR
Definition: ntbasedef.h:393
void *POINTER_64 PVOID64
Definition: ntbasedef.h:323
LPCCH LPCTCH
Definition: ntbasedef.h:486
__GNU_EXTENSION typedef __int64 LONGLONG
Definition: ntbasedef.h:382
unsigned char FCHAR
Definition: ntbasedef.h:364
struct _GROUP_AFFINITY * PGROUP_AFFINITY
short SHORT
Definition: ntbasedef.h:337
union _LARGE_INTEGER LARGE_INTEGER
short * PCSHORT
Definition: ntbasedef.h:504
PCZZSTR PCUZZTSTR
Definition: ntbasedef.h:490
CONST WCHAR * LPCWCH
Definition: ntbasedef.h:411
void * HANDLE
Definition: ntbasedef.h:326
_Null_terminated_ CONST WCHAR UNALIGNED * PCUWSTR
Definition: ntbasedef.h:418
_Null_terminated_ PSTR * PZPSTR
Definition: ntbasedef.h:394
#define UNALIGNED
Definition: ntbasedef.h:81
WCHAR * PNZWCH
Definition: ntbasedef.h:425
LPCSTR PCUTSTR
Definition: ntbasedef.h:488
char * PTCHAR
Definition: ntbasedef.h:476
short CSHORT
Definition: ntbasedef.h:504
_Null_terminated_ CONST WCHAR * LPCWSTR
Definition: ntbasedef.h:416
_NullNull_terminated_ WCHAR * PZZWSTR
Definition: ntbasedef.h:420
struct _OBJECTID OBJECTID
_Null_terminated_ CONST char * PCSZ
Definition: ntbasedef.h:405
FLOAT128 * PFLOAT128
Definition: ntbasedef.h:542
* PTBYTE
Definition: ntbasedef.h:481
* PPROCESSOR_NUMBER
Definition: ntbasedef.h:642
ULONG * PCLONG
Definition: ntbasedef.h:505
enum COMPARTMENT_ID * PCOMPARTMENT_ID
_NullNull_terminated_ CHAR * PZZSTR
Definition: ntbasedef.h:399
$if(_NTDEF_) typedef unsigned char UCHAR
Definition: ntbasedef.h:598
PZZSTR PZZTSTR
Definition: ntbasedef.h:489
#define DUMMYSTRUCTNAME
Definition: ntbasedef.h:58
LPCSTR LPCTSTR
Definition: ntbasedef.h:488
_NullNull_terminated_ CONST CHAR * PCZZSTR
Definition: ntbasedef.h:400
PROCESSOR_NUMBER
Definition: ntbasedef.h:642
COMPARTMENT_ID
Definition: ntbasedef.h:515
@ UNSPECIFIED_COMPARTMENT_ID
Definition: ntbasedef.h:516
@ DEFAULT_COMPARTMENT_ID
Definition: ntbasedef.h:517
struct _GROUP_AFFINITY GROUP_AFFINITY
CONST CHAR * PCCH
Definition: ntbasedef.h:392
_Null_terminated_ CONST PSTR * PCZPSTR
Definition: ntbasedef.h:395
__GNU_EXTENSION typedef __int64 * PLONGLONG
Definition: ntbasedef.h:382
char CHAR
Definition: ntbasedef.h:336
#define __GNU_EXTENSION
Definition: ntbasedef.h:11
_IRQL_requires_same_ _In_ PVOID _Inout_ struct _CONTEXT _In_ PVOID DispatcherContext
Definition: ntbasedef.h:655
ULONGLONG * PDWORDLONG
Definition: ntbasedef.h:385
#define _ANONYMOUS_STRUCT
Definition: ntbasedef.h:56
char CCHAR
Definition: ntbasedef.h:501
_NullNull_terminated_ CONST WCHAR * PCZZWSTR
Definition: ntbasedef.h:421
* PSINGLE_LIST_ENTRY32
Definition: ntbasedef.h:635
WCHAR * PWCHAR
Definition: ntbasedef.h:410
_Null_terminated_ PCSTR * PZPCSTR
Definition: ntbasedef.h:397
_In_opt_ PENTER_STATE_SYSTEM_HANDLER _In_opt_ PVOID _In_ LONG _In_opt_ LONG volatile * Number
Definition: ntpoapi.h:207
#define CONST
Definition: pedump.c:81
short SHORT
Definition: pedump.c:59
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
DWORD LCID
Definition: nls.h:13
$if(_WDMDDK_) typedef struct _KFLOATING_SAVE
Definition: ke.h:1
$endif(_WDMDDK_) $if(_NTDDK_) typedef struct _NEON128
Definition: ke.h:202
signed char SCHAR
Definition: sqltypes.h:14
$ULONG Blink
Definition: ntbasedef.h:619
$ULONG Flink
Definition: ntbasedef.h:618
ULONGLONG Blink
Definition: ntbasedef.h:624
ULONGLONG Flink
Definition: ntbasedef.h:623
__int64 HighPart
Definition: ntbasedef.h:540
__int64 LowPart
Definition: ntbasedef.h:539
$USHORT Group
Definition: ntbasedef.h:661
KAFFINITY Mask
Definition: ntbasedef.h:660
Definition: typedefs.h:120
$ULONG LowPart
Definition: ntbasedef.h:588
GUID Lineage
Definition: ntbasedef.h:524
$ULONG Uniquifier
Definition: ntbasedef.h:525
Definition: ntbasedef.h:628
struct _SINGLE_LIST_ENTRY * Next
Definition: ntbasedef.h:629
$ULONG LowPart
Definition: ntbasedef.h:569
$ULONG HighPart
Definition: ntbasedef.h:570
#define LIST_ENTRY(type)
Definition: queue.h:175
uint16_t * PWSTR
Definition: typedefs.h:56
uint32_t * PULONG
Definition: typedefs.h:59
char * PSTR
Definition: typedefs.h:51
const uint16_t * PCWSTR
Definition: typedefs.h:57
unsigned char * PBOOLEAN
Definition: typedefs.h:53
struct _LIST_ENTRY * PLIST_ENTRY
int64_t LONGLONG
Definition: typedefs.h:68
int16_t * PSHORT
Definition: typedefs.h:55
#define NTAPI
Definition: typedefs.h:36
uint16_t * PUSHORT
Definition: typedefs.h:56
const char * PCSTR
Definition: typedefs.h:52
int32_t * PLONG
Definition: typedefs.h:58
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
uint64_t ULONGLONG
Definition: typedefs.h:67
double DOUBLE
Definition: typedefs.h:70
char CCHAR
Definition: typedefs.h:51
#define _NTDEF_
Definition: umtypes.h:20
LONGLONG QuadPart
Definition: typedefs.h:114
struct _LARGE_INTEGER::@2295 u
$ULONG LowPart
Definition: ntbasedef.h:551
ULONG LowPart
Definition: typedefs.h:106
_ANONYMOUS_STRUCT struct _LARGE_INTEGER::@4137 DUMMYSTRUCTNAME
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
char * PSZ
Definition: windef.h:57
#define _WINNT_
ret QuadPart
Definition: rtlfuncs.h:3089
const char * LPCSTR
Definition: xmlstorage.h:183
char * LPSTR
Definition: xmlstorage.h:182
unsigned char UCHAR
Definition: xmlstorage.h:181
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
char CHAR
Definition: xmlstorage.h:175