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