Merge winnt.h
[reactos.git] / reactos / include / psdk / winnt.h
index d3772d3..f856b07 100644 (file)
@@ -106,7 +106,7 @@ extern "C" {
 #endif
 typedef char CHAR;
 typedef short SHORT;
-#ifndef __ROS_LONG64__
+#if !defined(__ROS_LONG64__) || defined(_M_AMD64)
 typedef long LONG;
 #else
 typedef int LONG;
@@ -226,12 +226,7 @@ typedef BYTE FCHAR;
 typedef WORD FSHORT;
 typedef DWORD FLONG;
 
-#define __C_ASSERT_JOIN(X, Y) __C_ASSERT_DO_JOIN(X, Y)
-#define __C_ASSERT_DO_JOIN(X, Y) __C_ASSERT_DO_JOIN2(X, Y)
-#define __C_ASSERT_DO_JOIN2(X, Y) X##Y
-
-#define C_ASSERT(e) typedef char __C_ASSERT_JOIN(__C_ASSERT__, __LINE__)[(e) ? 1 : -1]
-
+#define C_ASSERT(expr) extern char (*c_assert(void)) [(expr) ? 1 : -1]
 
 #include "intrin.h"
 
@@ -405,7 +400,7 @@ typedef DWORD FLONG;
 #define FILE_CREATE_TREE_CONNECTION    0x00000080
 #define FILE_COMPLETE_IF_OPLOCKED      0x00000100
 #define FILE_NO_EA_KNOWLEDGE           0x00000200
-#define FILE_OPEN_FOR_RECOVERY         0x00000400
+#define FILE_OPEN_REMOTE_INSTANCE      0x00000400
 #define FILE_RANDOM_ACCESS             0x00000800
 #define FILE_DELETE_ON_CLOSE           0x00001000
 #define FILE_OPEN_BY_FILE_ID           0x00002000
@@ -1129,6 +1124,7 @@ typedef enum {
 #define LANG_SYSTEM_DEFAULT    MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT)
 #define LANG_USER_DEFAULT      MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT)
 #define LOCALE_NEUTRAL MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT)
+#define LOCALE_INVARIANT MAKELCID(MAKELANGID(LANG_INVARIANT, SUBLANG_NEUTRAL), SORT_DEFAULT)
 #define ACL_REVISION   2
 #define ACL_REVISION_DS 4
 #define ACL_REVISION1 1
@@ -3235,24 +3231,69 @@ typedef struct _LIST_ENTRY {
        struct _LIST_ENTRY *Flink;
        struct _LIST_ENTRY *Blink;
 } LIST_ENTRY,*PLIST_ENTRY;
+typedef struct _LIST_ENTRY32 {
+       DWORD Flink;
+       DWORD Blink;
+} LIST_ENTRY32,*PLIST_ENTRY32;
+typedef struct _LIST_ENTRY64 {
+       ULONGLONG Flink;
+       ULONGLONG Blink;
+} LIST_ENTRY64,*PLIST_ENTRY64;
+
 typedef struct _SINGLE_LIST_ENTRY {
        struct _SINGLE_LIST_ENTRY *Next;
 } SINGLE_LIST_ENTRY,*PSINGLE_LIST_ENTRY;
 
+//
+// Slist Header
+//
 #ifndef _SLIST_HEADER_
 #define _SLIST_HEADER_
+
+#if defined(_WIN64)
+typedef struct _SLIST_ENTRY *PSLIST_ENTRY;
+typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY {
+       PSLIST_ENTRY Next;
+} SLIST_ENTRY;
+typedef union DECLSPEC_ALIGN(16) _SLIST_HEADER {
+    struct {
+        ULONGLONG Alignment;
+        ULONGLONG Region;
+    } DUMMYSTRUCTNAME;
+    struct {
+        ULONGLONG Depth:16;
+        ULONGLONG Sequence:9;
+        ULONGLONG NextEntry:39;
+        ULONGLONG HeaderType:1;
+        ULONGLONG Init:1;
+        ULONGLONG Reserved:59;
+        ULONGLONG Region:3;
+    } Header8;
+    struct {
+        ULONGLONG Depth:16;
+        ULONGLONG Sequence:48;
+        ULONGLONG HeaderType:1;
+        ULONGLONG Init:1;
+        ULONGLONG Reserved:2;
+        ULONGLONG NextEntry:60;
+    } Header16;
+} SLIST_HEADER, *PSLIST_HEADER;
+#else
 #define SLIST_ENTRY SINGLE_LIST_ENTRY
 #define _SLIST_ENTRY _SINGLE_LIST_ENTRY
 #define PSLIST_ENTRY PSINGLE_LIST_ENTRY
 typedef union _SLIST_HEADER {
-       ULONGLONG Alignment;
-       _ANONYMOUS_STRUCT struct {
-               SLIST_ENTRY Next;
-               WORD Depth;
-               WORD Sequence;
-       } DUMMYSTRUCTNAME;
-} SLIST_HEADER,*PSLIST_HEADER;
-#endif /* !_SLIST_HEADER_ */
+    ULONGLONG Alignment;
+    struct {
+        SLIST_ENTRY Next;
+        USHORT Depth;
+        USHORT Sequence;
+    } DUMMYSTRUCTNAME;
+} SLIST_HEADER, *PSLIST_HEADER;
+#endif
+
+#endif /* _SLIST_HEADER_ */
+
 
 NTSYSAPI
 VOID
@@ -3370,6 +3411,12 @@ typedef LONG
     struct _EXCEPTION_POINTERS *ExceptionInfo
 );
 
+typedef struct _GROUP_AFFINITY {
+  KAFFINITY Mask;
+  WORD Group;
+  WORD Reserved[3];
+} GROUP_AFFINITY, *PGROUP_AFFINITY;
+
 typedef struct _EVENTLOGRECORD {
        DWORD Length;
        DWORD Reserved;
@@ -4121,6 +4168,32 @@ typedef struct _NT_TIB {
        struct _NT_TIB *Self;
 } NT_TIB,*PNT_TIB;
 
+typedef struct _NT_TIB32 {
+       DWORD ExceptionList;
+       DWORD StackBase;
+       DWORD StackLimit;
+       DWORD SubSystemTib;
+       union {
+               DWORD FiberData;
+               DWORD Version;
+       };
+       DWORD ArbitraryUserPointer;
+       DWORD Self;
+} NT_TIB32,*PNT_TIB32;
+
+typedef struct _NT_TIB64 {
+       DWORD64 ExceptionList;
+       DWORD64 StackBase;
+       DWORD64 StackLimit;
+       DWORD64 SubSystemTib;
+       union {
+               DWORD64 FiberData;
+               DWORD Version;
+       };
+       DWORD64 ArbitraryUserPointer;
+       DWORD64 Self;
+} NT_TIB64,*PNT_TIB64;
+
 typedef struct _REPARSE_GUID_DATA_BUFFER {
        DWORD  ReparseTag;
        WORD   ReparseDataLength;
@@ -4614,6 +4687,8 @@ typedef OSVERSIONINFOA OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO;
 typedef OSVERSIONINFOEXA OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX;
 #endif
 
+#define VER_SET_CONDITION(lc,t,c) ((lc) = VerSetConditionMask((lc),(t),(c)))
+
 #if (_WIN32_WINNT >= 0x0500)
 ULONGLONG WINAPI VerSetConditionMask(ULONGLONG,DWORD,BYTE);
 #endif