Fix include of winnt.h and ntdef.h together ...


git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@3952 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-headers/include/ntdef.h b/mingw-w64-headers/include/ntdef.h
index e298abf..42e6600 100644
--- a/mingw-w64-headers/include/ntdef.h
+++ b/mingw-w64-headers/include/ntdef.h
@@ -43,7 +43,7 @@
 #include <excpt.h>
 #include <sdkddkver.h>
 
-// FIXME: Shouldn't be included!
+/* FIXME: Shouldn't be included!  */
 #include <stdarg.h>
 #include <string.h>
 
@@ -374,6 +374,8 @@
   } DUMMYUNIONNAME;
 } QUAD, *PQUAD, UQUAD, *PUQUAD;
 
+#ifndef _LARGE_INTEGER_DEFINED
+#define _LARGE_INTEGER_DEFINED
 /* Large Integer Unions */
 #if defined(MIDL_PASS)
 typedef struct _LARGE_INTEGER {
@@ -416,6 +418,8 @@
   LONG HighPart;
 } LUID, *PLUID;
 
+#endif /* _LARGE_INTEGER_DEFINED */
+
 /* Native API Return Value Macros */
 #define NT_SUCCESS(Status)              (((NTSTATUS)(Status)) >= 0)
 #define NT_INFORMATION(Status)          ((((ULONG)(Status)) >> 30) == 1)
@@ -539,6 +543,9 @@
   WaitAny
 } WAIT_TYPE;
 
+#ifndef _LIST_ENTRY_DEFINED
+#define _LIST_ENTRY_DEFINED
+
 /* Doubly Linked Lists */
 typedef struct _LIST_ENTRY {
   struct _LIST_ENTRY *Flink;
@@ -560,6 +567,8 @@
   struct _SINGLE_LIST_ENTRY *Next;
 } SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
 
+#endif /* _LIST_ENTRY_DEFINED */
+
 typedef struct _PROCESSOR_NUMBER {
   USHORT Group;
   UCHAR Number;
@@ -569,12 +578,15 @@
 struct _CONTEXT;
 struct _EXCEPTION_RECORD;
 
+#ifndef __PEXCEPTION_ROUTINE_DEFINED
+#define __PEXCEPTION_ROUTINE_DEFINED
 typedef EXCEPTION_DISPOSITION
 (NTAPI *PEXCEPTION_ROUTINE)(
   struct _EXCEPTION_RECORD *ExceptionRecord,
   PVOID EstablisherFrame,
   struct _CONTEXT *ContextRecord,
   PVOID DispatcherContext);
+#endif /* __PEXCEPTION_ROUTINE_DEFINED */
 
 typedef struct _GROUP_AFFINITY {
   KAFFINITY Mask;
diff --git a/mingw-w64-headers/include/winnt.h b/mingw-w64-headers/include/winnt.h
index 203c7e5..96caa7c 100644
--- a/mingw-w64-headers/include/winnt.h
+++ b/mingw-w64-headers/include/winnt.h
@@ -302,6 +302,9 @@
 
   typedef LONGLONG USN;
 
+#ifndef _LARGE_INTEGER_DEFINED
+#define _LARGE_INTEGER_DEFINED
+
   typedef union _LARGE_INTEGER {
     __MINGW_EXTENSION struct {
       DWORD LowPart;
@@ -335,6 +338,8 @@
     LONG HighPart;
   } LUID,*PLUID;
 
+#endif /* _LARGE_INTEGER_DEFINED */
+
 #define _DWORDLONG_
   typedef ULONGLONG DWORDLONG;
   typedef DWORDLONG *PDWORDLONG;
@@ -412,6 +417,9 @@
 #endif
   typedef BOOLEAN *PBOOLEAN;
 
+#ifndef _LIST_ENTRY_DEFINED
+#define _LIST_ENTRY_DEFINED
+
   typedef struct _LIST_ENTRY {
     struct _LIST_ENTRY *Flink;
     struct _LIST_ENTRY *Blink;
@@ -433,6 +441,8 @@
   } LIST_ENTRY64;
   typedef LIST_ENTRY64 *PLIST_ENTRY64;
 
+#endif /* _LIST_ENTRY_DEFINED */
+
 #include <guiddef.h>
 
 #ifndef __OBJECTID_DEFINED
@@ -2381,11 +2391,15 @@
   typedef struct _DISPATCHER_CONTEXT DISPATCHER_CONTEXT;
   typedef struct _DISPATCHER_CONTEXT *PDISPATCHER_CONTEXT;
 
-  typedef EXCEPTION_DISPOSITION (*PEXCEPTION_ROUTINE)
+#ifndef __PEXCEPTION_ROUTINE_DEFINED
+#define __PEXCEPTION_ROUTINE_DEFINED
+
+  typedef EXCEPTION_DISPOSITION (NTAPI *PEXCEPTION_ROUTINE)
     (PEXCEPTION_RECORD ExceptionRecord,
      ULONG64 EstablisherFrame,
      PCONTEXT ContextRecord,
      PDISPATCHER_CONTEXT DispatcherContext);
+#endif /* __PEXCEPTION_ROUTINE_DEFINED */
 
   struct _DISPATCHER_CONTEXT {
     ULONG64 ControlPc;
diff --git a/mingw-w64-headers/include/winternl.h b/mingw-w64-headers/include/winternl.h
index 767d069..832479f 100644
--- a/mingw-w64-headers/include/winternl.h
+++ b/mingw-w64-headers/include/winternl.h
@@ -100,9 +100,15 @@
 
   typedef struct _OBJECT_ATTRIBUTES {
     ULONG Length;
+#ifdef _WIN64
+    ULONG pad1;
+#endif
     HANDLE RootDirectory;
     PUNICODE_STRING ObjectName;
     ULONG Attributes;
+#ifdef _WIN64
+    ULONG pad2;
+#endif
     PVOID SecurityDescriptor;
     PVOID SecurityQualityOfService;
   } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
@@ -709,8 +715,26 @@
   } PROCESSINFOCLASS;
 
   typedef enum _THREADINFOCLASS {
-    ThreadIsIoPending = 16
+     ThreadBasicInformation,
+     ThreadTimes,
+     ThreadPriority,
+     ThreadBasePriority,
+     ThreadAffinityMask,
+     ThreadImpersonationToken,
+     ThreadDescriptorTableEntry,
+     ThreadEnableAlignmentFaultFixup,
+     ThreadEventPair,
+     ThreadQuerySetWin32StartAddress,
+     ThreadZeroTlsCell,
+     ThreadPerformanceCount,
+     ThreadAmILastThread,
+     ThreadIdealProcessor,
+     ThreadPriorityBoost,
+     ThreadSetTlsArrayAddress,
+     ThreadIsIoPending,
+     ThreadHideFromDebugger
   } THREADINFOCLASS;
+  typedef THREADINFOCLASS THREAD_INFORMATION_CLASS, *PTHREAD_INFORMATION_CLASS;
 
   typedef enum _SYSTEM_INFORMATION_CLASS {
     SystemBasicInformation = 0,SystemProcessorInformation = 1,SystemPerformanceInformation = 2,SystemTimeOfDayInformation = 3,SystemProcessInformation = 5,