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