headers/ntdef.h: add missing symbols from reactos
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Liu Hao <lh_mouse@126.com>
diff --git a/mingw-w64-headers/include/ntdef.h b/mingw-w64-headers/include/ntdef.h
index e3e29e7..e847024 100644
--- a/mingw-w64-headers/include/ntdef.h
+++ b/mingw-w64-headers/include/ntdef.h
@@ -48,6 +48,7 @@
#include <basetsd.h>
#include <excpt.h>
#include <sdkddkver.h>
+#include <specstrings.h>
/* FIXME: Shouldn't be included! */
#include <stdarg.h>
@@ -489,6 +490,31 @@
#define UNICODE_NULL ((WCHAR)0)
+#define UNICODE_STRING_MAX_BYTES ((USHORT) 65534)
+#define UNICODE_STRING_MAX_CHARS (32767)
+
+#ifdef _MSC_VER
+#define DECLARE_UNICODE_STRING_SIZE(_var, _size) \
+ WCHAR _var ## _buffer[_size]; \
+ __pragma(warning(push)) __pragma(warning(disable:4221)) __pragma(warning(disable:4204)) \
+ UNICODE_STRING _var = { 0, (_size) * sizeof(WCHAR) , _var ## _buffer } \
+ __pragma(warning(pop))
+
+#define DECLARE_CONST_UNICODE_STRING(_var, _string) \
+ const WCHAR _var##_buffer[] = _string; \
+ __pragma(warning(push)) __pragma(warning(disable:4221)) __pragma(warning(disable:4204)) \
+ const UNICODE_STRING _var = { sizeof(_string) - sizeof(WCHAR), sizeof(_string), (PWCH)_var##_buffer } \
+ __pragma(warning(pop))
+#else
+#define DECLARE_UNICODE_STRING_SIZE(_var, _size) \
+ WCHAR _var ## _buffer[_size]; \
+ UNICODE_STRING _var = { 0, (_size) * sizeof(WCHAR) , _var ## _buffer }
+
+#define DECLARE_CONST_UNICODE_STRING(_var, _string) \
+ const WCHAR _var##_buffer[] = _string; \
+ const UNICODE_STRING _var = { sizeof(_string) - sizeof(WCHAR), sizeof(_string), (PWCH)_var##_buffer }
+#endif
+
typedef struct _CSTRING {
USHORT Length;
USHORT MaximumLength;
@@ -512,6 +538,8 @@
typedef CONST STRING* PCOEM_STRING;
typedef STRING CANSI_STRING;
typedef PSTRING PCANSI_STRING;
+typedef STRING UTF8_STRING;
+typedef PSTRING PUTF8_STRING;
typedef struct _STRING32 {
USHORT Length;
@@ -560,6 +588,26 @@
#endif
typedef CONST OBJECT_ATTRIBUTES *PCOBJECT_ATTRIBUTES;
+typedef struct _OBJECT_ATTRIBUTES64 {
+ ULONG Length;
+ ULONG64 RootDirectory;
+ ULONG64 ObjectName;
+ ULONG Attributes;
+ ULONG64 SecurityDescriptor;
+ ULONG64 SecurityQualityOfService;
+} OBJECT_ATTRIBUTES64, *POBJECT_ATTRIBUTES64;
+typedef CONST OBJECT_ATTRIBUTES64 *PCOBJECT_ATTRIBUTES64;
+
+typedef struct _OBJECT_ATTRIBUTES32 {
+ ULONG Length;
+ ULONG RootDirectory;
+ ULONG ObjectName;
+ ULONG Attributes;
+ ULONG SecurityDescriptor;
+ ULONG SecurityQualityOfService;
+} OBJECT_ATTRIBUTES32, *POBJECT_ATTRIBUTES32;
+typedef CONST OBJECT_ATTRIBUTES32 *PCOBJECT_ATTRIBUTES32;
+
/* Values for the Attributes member */
#define OBJ_INHERIT 0x00000002
#define OBJ_PERMANENT 0x00000010
@@ -569,7 +617,9 @@
#define OBJ_OPENLINK 0x00000100
#define OBJ_KERNEL_HANDLE 0x00000200
#define OBJ_FORCE_ACCESS_CHECK 0x00000400
-#define OBJ_VALID_ATTRIBUTES 0x000007F2
+#define OBJ_IGNORE_IMPERSONATED_DEVICEMAP 0x00000800
+#define OBJ_DONT_REPARSE 0x00001000
+#define OBJ_VALID_ATTRIBUTES 0x00001FF2
/* Helper Macro */
#define InitializeObjectAttributes(p,n,a,r,s) { \
@@ -581,6 +631,9 @@
(p)->SecurityQualityOfService = NULL; \
}
+#define RTL_CONSTANT_OBJECT_ATTRIBUTES(n, a) { sizeof(OBJECT_ATTRIBUTES), NULL, RTL_CONST_CAST(PUNICODE_STRING)(n), a, NULL, NULL }
+#define RTL_INIT_OBJECT_ATTRIBUTES(n, a) RTL_CONSTANT_OBJECT_ATTRIBUTES(n, a)
+
/* Product Types */
typedef enum _NT_PRODUCT_TYPE {
NtProductWinNt = 1,
@@ -623,12 +676,38 @@
} LIST_ENTRY64, *PLIST_ENTRY64;
/* Singly Linked Lists */
+typedef struct _SINGLE_LIST_ENTRY32 {
+ ULONG Next;
+} SINGLE_LIST_ENTRY32, *PSINGLE_LIST_ENTRY32;
+
typedef struct _SINGLE_LIST_ENTRY {
struct _SINGLE_LIST_ENTRY *Next;
} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
#endif /* _LIST_ENTRY_DEFINED */
+typedef struct _RTL_BALANCED_NODE {
+ __C89_NAMELESS union {
+ struct _RTL_BALANCED_NODE *Children[2];
+ __C89_NAMELESS struct {
+ struct _RTL_BALANCED_NODE *Left;
+ struct _RTL_BALANCED_NODE *Right;
+ };
+ };
+
+#define RTL_BALANCED_NODE_RESERVED_PARENT_MASK 3
+
+ __C89_NAMELESS union {
+ UCHAR Red : 1;
+ UCHAR Balance : 2;
+ ULONG_PTR ParentValue;
+ };
+} RTL_BALANCED_NODE, *PRTL_BALANCED_NODE;
+
+#define RTL_BALANCED_NODE_GET_PARENT_POINTER(Node) ((PRTL_BALANCED_NODE)((Node)->ParentValue & ~RTL_BALANCED_NODE_RESERVED_PARENT_MASK))
+
+#define ALL_PROCESSOR_GROUPS 0xffff
+
#ifndef ___PROCESSOR_NUMBER_DEFINED
#define ___PROCESSOR_NUMBER_DEFINED
typedef struct _PROCESSOR_NUMBER {
@@ -660,6 +739,14 @@
} GROUP_AFFINITY, *PGROUP_AFFINITY;
#endif /* !___GROUP_AFFINITY_DEFINED */
+#ifndef _DEFINED__WNF_STATE_NAME
+#define _DEFINED__WNF_STATE_NAME
+typedef struct _WNF_STATE_NAME {
+ ULONG Data[2];
+} WNF_STATE_NAME, *PWNF_STATE_NAME;
+typedef const WNF_STATE_NAME *PCWNF_STATE_NAME;
+#endif
+
/* Helper Macros */
#define RTL_FIELD_TYPE(type, field) (((type*)0)->field)
#define RTL_BITS_OF(sizeOfArg) (sizeof(sizeOfArg) * 8)
@@ -683,6 +770,9 @@
#define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V1(A)
#endif
#define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A)
+#define _ARRAYSIZE(A) RTL_NUMBER_OF_V1(A)
+
+#define RTL_NUMBER_OF_FIELD(type, field) (RTL_NUMBER_OF(RTL_FIELD_TYPE(type, field)))
/* Type Limits */
#define MINCHAR 0x80
@@ -724,6 +814,7 @@
#define VER_SUITE_STORAGE_SERVER 0x00002000
#define VER_SUITE_COMPUTE_SERVER 0x00004000
#define VER_SUITE_WH_SERVER 0x00008000
+#define VER_SUITE_MULTIUSERTS 0x00020000
/* Primary language IDs. */
#define LANG_NEUTRAL 0x00