[PSDK]
[reactos.git] / reactos / include / psdk / winnt.h
index fa1dcc2..039cf60 100644 (file)
-#ifndef _WINNT_H
-#define _WINNT_H
+#ifndef _WINNT_
+#define _WINNT_
 
-#ifndef _M_AMD64
 #if !defined(__ROS_LONG64__)
 #ifdef __WINESRC__
 #define __ROS_LONG64__
 #endif
 #endif
-#endif
 
 #ifdef __GNUC__
 #include <msvctarget.h>
 #endif
 
-#if defined(_M_IX86) && !defined(_X86_)
-#define _X86_
-#elif defined(_M_ALPHA) && !defined(_ALPHA_)
-#define _ALPHA_
-#elif defined(_M_ARM) && !defined(_ARM_)
-#define _ARM_
-#elif defined(_M_PPC) && !defined(_PPC_)
-#define _PPC_
-#elif defined(_M_MRX000) && !defined(_MIPS_)
-#define _MIPS_
-#elif defined(_M_M68K) && !defined(_68K_)
-#define _68K_
+#ifndef __ANONYMOUS_DEFINED
+#define __ANONYMOUS_DEFINED
+#ifndef NONAMELESSUNION
+#ifdef __GNUC__
+#define _ANONYMOUS_UNION __extension__
+#define _ANONYMOUS_STRUCT __extension__
+#elif defined(__WATCOMC__) || defined(_MSC_VER)
+#define _ANONYMOUS_UNION
+#define _ANONYMOUS_STRUCT
+#endif /* __GNUC__/__WATCOMC__ */
+#endif /* NONAMELESSUNION */
+#ifndef _ANONYMOUS_UNION
+#define _ANONYMOUS_UNION
+#define _UNION_NAME(x) x
+#define DUMMYUNIONNAME u
+#define DUMMYUNIONNAME1        u1
+#define DUMMYUNIONNAME2        u2
+#define DUMMYUNIONNAME3        u3
+#define DUMMYUNIONNAME4        u4
+#define DUMMYUNIONNAME5        u5
+#define DUMMYUNIONNAME6        u6
+#define DUMMYUNIONNAME7        u7
+#define DUMMYUNIONNAME8        u8
+#else
+#define _UNION_NAME(x)
+#define DUMMYUNIONNAME
+#define DUMMYUNIONNAME1
+#define DUMMYUNIONNAME2
+#define DUMMYUNIONNAME3
+#define DUMMYUNIONNAME4
+#define DUMMYUNIONNAME5
+#define DUMMYUNIONNAME6
+#define DUMMYUNIONNAME7
+#define DUMMYUNIONNAME8
 #endif
+#ifndef _ANONYMOUS_STRUCT
+#define _ANONYMOUS_STRUCT
+#define _STRUCT_NAME(x) x
+#define DUMMYSTRUCTNAME        s
+#define DUMMYSTRUCTNAME1 s1
+#define DUMMYSTRUCTNAME2 s2
+#define DUMMYSTRUCTNAME3 s3
+#define DUMMYSTRUCTNAME4 s4
+#define DUMMYSTRUCTNAME5 s5
+#else
+#define _STRUCT_NAME(x)
+#define DUMMYSTRUCTNAME
+#define DUMMYSTRUCTNAME1
+#define DUMMYSTRUCTNAME2
+#define DUMMYSTRUCTNAME3
+#define DUMMYSTRUCTNAME4
+#define DUMMYSTRUCTNAME5
+#endif
+#endif /* __ANONYMOUS_DEFINED */
+
+#undef __C89_NAMELESS
+#undef __C89_NAMELESSSTRUCTNAME
+#undef __C89_NAMELESSSTRUCTNAME1
+#undef __C89_NAMELESSSTRUCTNAME2
+#undef __C89_NAMELESSSTRUCTNAME3
+#undef __C89_NAMELESSSTRUCTNAME4
+#undef __C89_NAMELESSSTRUCTNAME5
+#undef __C89_NAMELESSUNIONNAME
+#undef __C89_NAMELESSUNIONNAME1
+#undef __C89_NAMELESSUNIONNAME2
+#undef __C89_NAMELESSUNIONNAME3
+#undef __C89_NAMELESSUNIONNAME4
+#undef __C89_NAMELESSUNIONNAME5
+#undef __C89_NAMELESSUNIONNAME6
+#undef __C89_NAMELESSUNIONNAME7
+#undef __C89_NAMELESSUNIONNAME8
+
+#if !defined(__WINESRC__) && !defined(WINE_NO_NAMELESS_EXTENSION)
+# ifdef __GNUC__
+   /* Anonymous structs support starts with gcc 2.96/g++ 2.95 */
+#  if (__GNUC__ > 2) || ((__GNUC__ == 2) && ((__GNUC_MINOR__ > 95) || ((__GNUC_MINOR__ == 95) && defined(__cplusplus))))
+#   define __C89_NAMELESS __extension__
+#  endif
+# elif defined(_MSC_VER)
+#  define __C89_NAMELESS
+# endif
+#endif
+
+#ifdef __C89_NAMELESS
+#  define __C89_NAMELESSSTRUCTNAME
+#  define __C89_NAMELESSSTRUCTNAME1
+#  define __C89_NAMELESSSTRUCTNAME2
+#  define __C89_NAMELESSSTRUCTNAME3
+#  define __C89_NAMELESSSTRUCTNAME4
+#  define __C89_NAMELESSSTRUCTNAME5
+#  define __C89_NAMELESSUNIONNAME
+#  define __C89_NAMELESSUNIONNAME1
+#  define __C89_NAMELESSUNIONNAME2
+#  define __C89_NAMELESSUNIONNAME3
+#  define __C89_NAMELESSUNIONNAME4
+#  define __C89_NAMELESSUNIONNAME5
+#  define __C89_NAMELESSUNIONNAME6
+#  define __C89_NAMELESSUNIONNAME7
+#  define __C89_NAMELESSUNIONNAME8
+#else
+#  define __C89_NAMELESS
+#  define __C89_NAMELESSSTRUCTNAME DUMMYSTRUCTNAME
+#  define __C89_NAMELESSSTRUCTNAME1 DUMMYSTRUCTNAME1
+#  define __C89_NAMELESSSTRUCTNAME2 DUMMYSTRUCTNAME2
+#  define __C89_NAMELESSSTRUCTNAME3 DUMMYSTRUCTNAME3
+#  define __C89_NAMELESSSTRUCTNAME4 DUMMYSTRUCTNAME4
+#  define __C89_NAMELESSSTRUCTNAME5 DUMMYSTRUCTNAME5
+#  define __C89_NAMELESSUNIONNAME DUMMYUNIONNAME
+#  define __C89_NAMELESSUNIONNAME1 DUMMYUNIONNAME1
+#  define __C89_NAMELESSUNIONNAME2 DUMMYUNIONNAME2
+#  define __C89_NAMELESSUNIONNAME3 DUMMYUNIONNAME3
+#  define __C89_NAMELESSUNIONNAME4 DUMMYUNIONNAME4
+#  define __C89_NAMELESSUNIONNAME5 DUMMYUNIONNAME5
+#  define __C89_NAMELESSUNIONNAME6 DUMMYUNIONNAME6
+#  define __C89_NAMELESSUNIONNAME7 DUMMYUNIONNAME7
+#  define __C89_NAMELESSUNIONNAME8 DUMMYUNIONNAME8
+#endif
+
+#define UNREFERENCED_PARAMETER(P) {(P)=(P);}
+#define UNREFERENCED_LOCAL_VARIABLE(L) ((void)(L))
+#define DBG_UNREFERENCED_PARAMETER(P) {(P)=(P);}
+#define DBG_UNREFERENCED_LOCAL_VARIABLE(L) ((void)(L))
 
 #ifndef DECLSPEC_ALIGN
 # if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS)
 # endif
 #endif
 
+#ifndef NOP_FUNCTION
+#if (_MSC_VER >= 1210)
+#define NOP_FUNCTION __noop
+#else
+#define NOP_FUNCTION (void)0
+#endif
+#endif
+
 # define DECLSPEC_HIDDEN
 
 #ifdef __cplusplus
@@ -57,13 +172,57 @@ extern "C" {
 #ifndef RC_INVOKED
 #include <string.h>
 
-/* FIXME: add more architectures. Is there a way to specify this in GCC? */
-#if defined(_M_AMD64)
-#undef UNALIGNED
+#if defined(_M_MRX000) || defined(_M_ALPHA) || defined(_M_PPC) || defined(_M_IA64) || defined(_M_AMD64)
+#define ALIGNMENT_MACHINE
 #define UNALIGNED __unaligned
+#if defined(_WIN64)
+#define UNALIGNED64 __unaligned
+#else
+#define UNALIGNED64
+#endif
 #else
-#undef UNALIGNED
+#undef ALIGNMENT_MACHINE
 #define UNALIGNED
+#define UNALIGNED64
+#endif
+
+#if defined(_WIN64) || defined(_M_ALPHA)
+#define MAX_NATURAL_ALIGNMENT sizeof(ULONGLONG)
+#define MEMORY_ALLOCATION_ALIGNMENT 16
+#else
+#define MAX_NATURAL_ALIGNMENT sizeof(ULONG)
+#define MEMORY_ALLOCATION_ALIGNMENT 8
+#endif
+
+/* Returns the type's alignment */
+#if defined(_MSC_VER) && (_MSC_VER >= 1300)
+#define TYPE_ALIGNMENT(t) __alignof(t)
+#else
+#define TYPE_ALIGNMENT(t) FIELD_OFFSET(struct { char x; t test; }, test)
+#endif
+
+#if defined(_AMD64_) || defined(_X86_)
+#define PROBE_ALIGNMENT(_s) TYPE_ALIGNMENT(ULONG)
+#elif defined(_IA64_) || defined(_ARM_)
+#define PROBE_ALIGNMENT(_s) max((TYPE_ALIGNMENT(_s), TYPE_ALIGNMENT(ULONG))
+#else
+#error "unknown architecture"
+#endif
+
+#ifndef DECLSPEC_NOVTABLE
+# if defined(_MSC_VER) && (_MSC_VER >= 1100) && defined(__cplusplus)
+#  define DECLSPEC_NOVTABLE __declspec(novtable)
+# else
+#  define DECLSPEC_NOVTABLE
+# endif
+#endif
+
+#ifndef DECLSPEC_SELECTANY
+#if (_MSC_VER >= 1100) || defined(__GNUC__)
+#define DECLSPEC_SELECTANY __declspec(selectany)
+#else
+#define DECLSPEC_SELECTANY
+#endif
 #endif
 
 #ifndef DECLSPEC_ADDRSAFE
@@ -88,7 +247,11 @@ extern "C" {
 #elif (_MSC_VER)
 #define FORCEINLINE __inline
 #else
-#define FORCEINLINE static __inline__ __attribute__((always_inline))
+# if ( __MINGW_GNUC_PREREQ(4, 3)  &&  __STDC_VERSION__ >= 199901L)
+#  define FORCEINLINE extern inline __attribute__((__always_inline__,__gnu_inline__))
+# else
+#  define FORCEINLINE extern __inline__ __attribute__((__always_inline__))
+# endif
 #endif
 #endif
 
@@ -143,19 +306,47 @@ typedef void* __ptr64 PVOID64;
 #define STDMETHODIMPV           HRESULT STDMETHODVCALLTYPE
 #define STDMETHODIMPV_(type)    type STDMETHODVCALLTYPE
 
+/* C99 restrict support */
+#if defined(ENABLE_RESTRICTED) && !defined(MIDL_PASS) && !defined(RC_INVOKED)
+  #if defined(_MSC_VER) && defined(_M_MRX000)
+    #define RESTRICTED_POINTER __restrict
+  #elif defined(__GNUC__) && ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 95)))
+    #define RESTRICTED_POINTER __restrict
+  #else
+    #define RESTRICTED_POINTER
+  #endif
+#else
+  #define RESTRICTED_POINTER
+#endif
+
 typedef wchar_t WCHAR;
-typedef WCHAR *PWCHAR,*LPWCH,*PWCH,*NWPSTR,*LPWSTR,*PWSTR;
-typedef CONST WCHAR *LPCWCH,*PCWCH,*LPCWSTR,*PCWSTR;
-typedef CHAR *PCHAR,*LPCH,*PCH,*NPSTR,*LPSTR,*PSTR;
-typedef CONST CHAR *LPCCH,*PCCH,*PCSTR,*LPCSTR;
-typedef PWSTR *PZPWSTR;
-typedef CONST PWSTR *PCZPWSTR;
-typedef WCHAR UNALIGNED *LPUWSTR,*PUWSTR;
-typedef PCWSTR *PZPCWSTR;
-typedef CONST WCHAR UNALIGNED *LPCUWSTR,*PCUWSTR;
-typedef PSTR *PZPSTR;
-typedef CONST PSTR *PCZPSTR;
-typedef PCSTR *PZPCSTR;
+
+typedef _Null_terminated_ WCHAR *NWPSTR, *LPWSTR, *PWSTR;
+typedef _Null_terminated_ PWSTR *PZPWSTR;
+typedef _Null_terminated_ CONST PWSTR *PCZPWSTR;
+typedef _Null_terminated_ WCHAR UNALIGNED *LPUWSTR, *PUWSTR;
+typedef _Null_terminated_ CONST WCHAR *LPCWSTR, *PCWSTR;
+typedef _Null_terminated_ PCWSTR *PZPCWSTR;
+typedef _Null_terminated_ CONST WCHAR UNALIGNED *LPCUWSTR, *PCUWSTR;
+
+typedef _NullNull_terminated_ WCHAR *PZZWSTR;
+typedef _NullNull_terminated_ CONST WCHAR *PCZZWSTR;
+typedef _NullNull_terminated_ WCHAR UNALIGNED *PUZZWSTR;
+typedef _NullNull_terminated_ CONST WCHAR UNALIGNED *PCUZZWSTR;
+
+typedef WCHAR *PWCHAR, *LPWCH, *PWCH;
+typedef CONST WCHAR *LPCWCH, *PCWCH;
+typedef CHAR *PCHAR, *LPCH, *PCH;
+typedef CONST CHAR *LPCCH, *PCCH;
+
+typedef _Null_terminated_ CHAR *NPSTR, *LPSTR, *PSTR;
+typedef _Null_terminated_ PSTR *PZPSTR;
+typedef _Null_terminated_ CONST PSTR *PCZPSTR;
+typedef _Null_terminated_ CONST CHAR *LPCSTR, *PCSTR;
+typedef _Null_terminated_ PCSTR *PZPCSTR;
+
+typedef _NullNull_terminated_ CHAR *PZZSTR;
+typedef _NullNull_terminated_ CONST CHAR *PCZZSTR;
 
 #ifdef UNICODE
 #ifndef _TCHAR_DEFINED
@@ -223,6 +414,8 @@ typedef LONGLONG USN;
 #endif
 #define ANSI_NULL ((CHAR)0)
 #define UNICODE_NULL ((WCHAR)0)
+#define UNICODE_STRING_MAX_BYTES ((USHORT) 65534)
+#define UNICODE_STRING_MAX_CHARS (32767)
 typedef BYTE BOOLEAN,*PBOOLEAN;
 #endif
 typedef BYTE FCHAR;
@@ -231,6 +424,15 @@ typedef DWORD FLONG;
 
 #define C_ASSERT(expr) extern char (*c_assert(void)) [(expr) ? 1 : -1]
 
+/* Eliminate Microsoft C/C++ compiler warning 4715 */
+#if defined(_MSC_VER) && (_MSC_VER > 1200)
+# define DEFAULT_UNREACHABLE default: __assume(0)
+#elif defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5))))
+# define DEFAULT_UNREACHABLE default: __builtin_unreachable()
+#else
+# define DEFAULT_UNREACHABLE default: break
+#endif
+
 #include "intrin.h"
 
 #define NTAPI __stdcall
@@ -250,6 +452,22 @@ typedef DWORD FLONG;
 #define ERROR_SEVERITY_INFORMATIONAL 0x40000000
 #define ERROR_SEVERITY_WARNING       0x80000000
 #define ERROR_SEVERITY_ERROR         0xC0000000
+
+#ifdef __cplusplus
+#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \
+extern "C++" { \
+    inline ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a)|((int)b)); } \
+    inline ENUMTYPE operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) |= ((int)b)); } \
+    inline ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a)&((int)b)); } \
+    inline ENUMTYPE operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) &= ((int)b)); } \
+    inline ENUMTYPE operator ~ (ENUMTYPE a) { return (ENUMTYPE)(~((int)a)); } \
+    inline ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a)^((int)b)); } \
+    inline ENUMTYPE operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) ^= ((int)b)); } \
+}
+#else
+#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) /* */
+#endif
+
 /* also in ddk/ntifs.h */
 #define COMPRESSION_FORMAT_NONE         (0x0000)
 #define COMPRESSION_FORMAT_DEFAULT      (0x0001)
@@ -267,7 +485,7 @@ typedef DWORD FLONG;
 #define CONTAINER_INHERIT_ACE  2
 #define NO_PROPAGATE_INHERIT_ACE       4
 #define INHERIT_ONLY_ACE       8
-#define INHERITED_ACE  10
+#define INHERITED_ACE  16
 #define VALID_INHERIT_FLAGS    0x1F
 #define SUCCESSFUL_ACCESS_ACE_FLAG     64
 #define FAILED_ACCESS_ACE_FLAG 128
@@ -629,83 +847,89 @@ typedef DWORD FLONG;
 #define SECURITY_MANDATORY_LABEL_AUTHORITY  {0,0,0,0,0,16}
 
 typedef enum {
-    WinNullSid                                  = 0,
-    WinWorldSid                                 = 1,
-    WinLocalSid                                 = 2,
-    WinCreatorOwnerSid                          = 3,
-    WinCreatorGroupSid                          = 4,
-    WinCreatorOwnerServerSid                    = 5,
-    WinCreatorGroupServerSid                    = 6,
-    WinNtAuthoritySid                           = 7,
-    WinDialupSid                                = 8,
-    WinNetworkSid                               = 9,
-    WinBatchSid                                 = 10,
-    WinInteractiveSid                           = 11,
-    WinServiceSid                               = 12,
-    WinAnonymousSid                             = 13,
-    WinProxySid                                 = 14,
-    WinEnterpriseControllersSid                 = 15,
-    WinSelfSid                                  = 16,
-    WinAuthenticatedUserSid                     = 17,
-    WinRestrictedCodeSid                        = 18,
-    WinTerminalServerSid                        = 19,
-    WinRemoteLogonIdSid                         = 20,
-    WinLogonIdsSid                              = 21,
-    WinLocalSystemSid                           = 22,
-    WinLocalServiceSid                          = 23,
-    WinNetworkServiceSid                        = 24,
-    WinBuiltinDomainSid                         = 25,
-    WinBuiltinAdministratorsSid                 = 26,
-    WinBuiltinUsersSid                          = 27,
-    WinBuiltinGuestsSid                         = 28,
-    WinBuiltinPowerUsersSid                     = 29,
-    WinBuiltinAccountOperatorsSid               = 30,
-    WinBuiltinSystemOperatorsSid                = 31,
-    WinBuiltinPrintOperatorsSid                 = 32,
-    WinBuiltinBackupOperatorsSid                = 33,
-    WinBuiltinReplicatorSid                     = 34,
-    WinBuiltinPreWindows2000CompatibleAccessSid = 35,
-    WinBuiltinRemoteDesktopUsersSid             = 36,
-    WinBuiltinNetworkConfigurationOperatorsSid  = 37,
-    WinAccountAdministratorSid                  = 38,
-    WinAccountGuestSid                          = 39,
-    WinAccountKrbtgtSid                         = 40,
-    WinAccountDomainAdminsSid                   = 41,
-    WinAccountDomainUsersSid                    = 42,
-    WinAccountDomainGuestsSid                   = 43,
-    WinAccountComputersSid                      = 44,
-    WinAccountControllersSid                    = 45,
-    WinAccountCertAdminsSid                     = 46,
-    WinAccountSchemaAdminsSid                   = 47,
-    WinAccountEnterpriseAdminsSid               = 48,
-    WinAccountPolicyAdminsSid                   = 49,
-    WinAccountRasAndIasServersSid               = 50,
-    WinNTLMAuthenticationSid                    = 51,
-    WinDigestAuthenticationSid                  = 52,
-    WinSChannelAuthenticationSid                = 53,
-    WinThisOrganizationSid                      = 54,
-    WinOtherOrganizationSid                     = 55,
-    WinBuiltinIncomingForestTrustBuildersSid    = 56,
-    WinBuiltinPerfMonitoringUsersSid            = 57,
-    WinBuiltinPerfLoggingUsersSid               = 58,
-    WinBuiltinAuthorizationAccessSid            = 59,
-    WinBuiltinTerminalServerLicenseServersSid   = 60,
-    WinBuiltinDCOMUsersSid                      = 61,
-    WinBuiltinIUsersSid                         = 62,
-    WinIUserSid                                 = 63,
-    WinBuiltinCryptoOperatorsSid                = 64,
-    WinUntrustedLabelSid                        = 65,
-    WinLowLabelSid                              = 66,
-    WinMediumLabelSid                           = 67,
-    WinHighLabelSid                             = 68,
-    WinSystemLabelSid                           = 69,
-    WinWriteRestrictedCodeSid                   = 70,
-    WinCreatorOwnerRightsSid                    = 71,
-    WinCacheablePrincipalsGroupSid              = 72,
-    WinNonCacheablePrincipalsGroupSid           = 73,
-    WinEnterpriseReadonlyControllersSid         = 74,
-    WinAccountReadonlyControllersSid            = 75,
-    WinBuiltinEventLogReadersGroup              = 76
+  WinNullSid = 0,
+  WinWorldSid = 1,
+  WinLocalSid = 2,
+  WinCreatorOwnerSid = 3,
+  WinCreatorGroupSid = 4,
+  WinCreatorOwnerServerSid = 5,
+  WinCreatorGroupServerSid = 6,
+  WinNtAuthoritySid = 7,
+  WinDialupSid = 8,
+  WinNetworkSid = 9,
+  WinBatchSid = 10,
+  WinInteractiveSid = 11,
+  WinServiceSid = 12,
+  WinAnonymousSid = 13,
+  WinProxySid = 14,
+  WinEnterpriseControllersSid = 15,
+  WinSelfSid = 16,
+  WinAuthenticatedUserSid = 17,
+  WinRestrictedCodeSid = 18,
+  WinTerminalServerSid = 19,
+  WinRemoteLogonIdSid = 20,
+  WinLogonIdsSid = 21,
+  WinLocalSystemSid = 22,
+  WinLocalServiceSid = 23,
+  WinNetworkServiceSid = 24,
+  WinBuiltinDomainSid = 25,
+  WinBuiltinAdministratorsSid = 26,
+  WinBuiltinUsersSid = 27,
+  WinBuiltinGuestsSid = 28,
+  WinBuiltinPowerUsersSid = 29,
+  WinBuiltinAccountOperatorsSid = 30,
+  WinBuiltinSystemOperatorsSid = 31,
+  WinBuiltinPrintOperatorsSid = 32,
+  WinBuiltinBackupOperatorsSid = 33,
+  WinBuiltinReplicatorSid = 34,
+  WinBuiltinPreWindows2000CompatibleAccessSid = 35,
+  WinBuiltinRemoteDesktopUsersSid = 36,
+  WinBuiltinNetworkConfigurationOperatorsSid = 37,
+  WinAccountAdministratorSid = 38,
+  WinAccountGuestSid = 39,
+  WinAccountKrbtgtSid = 40,
+  WinAccountDomainAdminsSid = 41,
+  WinAccountDomainUsersSid = 42,
+  WinAccountDomainGuestsSid = 43,
+  WinAccountComputersSid = 44,
+  WinAccountControllersSid = 45,
+  WinAccountCertAdminsSid = 46,
+  WinAccountSchemaAdminsSid = 47,
+  WinAccountEnterpriseAdminsSid = 48,
+  WinAccountPolicyAdminsSid = 49,
+  WinAccountRasAndIasServersSid = 50,
+  WinNTLMAuthenticationSid = 51,
+  WinDigestAuthenticationSid = 52,
+  WinSChannelAuthenticationSid = 53,
+  WinThisOrganizationSid = 54,
+  WinOtherOrganizationSid = 55,
+  WinBuiltinIncomingForestTrustBuildersSid = 56,
+  WinBuiltinPerfMonitoringUsersSid = 57,
+  WinBuiltinPerfLoggingUsersSid = 58,
+  WinBuiltinAuthorizationAccessSid = 59,
+  WinBuiltinTerminalServerLicenseServersSid = 60,
+  WinBuiltinDCOMUsersSid = 61,
+  WinBuiltinIUsersSid = 62,
+  WinIUserSid = 63,
+  WinBuiltinCryptoOperatorsSid = 64,
+  WinUntrustedLabelSid = 65,
+  WinLowLabelSid = 66,
+  WinMediumLabelSid = 67,
+  WinHighLabelSid = 68,
+  WinSystemLabelSid = 69,
+  WinWriteRestrictedCodeSid = 70,
+  WinCreatorOwnerRightsSid = 71,
+  WinCacheablePrincipalsGroupSid = 72,
+  WinNonCacheablePrincipalsGroupSid = 73,
+  WinEnterpriseReadonlyControllersSid = 74,
+  WinAccountReadonlyControllersSid = 75,
+  WinBuiltinEventLogReadersGroup = 76,
+  WinNewEnterpriseReadonlyControllersSid = 77,
+  WinBuiltinCertSvcDComAccessGroup = 78,
+  WinMediumPlusLabelSid = 79,
+  WinLocalLogonSid = 80,
+  WinConsoleLogonSid = 81,
+  WinThisOrganizationCertificateSid = 82,
 } WELL_KNOWN_SID_TYPE;
 
 #define SE_CREATE_TOKEN_NAME   TEXT("SeCreateTokenPrivilege")
@@ -732,14 +956,114 @@ typedef enum {
 #define SE_SYSTEM_ENVIRONMENT_NAME     TEXT("SeSystemEnvironmentPrivilege")
 #define SE_CHANGE_NOTIFY_NAME  TEXT("SeChangeNotifyPrivilege")
 #define SE_REMOTE_SHUTDOWN_NAME        TEXT("SeRemoteShutdownPrivilege")
-#define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege")
-#define SE_GROUP_MANDATORY 1
-#define SE_GROUP_ENABLED_BY_DEFAULT 2
-#define SE_GROUP_ENABLED 4
-#define SE_GROUP_OWNER 8
-#define SE_GROUP_USE_FOR_DENY_ONLY 16
-#define SE_GROUP_LOGON_ID 3221225472U
-#define SE_GROUP_RESOURCE 536870912
+#define SE_UNDOCK_NAME TEXT("SeUndockPrivilege")
+#define SE_SYNC_AGENT_NAME     TEXT("SeSyncAgentPrivilege")
+#define SE_ENABLE_DELEGATION_NAME      TEXT("SeEnableDelegationPrivilege")
+#define SE_MANAGE_VOLUME_NAME  TEXT("SeManageVolumePrivilege")
+#define SE_IMPERSONATE_NAME    TEXT("SeImpersonatePrivilege")
+#define SE_CREATE_GLOBAL_NAME  TEXT("SeCreateGlobalPrivilege")
+
+#define SE_GROUP_MANDATORY          0x00000001
+#define SE_GROUP_ENABLED_BY_DEFAULT 0x00000002
+#define SE_GROUP_ENABLED            0x00000004
+#define SE_GROUP_OWNER              0x00000008
+#define SE_GROUP_USE_FOR_DENY_ONLY  0x00000010
+#define SE_GROUP_INTEGRITY          0x00000020
+#define SE_GROUP_INTEGRITY_ENABLED  0x00000040
+#define SE_GROUP_LOGON_ID           0xC0000000
+#define SE_GROUP_RESOURCE           0x20000000
+#define SE_GROUP_VALID_ATTRIBUTES   0xE000007F
+
+/*
+ * Product types
+ */
+#define PRODUCT_UNDEFINED                               0x00000000
+#define PRODUCT_ULTIMATE                                0x00000001
+#define PRODUCT_HOME_BASIC                              0x00000002
+#define PRODUCT_HOME_PREMIUM                            0x00000003
+#define PRODUCT_ENTERPRISE                              0x00000004
+#define PRODUCT_HOME_BASIC_N                            0x00000005
+#define PRODUCT_BUSINESS                                0x00000006
+#define PRODUCT_STANDARD_SERVER                         0x00000007
+#define PRODUCT_DATACENTER_SERVER                       0x00000008
+#define PRODUCT_SMALLBUSINESS_SERVER                    0x00000009
+#define PRODUCT_ENTERPRISE_SERVER                       0x0000000A
+#define PRODUCT_STARTER                                 0x0000000B
+#define PRODUCT_DATACENTER_SERVER_CORE                  0x0000000C
+#define PRODUCT_STANDARD_SERVER_CORE                    0x0000000D
+#define PRODUCT_ENTERPRISE_SERVER_CORE                  0x0000000E
+#define PRODUCT_ENTERPRISE_SERVER_IA64                  0x0000000F
+#define PRODUCT_BUSINESS_N                              0x00000010
+#define PRODUCT_WEB_SERVER                              0x00000011
+#define PRODUCT_CLUSTER_SERVER                          0x00000012
+#define PRODUCT_HOME_SERVER                             0x00000013
+#define PRODUCT_STORAGE_EXPRESS_SERVER                  0x00000014
+#define PRODUCT_STORAGE_STANDARD_SERVER                 0x00000015
+#define PRODUCT_STORAGE_WORKGROUP_SERVER                0x00000016
+#define PRODUCT_STORAGE_ENTERPRISE_SERVER               0x00000017
+#define PRODUCT_SERVER_FOR_SMALLBUSINESS                0x00000018
+#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM            0x00000019
+#define PRODUCT_HOME_PREMIUM_N                          0x0000001A
+#define PRODUCT_ENTERPRISE_N                            0x0000001B
+#define PRODUCT_ULTIMATE_N                              0x0000001C
+#define PRODUCT_WEB_SERVER_CORE                         0x0000001D
+#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT        0x0000001E
+#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY          0x0000001F
+#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING         0x00000020
+#define PRODUCT_SERVER_FOUNDATION                       0x00000021
+#define PRODUCT_HOME_PREMIUM_SERVER                     0x00000022
+#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V              0x00000023
+#define PRODUCT_STANDARD_SERVER_V                       0x00000024
+#define PRODUCT_DATACENTER_SERVER_V                     0x00000025
+#define PRODUCT_SERVER_V                                0x00000025
+#define PRODUCT_ENTERPRISE_SERVER_V                     0x00000026
+#define PRODUCT_DATACENTER_SERVER_CORE_V                0x00000027
+#define PRODUCT_STANDARD_SERVER_CORE_V                  0x00000028
+#define PRODUCT_ENTERPRISE_SERVER_CORE_V                0x00000029
+#define PRODUCT_HYPERV                                  0x0000002A
+#define PRODUCT_STORAGE_EXPRESS_SERVER_CORE             0x0000002B
+#define PRODUCT_STORAGE_STANDARD_SERVER_CORE            0x0000002C
+#define PRODUCT_STORAGE_WORKGROUP_SERVER_CORE           0x0000002D
+#define PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE          0x0000002E
+#define PRODUCT_STARTER_N                               0x0000002F
+#define PRODUCT_PROFESSIONAL                            0x00000030
+#define PRODUCT_PROFESSIONAL_N                          0x00000031
+#define PRODUCT_SB_SOLUTION_SERVER                      0x00000032
+#define PRODUCT_SERVER_FOR_SB_SOLUTIONS                 0x00000033
+#define PRODUCT_STANDARD_SERVER_SOLUTIONS               0x00000034
+#define PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE          0x00000035
+#define PRODUCT_SB_SOLUTION_SERVER_EM                   0x00000036
+#define PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM              0x00000037
+#define PRODUCT_SOLUTION_EMBEDDEDSERVER                 0x00000038
+#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT           0x0000003B
+#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL           0x0000003C
+#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC        0x0000003D
+#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC        0x0000003E
+#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE       0x0000003F
+#define PRODUCT_CLUSTER_SERVER_V                        0x00000040
+#define PRODUCT_EMBEDDED                                0x00000041
+#define PRODUCT_STARTER_E                               0x00000042
+#define PRODUCT_HOME_BASIC_E                            0x00000043
+#define PRODUCT_HOME_PREMIUM_E                          0x00000044
+#define PRODUCT_PROFESSIONAL_E                          0x00000045
+#define PRODUCT_ENTERPRISE_E                            0x00000046
+#define PRODUCT_ULTIMATE_E                              0x00000047
+#define PRODUCT_ENTERPRISE_EVALUATION                   0x00000048
+#define PRODUCT_MULTIPOINT_STANDARD_SERVER              0x0000004C
+#define PRODUCT_MULTIPOINT_PREMIUM_SERVER               0x0000004D
+#define PRODUCT_STANDARD_EVALUATION_SERVER              0x0000004F
+#define PRODUCT_DATACENTER_EVALUATION_SERVER            0x00000050
+#define PRODUCT_ENTERPRISE_N_EVALUATION                 0x00000054
+#define PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER     0x0000005F
+#define PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER      0x00000060
+#define PRODUCT_CORE_ARM                                0x00000061
+#define PRODUCT_CORE_N                                  0x00000062
+#define PRODUCT_CORE_COUNTRYSPECIFIC                    0x00000063
+#define PRODUCT_CORE_LANGUAGESPECIFIC                   0x00000064
+#define PRODUCT_CORE                                    0x00000065
+#define PRODUCT_PROFESSIONAL_WMC                        0x00000067
+#define PRODUCT_UNLICENSED                              0xABCDABCD
+
 #define LANG_NEUTRAL   0x00
 #define LANG_INVARIANT   0x7f
 #define LANG_AFRIKAANS   0x36
@@ -760,6 +1084,7 @@ typedef enum {
 #define LANG_CATALAN   0x03
 #define LANG_CHINESE   0x04
 #define LANG_CHINESE_SIMPLIFIED   0x04
+#define LANG_CHINESE_TRADITIONAL  0x7c04
 #define LANG_CORSICAN   0x83
 #define LANG_CROATIAN   0x1a
 #define LANG_CROATIAN   0x1a
@@ -822,6 +1147,7 @@ typedef enum {
 #define LANG_ORIYA   0x48
 #define LANG_PASHTO   0x63
 #define LANG_FARSI   0x29
+#define LANG_PERSIAN 0x29
 #define LANG_POLISH   0x15
 #define LANG_PORTUGUESE   0x16
 #define LANG_PUNJABI   0x46
@@ -831,6 +1157,7 @@ typedef enum {
 #define LANG_RUSSIAN   0x19
 #define LANG_SAMI   0x3b
 #define LANG_SANSKRIT   0x4f
+#define LANG_SCOTTISH_GAELIC   0x91
 #define LANG_SERBIAN   0x1a
 #define LANG_SOTHO   0x6c
 #define LANG_TSWANA   0x32
@@ -869,14 +1196,16 @@ typedef enum {
 /* FIXME: non-standard */
 #define LANG_ESPERANTO      0x8f
 #define LANG_WALON          0x90
-#define LANG_CORNISH        0x91
+#define LANG_CORNISH        0x92
 
 /* FIXME: not present in the official headers */
+#define LANG_MALAGASY       0x8d
 #define LANG_GAELIC         0x94
 #define LANG_SAAMI          0x3b
 #define LANG_SUTU           0x30
 #define LANG_TSONGA         0x31
 #define LANG_VENDA          0x33
+#define LANG_MANX_GAELIC    0x94
 
 #define SUBLANG_CUSTOM_UNSPECIFIED   0x04
 #define SUBLANG_CUSTOM_DEFAULT   0x03
@@ -971,6 +1300,7 @@ typedef enum {
 #define SUBLANG_GREENLANDIC_GREENLAND   0x01
 #define SUBLANG_GUJARATI_INDIA   0x01
 #define SUBLANG_HAUSA_NIGERIA_LATIN   0x01
+#define SUBLANG_HAUSA_NIGERIA   0x01
 #define SUBLANG_HEBREW_ISRAEL   0x01
 #define SUBLANG_HINDI_INDIA   0x01
 #define SUBLANG_HUNGARIAN_HUNGARY   0x01
@@ -994,8 +1324,10 @@ typedef enum {
 #define SUBLANG_KOREAN   0x01
 #define SUBLANG_KYRGYZ_KYRGYZSTAN   0x01
 #define SUBLANG_LAO_LAO   0x01
+#define SUBLANG_LAO_LAO_PDR  0x01
 #define SUBLANG_LATVIAN_LATVIA   0x01
 #define SUBLANG_LITHUANIAN_LITHUANIA   0x01
+#define SUBLANG_LITHUANIAN   0x01
 #define SUBLANG_LOWER_SORBIAN_GERMANY   0x02
 #define SUBLANG_LUXEMBOURGISH_LUXEMBOURG   0x01
 #define SUBLANG_MACEDONIAN_MACEDONIA   0x01
@@ -1043,6 +1375,7 @@ typedef enum {
 #define SUBLANG_SERBIAN_CROATIA   0x01
 #define SUBLANG_SERBIAN_CYRILLIC   0x03
 #define SUBLANG_SERBIAN_LATIN   0x02
+#define SUBLANG_SERBIAN_SERBIA_LATIN   0x09
 #define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA   0x01
 #define SUBLANG_TSWANA_SOUTH_AFRICA   0x01
 #define SUBLANG_SINDHI_AFGHANISTAN   0x02
@@ -1072,6 +1405,7 @@ typedef enum {
 #define SUBLANG_SPANISH_URUGUAY   0x0e
 #define SUBLANG_SPANISH_VENEZUELA   0x08
 #define SUBLANG_SWAHILI   0x01
+#define SUBLANG_SWAHILI_KENYA   0x01
 #define SUBLANG_SWEDISH_FINLAND   0x02
 #define SUBLANG_SWEDISH   0x01
 #define SUBLANG_SWEDISH_SWEDEN   0x01
@@ -1128,6 +1462,7 @@ typedef enum {
 #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 LOCALE_NAME_MAX_LENGTH 85
 #define ACL_REVISION   2
 #define ACL_REVISION_DS 4
 #define ACL_REVISION1 1
@@ -1155,6 +1490,21 @@ typedef enum {
 #define PROCESSOR_PPC_603 603
 #define PROCESSOR_PPC_604 604
 #define PROCESSOR_PPC_620 620
+#define PROCESSOR_INTEL_860 860
+#define PROCESSOR_AMD_X8664 8664
+#define PROCESSOR_MIPS_R2000 2000
+#define PROCESSOR_MIPS_R3000 3000
+#define PROCESSOR_HITACHI_SH3 10003
+#define PROCESSOR_HITACHI_SH3E 10004
+#define PROCESSOR_HITACHI_SH4 10005
+#define PROCESSOR_MOTOROLA_821 821
+#define PROCESSOR_SHx_SH3 103
+#define PROCESSOR_SHx_SH4 104
+#define PROCESSOR_STRONGARM 2577
+#define PROCESSOR_ARM720 1824
+#define PROCESSOR_ARM820 2080
+#define PROCESSOR_ARM920 2336
+#define PROCESSOR_ARM_7TDMI 70001
 #define PROCESSOR_ARCHITECTURE_INTEL 0
 #define PROCESSOR_ARCHITECTURE_MIPS 1
 #define PROCESSOR_ARCHITECTURE_ALPHA 2
@@ -1223,6 +1573,7 @@ typedef enum {
 #define REG_WHOLE_HIVE_VOLATILE        1
 #define REG_REFRESH_HIVE       2
 #define REG_NO_LAZY_FLUSH      4
+#define REG_FORCE_RESTORE      8
 #define REG_OPTION_RESERVED    0
 #define REG_OPTION_NON_VOLATILE        0
 #define REG_OPTION_VOLATILE    1
@@ -1270,6 +1621,9 @@ typedef enum {
 #define SEC_RESERVE    0x04000000
 #define SEC_COMMIT     0x08000000
 #define SEC_NOCACHE    0x10000000
+#define SEC_WRITECOMBINE 0x40000000
+#define SEC_LARGE_PAGES  0x80000000
+#define SECTION_MAP_EXECUTE_EXPLICIT 0x0020
 #define SECTION_EXTEND_SIZE 16
 #define SECTION_MAP_READ 4
 #define SECTION_MAP_WRITE 2
@@ -1280,6 +1634,11 @@ typedef enum {
 #define MESSAGE_RESOURCE_UNICODE 1
 #define RTL_CRITSECT_TYPE 0
 #define RTL_RESOURCE_TYPE 1
+
+#define RTL_FIELD_TYPE(type, field)    (((type*)0)->field)
+#define RTL_BITS_OF(sizeOfArg)         (sizeof(sizeOfArg) * 8)
+#define RTL_BITS_OF_FIELD(type, field) (RTL_BITS_OF(RTL_FIELD_TYPE(type, field)))
+
 /* Also in winddk.h */
 #if !defined(__GNUC__)
 #define FIELD_OFFSET(t,f) ((LONG)(LONG_PTR)&(((t*) 0)->f))
@@ -1290,6 +1649,49 @@ typedef enum {
 #define CONTAINING_RECORD(address, type, field) \
   ((type *)(((ULONG_PTR)address) - (ULONG_PTR)(&(((type *)0)->field))))
 #endif
+
+#define RTL_FIELD_SIZE(type, field) (sizeof(((type *)0)->field))
+#define RTL_SIZEOF_THROUGH_FIELD(type, field) \
+    (FIELD_OFFSET(type, field) + RTL_FIELD_SIZE(type, field))
+#define RTL_CONTAINS_FIELD(Struct, Size, Field) \
+    ((((PCHAR) (&(Struct)->Field)) + sizeof((Struct)->Field)) <= (((PCHAR) (Struct)) + (Size)))
+#define RTL_NUMBER_OF_V1(A) (sizeof(A)/sizeof((A)[0]))
+
+#if defined(__cplusplus) && \
+    !defined(MIDL_PASS) && \
+    !defined(RC_INVOKED) && \
+    !defined(_PREFAST_) && \
+    (_MSC_FULL_VER >= 13009466) && \
+    !defined(SORTPP_PASS)
+#define RTL_NUMBER_OF_V2(A) (sizeof(*RtlpNumberOf(A)))
+#else
+#define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A)
+#endif
+
+#ifdef ENABLE_RTL_NUMBER_OF_V2
+#define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V2(A)
+#else
+#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_FIELD_TYPE(type, field) (((type*)0)->field)
+#define RTL_NUMBER_OF_FIELD(type, field) (RTL_NUMBER_OF(RTL_FIELD_TYPE(type, field)))
+#define RTL_PADDING_BETWEEN_FIELDS(T, F1, F2) \
+    ((FIELD_OFFSET(T, F2) > FIELD_OFFSET(T, F1)) \
+    ? (FIELD_OFFSET(T, F2) - FIELD_OFFSET(T, F1) - RTL_FIELD_SIZE(T, F1)) \
+    : (FIELD_OFFSET(T, F1) - FIELD_OFFSET(T, F2) - RTL_FIELD_SIZE(T, F2)))
+
+#if defined(__cplusplus)
+#define RTL_CONST_CAST(type) const_cast<type>
+#else
+#define RTL_CONST_CAST(type) (type)
+#endif
+
+#define RTL_BITS_OF(sizeOfArg) (sizeof(sizeOfArg) * 8)
+#define RTL_BITS_OF_FIELD(type, field) (RTL_BITS_OF(RTL_FIELD_TYPE(type, field)))
+
 /* end winddk.h */
 #define IMAGE_SIZEOF_FILE_HEADER       20
 #define IMAGE_FILE_RELOCS_STRIPPED     1
@@ -1312,6 +1714,7 @@ typedef enum {
 #define IMAGE_FILE_MACHINE_AM33       0x1d3
 #define IMAGE_FILE_MACHINE_AMD64      0x8664
 #define IMAGE_FILE_MACHINE_ARM        0x1c0
+#define IMAGE_FILE_MACHINE_ARMNT      0x1c4
 #define IMAGE_FILE_MACHINE_EBC        0xebc
 #define IMAGE_FILE_MACHINE_I386       0x14c
 #define IMAGE_FILE_MACHINE_IA64       0x200
@@ -1338,6 +1741,21 @@ typedef enum {
 #define IMAGE_FILE_MACHINE_TRICORE    0x0520
 #define IMAGE_FILE_MACHINE_CEF        0x0CEF
 
+/* Wine extension */
+#define IMAGE_FILE_MACHINE_ARM64      0x1c5
+
+#define IMAGE_FILE_EXPORT_DIRECTORY            0
+#define IMAGE_FILE_IMPORT_DIRECTORY            1
+#define IMAGE_FILE_RESOURCE_DIRECTORY          2
+#define IMAGE_FILE_EXCEPTION_DIRECTORY         3
+#define IMAGE_FILE_SECURITY_DIRECTORY          4
+#define IMAGE_FILE_BASE_RELOCATION_TABLE       5
+#define IMAGE_FILE_DEBUG_DIRECTORY             6
+#define IMAGE_FILE_DESCRIPTION_STRING          7
+#define IMAGE_FILE_MACHINE_VALUE               8  /* Mips */
+#define IMAGE_FILE_THREAD_LOCAL_STORAGE                9
+#define IMAGE_FILE_CALLBACK_DIRECTORY          10
+
 #define IMAGE_DOS_SIGNATURE 0x5A4D
 #define IMAGE_OS2_SIGNATURE 0x454E
 #define IMAGE_OS2_SIGNATURE_LE 0x454C
@@ -1380,6 +1798,9 @@ typedef enum {
 #define IMAGE_SUBSYSTEM_EFI_ROM                     13
 #define IMAGE_SUBSYSTEM_XBOX                        14
 
+#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040
+#define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080
+#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100
 #define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200
 #define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400
 #define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800
@@ -1631,20 +2052,22 @@ typedef enum {
 #define SERVICE_ERROR_NORMAL 1
 #define SERVICE_ERROR_SEVERE 2
 #define SERVICE_ERROR_CRITICAL 3
-#define SE_OWNER_DEFAULTED 1
-#define SE_GROUP_DEFAULTED 2
-#define SE_DACL_PRESENT 4
-#define SE_DACL_DEFAULTED 8
-#define SE_SACL_PRESENT 16
-#define SE_SACL_DEFAULTED 32
-#define SE_DACL_AUTO_INHERIT_REQ 256
-#define SE_SACL_AUTO_INHERIT_REQ 512
-#define SE_DACL_AUTO_INHERITED 1024
-#define SE_SACL_AUTO_INHERITED 2048
-#define SE_DACL_PROTECTED 4096
-#define SE_SACL_PROTECTED 8192
-#define SE_RM_CONTROL_VALID 0x4000
-#define SE_SELF_RELATIVE 0x8000
+#define SE_OWNER_DEFAULTED              0x0001
+#define SE_GROUP_DEFAULTED              0x0002
+#define SE_DACL_PRESENT                 0x0004
+#define SE_DACL_DEFAULTED               0x0008
+#define SE_SACL_PRESENT                 0x0010
+#define SE_SACL_DEFAULTED               0x0020
+#define SE_DACL_UNTRUSTED               0x0040
+#define SE_SERVER_SECURITY              0x0080
+#define SE_DACL_AUTO_INHERIT_REQ        0x0100
+#define SE_SACL_AUTO_INHERIT_REQ        0x0200
+#define SE_DACL_AUTO_INHERITED          0x0400
+#define SE_SACL_AUTO_INHERITED          0x0800
+#define SE_DACL_PROTECTED               0x1000
+#define SE_SACL_PROTECTED               0x2000
+#define SE_RM_CONTROL_VALID             0x4000
+#define SE_SELF_RELATIVE                0x8000
 #define SECURITY_DESCRIPTOR_MIN_LENGTH 20
 #define SECURITY_DESCRIPTOR_REVISION 1
 #define SECURITY_DESCRIPTOR_REVISION1 1
@@ -1794,6 +2217,8 @@ typedef enum {
 #define VER_AND 6
 #define VER_OR 7
 #endif
+#define VER_SERVER_NT 0x80000000
+#define VER_WORKSTATION_NT 0x40000000
 #define VER_PLATFORM_WIN32s 0
 #define VER_PLATFORM_WIN32_WINDOWS 1
 #define VER_PLATFORM_WIN32_NT 2
@@ -1803,6 +2228,7 @@ typedef enum {
 #define VER_SUITE_SMALLBUSINESS 1
 #define VER_SUITE_ENTERPRISE 2
 #define VER_SUITE_BACKOFFICE 4
+#define VER_SUITE_COMMUNICATIONS 8
 #define VER_SUITE_TERMINAL 16
 #define VER_SUITE_SMALLBUSINESS_RESTRICTED 32
 #define VER_SUITE_EMBEDDEDNT 64
@@ -1810,6 +2236,11 @@ typedef enum {
 #define VER_SUITE_SINGLEUSERTS 256
 #define VER_SUITE_PERSONAL 512
 #define VER_SUITE_BLADE 1024
+#define VER_SUITE_EMBEDDED_RESTRICTED 2048
+#define VER_SUITE_SECURITY_APPLIANCE 4096
+#define VER_SUITE_STORAGE_SERVER 8192
+#define VER_SUITE_COMPUTE_SERVER 16384
+#define VER_SUITE_WH_SERVER 32768
 #define WT_EXECUTEDEFAULT 0x00000000
 #define WT_EXECUTEINIOTHREAD 0x00000001
 #define WT_EXECUTEINUITHREAD 0x00000002
@@ -1901,184 +2332,216 @@ typedef struct _GUID {
 #define SYSTEM_MANDATORY_LABEL_ACE_TYPE         (0x11)
 #define ACCESS_MAX_MS_V5_ACE_TYPE               (0x11)
 /* end ntifs.h */
+
 typedef struct _GENERIC_MAPPING {
-       ACCESS_MASK GenericRead;
-       ACCESS_MASK GenericWrite;
-       ACCESS_MASK GenericExecute;
-       ACCESS_MASK GenericAll;
+  ACCESS_MASK GenericRead;
+  ACCESS_MASK GenericWrite;
+  ACCESS_MASK GenericExecute;
+  ACCESS_MASK GenericAll;
 } GENERIC_MAPPING, *PGENERIC_MAPPING;
+
 typedef struct _ACE_HEADER {
-       BYTE AceType;
-       BYTE AceFlags;
-       WORD AceSize;
+  BYTE AceType;
+  BYTE AceFlags;
+  WORD AceSize;
 } ACE_HEADER, *PACE_HEADER;
 
 typedef struct _ACCESS_ALLOWED_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD SidStart;
 } ACCESS_ALLOWED_ACE, *PACCESS_ALLOWED_ACE;
+
 typedef struct _ACCESS_DENIED_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD SidStart;
 } ACCESS_DENIED_ACE, *PACCESS_DENIED_ACE;
+
 typedef struct _SYSTEM_AUDIT_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD SidStart;
-} SYSTEM_AUDIT_ACE;
-typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD SidStart;
+} SYSTEM_AUDIT_ACE, *PSYSTEM_AUDIT_ACE;
+
 typedef struct _SYSTEM_ALARM_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD SidStart;
 } SYSTEM_ALARM_ACE,*PSYSTEM_ALARM_ACE;
+
 typedef struct _SYSTEM_MANDATORY_LABEL_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD SidStart;
 } SYSTEM_MANDATORY_LABEL_ACE, *PSYSTEM_MANDATORY_LABEL_ACE;
+
 #define SYSTEM_MANDATORY_LABEL_NO_WRITE_UP  0x1
 #define SYSTEM_MANDATORY_LABEL_NO_READ_UP   0x2
 #define SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP    0x4
 #define SYSTEM_MANDATORY_LABEL_VALID_MASK (SYSTEM_MANDATORY_LABEL_NO_WRITE_UP | SYSTEM_MANDATORY_LABEL_NO_READ_UP | SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP)
+
 typedef struct _ACCESS_ALLOWED_OBJECT_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD Flags;
-       GUID ObjectType;
-       GUID InheritedObjectType;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD Flags;
+  GUID ObjectType;
+  GUID InheritedObjectType;
+  DWORD SidStart;
 } ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE;
+
 typedef struct _ACCESS_DENIED_OBJECT_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD Flags;
-       GUID ObjectType;
-       GUID InheritedObjectType;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD Flags;
+  GUID ObjectType;
+  GUID InheritedObjectType;
+  DWORD SidStart;
 } ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE;
+
 typedef struct _SYSTEM_AUDIT_OBJECT_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD Flags;
-       GUID ObjectType;
-       GUID InheritedObjectType;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD Flags;
+  GUID ObjectType;
+  GUID InheritedObjectType;
+  DWORD SidStart;
 } SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE;
+
 typedef struct _SYSTEM_ALARM_OBJECT_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD Flags;
-       GUID ObjectType;
-       GUID InheritedObjectType;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD Flags;
+  GUID ObjectType;
+  GUID InheritedObjectType;
+  DWORD SidStart;
 } SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE;
+
 typedef struct _ACCESS_ALLOWED_CALLBACK_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD SidStart;
 } ACCESS_ALLOWED_CALLBACK_ACE, *PACCESS_ALLOWED_CALLBACK_ACE;
+
 typedef struct _ACCESS_DENIED_CALLBACK_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD SidStart;
 } ACCESS_DENIED_CALLBACK_ACE, *PACCESS_DENIED_CALLBACK_ACE;
+
 typedef struct _SYSTEM_AUDIT_CALLBACK_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD SidStart;
 } SYSTEM_AUDIT_CALLBACK_ACE, *PSYSTEM_AUDIT_CALLBACK_ACE;
+
 typedef struct _SYSTEM_ALARM_CALLBACK_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD SidStart;
 } SYSTEM_ALARM_CALLBACK_ACE, *PSYSTEM_ALARM_CALLBACK_ACE;
+
 typedef struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD Flags;
-       GUID ObjectType;
-       GUID InheritedObjectType;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD Flags;
+  GUID ObjectType;
+  GUID InheritedObjectType;
+  DWORD SidStart;
 } ACCESS_ALLOWED_CALLBACK_OBJECT_ACE, *PACCESS_ALLOWED_CALLBACK_OBJECT_ACE;
+
 typedef struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD Flags;
-       GUID ObjectType;
-       GUID InheritedObjectType;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD Flags;
+  GUID ObjectType;
+  GUID InheritedObjectType;
+  DWORD SidStart;
 } ACCESS_DENIED_CALLBACK_OBJECT_ACE, *PACCESS_DENIED_CALLBACK_OBJECT_ACE;
+
 typedef struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD Flags;
-       GUID ObjectType;
-       GUID InheritedObjectType;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD Flags;
+  GUID ObjectType;
+  GUID InheritedObjectType;
+  DWORD SidStart;
 } SYSTEM_AUDIT_CALLBACK_OBJECT_ACE, *PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE;
+
 typedef struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE {
-       ACE_HEADER Header;
-       ACCESS_MASK Mask;
-       DWORD Flags;
-       GUID ObjectType;
-       GUID InheritedObjectType;
-       DWORD SidStart;
+  ACE_HEADER Header;
+  ACCESS_MASK Mask;
+  DWORD Flags;
+  GUID ObjectType;
+  GUID InheritedObjectType;
+  DWORD SidStart;
 } SYSTEM_ALARM_CALLBACK_OBJECT_ACE, *PSYSTEM_ALARM_CALLBACK_OBJECT_ACE;
+
 typedef struct _ACL {
-       BYTE AclRevision;
-       BYTE Sbz1;
-       WORD AclSize;
-       WORD AceCount;
-       WORD Sbz2;
+  BYTE AclRevision;
+  BYTE Sbz1;
+  WORD AclSize;
+  WORD AceCount;
+  WORD Sbz2;
 } ACL,*PACL;
-typedef enum _ACL_INFORMATION_CLASS
-{
+
+typedef enum _ACL_INFORMATION_CLASS {
   AclRevisionInformation = 1,
   AclSizeInformation
 } ACL_INFORMATION_CLASS;
+
 typedef struct _ACL_REVISION_INFORMATION {
-       DWORD AclRevision;
-} ACL_REVISION_INFORMATION;
+  DWORD AclRevision;
+} ACL_REVISION_INFORMATION, *PACL_REVISION_INFORMATION;
+
 typedef struct _ACL_SIZE_INFORMATION {
-       DWORD   AceCount;
-       DWORD   AclBytesInUse;
-       DWORD   AclBytesFree;
-} ACL_SIZE_INFORMATION;
+  DWORD AceCount;
+  DWORD AclBytesInUse;
+  DWORD AclBytesFree;
+} ACL_SIZE_INFORMATION, *PACL_SIZE_INFORMATION;
+
+typedef
+_IRQL_requires_same_
+_Function_class_(EXCEPTION_ROUTINE)
+EXCEPTION_DISPOSITION
+NTAPI
+EXCEPTION_ROUTINE(
+  _Inout_ struct _EXCEPTION_RECORD *ExceptionRecord,
+  _In_ PVOID EstablisherFrame,
+  _Inout_ struct _CONTEXT *ContextRecord,
+  _In_ PVOID DispatcherContext);
+
+typedef EXCEPTION_ROUTINE *PEXCEPTION_ROUTINE;
 
 #ifndef _LDT_ENTRY_DEFINED
 #define _LDT_ENTRY_DEFINED
-typedef struct _LDT_ENTRY
-{
-    USHORT LimitLow;
-    USHORT BaseLow;
-    union
-    {
-        struct
-        {
-            UCHAR BaseMid;
-            UCHAR Flags1;
-            UCHAR Flags2;
-            UCHAR BaseHi;
-        } Bytes;
-        struct
-        {
-            ULONG BaseMid:8;
-            ULONG Type:5;
-            ULONG Dpl:2;
-            ULONG Pres:1;
-            ULONG LimitHi:4;
-            ULONG Sys:1;
-            ULONG Reserved_0:1;
-            ULONG Default_Big:1;
-            ULONG Granularity:1;
-            ULONG BaseHi:8;
-        } Bits;
-    } HighWord;
+
+typedef struct _LDT_ENTRY {
+  WORD LimitLow;
+  WORD BaseLow;
+  union {
+    struct {
+      BYTE BaseMid;
+      BYTE Flags1;
+      BYTE Flags2;
+      BYTE BaseHi;
+    } Bytes;
+    struct {
+      DWORD BaseMid:8;
+      DWORD Type:5;
+      DWORD Dpl:2;
+      DWORD Pres:1;
+      DWORD LimitHi:4;
+      DWORD Sys:1;
+      DWORD Reserved_0:1;
+      DWORD Default_Big:1;
+      DWORD Granularity:1;
+      DWORD BaseHi:8;
+    } Bits;
+  } HighWord;
 } LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY;
-#endif
+
+#endif /* _LDT_ENTRY_DEFINED */
 
 /* FIXME: add more machines */
 #if defined(_X86_) && !defined(__PowerPC__)
@@ -2099,46 +2562,46 @@ typedef struct _LDT_ENTRY
 #define EXCEPTION_EXECUTE_FAULT 8
 
 typedef struct _FLOATING_SAVE_AREA {
-       DWORD   ControlWord;
-       DWORD   StatusWord;
-       DWORD   TagWord;
-       DWORD   ErrorOffset;
-       DWORD   ErrorSelector;
-       DWORD   DataOffset;
-       DWORD   DataSelector;
-       BYTE    RegisterArea[80];
-       DWORD   Cr0NpxState;
-} FLOATING_SAVE_AREA;
+  DWORD ControlWord;
+  DWORD StatusWord;
+  DWORD TagWord;
+  DWORD ErrorOffset;
+  DWORD ErrorSelector;
+  DWORD DataOffset;
+  DWORD DataSelector;
+  BYTE RegisterArea[80];
+  DWORD Cr0NpxState;
+} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
+
 typedef struct _CONTEXT {
-       DWORD   ContextFlags;
-       DWORD   Dr0;
-       DWORD   Dr1;
-       DWORD   Dr2;
-       DWORD   Dr3;
-       DWORD   Dr6;
-       DWORD   Dr7;
-       FLOATING_SAVE_AREA FloatSave;
-       DWORD   SegGs;
-       DWORD   SegFs;
-       DWORD   SegEs;
-       DWORD   SegDs;
-       DWORD   Edi;
-       DWORD   Esi;
-       DWORD   Ebx;
-       DWORD   Edx;
-       DWORD   Ecx;
-       DWORD   Eax;
-       DWORD   Ebp;
-       DWORD   Eip;
-       DWORD   SegCs;
-       DWORD   EFlags;
-       DWORD   Esp;
-       DWORD   SegSs;
-       BYTE    ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
+  DWORD ContextFlags;
+  DWORD Dr0;
+  DWORD Dr1;
+  DWORD Dr2;
+  DWORD Dr3;
+  DWORD Dr6;
+  DWORD Dr7;
+  FLOATING_SAVE_AREA FloatSave;
+  DWORD SegGs;
+  DWORD SegFs;
+  DWORD SegEs;
+  DWORD SegDs;
+  DWORD Edi;
+  DWORD Esi;
+  DWORD Ebx;
+  DWORD Edx;
+  DWORD Ecx;
+  DWORD Eax;
+  DWORD Ebp;
+  DWORD Eip;
+  DWORD SegCs;
+  DWORD EFlags;
+  DWORD Esp;
+  DWORD SegSs;
+  BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
 } CONTEXT;
 #elif defined(__x86_64__)
 
-
 #define CONTEXT_AMD64 0x100000
 
 #if !defined(RC_INVOKED)
@@ -2295,8 +2758,8 @@ typedef struct _KNONVOLATILE_CONTEXT_POINTERS {
             PM128A Xmm13;
             PM128A Xmm14;
             PM128A Xmm15;
-        };
-    };
+        } DUMMYSTRUCTNAME;
+    } DUMMYUNIONNAME;
 
     union {
         PULONG64 IntegerContext[16];
@@ -2317,8 +2780,8 @@ typedef struct _KNONVOLATILE_CONTEXT_POINTERS {
             PULONG64 R13;
             PULONG64 R14;
             PULONG64 R15;
-        };
-    };
+        } DUMMYSTRUCTNAME;
+    } DUMMYUNIONNAME2;
 } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS;
 
 #define RUNTIME_FUNCTION_INDIRECT 0x1
@@ -2346,8 +2809,22 @@ typedef struct _UNWIND_HISTORY_TABLE
     UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE];
 } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE;
 
-typedef PRUNTIME_FUNCTION (*PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD64 ControlPc,PVOID Context);
-typedef DWORD (*POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK)(HANDLE Process,PVOID TableAddress,PDWORD Entries,PRUNTIME_FUNCTION *Functions);
+typedef
+_Function_class_(GET_RUNTIME_FUNCTION_CALLBACK)
+PRUNTIME_FUNCTION
+(*PGET_RUNTIME_FUNCTION_CALLBACK)(
+  _In_ DWORD64 ControlPc,
+  _In_opt_ PVOID Context);
+
+typedef
+_Function_class_(OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK)
+_Must_inspect_result_
+DWORD
+(*POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK)(
+  _In_ HANDLE Process,
+  _In_ PVOID TableAddress,
+  _Out_ PDWORD Entries,
+  _Out_ PRUNTIME_FUNCTION *Functions);
 
 #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME "OutOfProcessFunctionTableCallback"
 
@@ -2379,6 +2856,27 @@ BOOLEAN
 __cdecl
 RtlDeleteFunctionTable(PRUNTIME_FUNCTION FunctionTable);
 
+NTSYSAPI
+PRUNTIME_FUNCTION
+NTAPI
+RtlLookupFunctionEntry(
+    _In_ DWORD64 ControlPc,
+    _Out_ PDWORD64 ImageBase,
+    _Inout_opt_ PUNWIND_HISTORY_TABLE HistoryTable);
+
+NTSYSAPI
+PEXCEPTION_ROUTINE
+NTAPI
+RtlVirtualUnwind(
+    _In_ DWORD HandlerType,
+    _In_ DWORD64 ImageBase,
+    _In_ DWORD64 ControlPc,
+    _In_ PRUNTIME_FUNCTION FunctionEntry,
+    _Inout_ struct _CONTEXT *ContextRecord,
+    _Out_ PVOID *HandlerData,
+    _Out_ PDWORD64 EstablisherFrame,
+    _Inout_opt_ PKNONVOLATILE_CONTEXT_POINTERS ContextPointers);
+
 #elif defined(_PPC_)
 #define CONTEXT_CONTROL        1L
 #define CONTEXT_FLOATING_POINT 2L
@@ -2871,43 +3369,53 @@ typedef struct _CONTEXT {
 #endif
 typedef CONTEXT *PCONTEXT,*LPCONTEXT;
 
-#define EXCEPTION_NONCONTINUABLE       1
 #define EXCEPTION_MAXIMUM_PARAMETERS 15
-
-    typedef struct _EXCEPTION_RECORD {
-      DWORD ExceptionCode;
-      DWORD ExceptionFlags;
-      struct _EXCEPTION_RECORD *ExceptionRecord;
-      PVOID ExceptionAddress;
-      DWORD NumberParameters;
-      ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
-    } EXCEPTION_RECORD;
-
-    typedef EXCEPTION_RECORD *PEXCEPTION_RECORD;
-
-    typedef struct _EXCEPTION_RECORD32 {
-      DWORD ExceptionCode;
-      DWORD ExceptionFlags;
-      DWORD ExceptionRecord;
-      DWORD ExceptionAddress;
-      DWORD NumberParameters;
-      DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
-    } EXCEPTION_RECORD32,*PEXCEPTION_RECORD32;
-
-    typedef struct _EXCEPTION_RECORD64 {
-      DWORD ExceptionCode;
-      DWORD ExceptionFlags;
-      DWORD64 ExceptionRecord;
-      DWORD64 ExceptionAddress;
-      DWORD NumberParameters;
-      DWORD __unusedAlignment;
-      DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
-    } EXCEPTION_RECORD64,*PEXCEPTION_RECORD64;
-
-    typedef struct _EXCEPTION_POINTERS {
-      PEXCEPTION_RECORD ExceptionRecord;
-      PCONTEXT ContextRecord;
-    } EXCEPTION_POINTERS,*PEXCEPTION_POINTERS, *LPEXCEPTION_POINTERS;
+#define EXCEPTION_NONCONTINUABLE  0x01
+#define EXCEPTION_UNWINDING       0x02
+#define EXCEPTION_EXIT_UNWIND     0x04
+#define EXCEPTION_STACK_INVALID   0x08
+#define EXCEPTION_NESTED_CALL     0x10
+#define EXCEPTION_TARGET_UNWIND   0x20
+#define EXCEPTION_COLLIDED_UNWIND 0x40
+#define EXCEPTION_UNWIND (EXCEPTION_UNWINDING | EXCEPTION_EXIT_UNWIND | \
+                          EXCEPTION_TARGET_UNWIND | EXCEPTION_COLLIDED_UNWIND)
+
+#define IS_UNWINDING(Flag) ((Flag & EXCEPTION_UNWIND) != 0)
+#define IS_DISPATCHING(Flag) ((Flag & EXCEPTION_UNWIND) == 0)
+#define IS_TARGET_UNWIND(Flag) (Flag & EXCEPTION_TARGET_UNWIND)
+
+typedef struct _EXCEPTION_RECORD {
+  DWORD ExceptionCode;
+  DWORD ExceptionFlags;
+  struct _EXCEPTION_RECORD *ExceptionRecord;
+  PVOID ExceptionAddress;
+  DWORD NumberParameters;
+  ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
+} EXCEPTION_RECORD, *PEXCEPTION_RECORD;
+
+typedef struct _EXCEPTION_RECORD32 {
+  DWORD ExceptionCode;
+  DWORD ExceptionFlags;
+  DWORD ExceptionRecord;
+  DWORD ExceptionAddress;
+  DWORD NumberParameters;
+  DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
+} EXCEPTION_RECORD32,*PEXCEPTION_RECORD32;
+
+typedef struct _EXCEPTION_RECORD64 {
+  DWORD ExceptionCode;
+  DWORD ExceptionFlags;
+  DWORD64 ExceptionRecord;
+  DWORD64 ExceptionAddress;
+  DWORD NumberParameters;
+  DWORD __unusedAlignment;
+  DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
+} EXCEPTION_RECORD64,*PEXCEPTION_RECORD64;
+
+typedef struct _EXCEPTION_POINTERS {
+  PEXCEPTION_RECORD ExceptionRecord;
+  PCONTEXT ContextRecord;
+} EXCEPTION_POINTERS,*PEXCEPTION_POINTERS, *LPEXCEPTION_POINTERS;
 
 #ifdef _M_PPC
 #define LARGE_INTEGER_ORDER(x) x HighPart; DWORD LowPart;
@@ -2942,151 +3450,186 @@ typedef struct _LUID {
 } LUID, *PLUID;
 
 #include <pshpack4.h>
+
 typedef struct _LUID_AND_ATTRIBUTES {
-       LUID   Luid;
-       DWORD  Attributes;
+  LUID Luid;
+  DWORD Attributes;
 } LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES;
-#include <poppack.h>
-
 typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
 typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
+
+#include <poppack.h>
+
 typedef struct _PRIVILEGE_SET {
-       DWORD PrivilegeCount;
-       DWORD Control;
-       LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
+  DWORD PrivilegeCount;
+  DWORD Control;
+  LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
 } PRIVILEGE_SET,*PPRIVILEGE_SET;
+
 typedef struct _SECURITY_ATTRIBUTES {
        DWORD nLength;
        LPVOID lpSecurityDescriptor;
        BOOL bInheritHandle;
 } SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES;
+
 typedef enum _SECURITY_IMPERSONATION_LEVEL {
-       SecurityAnonymous,
-       SecurityIdentification,
-       SecurityImpersonation,
-       SecurityDelegation
+  SecurityAnonymous,
+  SecurityIdentification,
+  SecurityImpersonation,
+  SecurityDelegation
 } SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL;
+
 typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE;
+
 typedef struct _SECURITY_QUALITY_OF_SERVICE {
-       DWORD Length;
-       SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
-       SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
-       BOOLEAN EffectiveOnly;
+  DWORD Length;
+  SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+  SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
+  BOOLEAN EffectiveOnly;
 } SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE;
+
 typedef PVOID PACCESS_TOKEN;
+
 typedef struct _SE_IMPERSONATION_STATE {
-       PACCESS_TOKEN Token;
-       BOOLEAN CopyOnOpen;
-       BOOLEAN EffectiveOnly;
-       SECURITY_IMPERSONATION_LEVEL Level;
+  PACCESS_TOKEN Token;
+  BOOLEAN CopyOnOpen;
+  BOOLEAN EffectiveOnly;
+  SECURITY_IMPERSONATION_LEVEL Level;
 } SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE;
+
 typedef struct _SID_IDENTIFIER_AUTHORITY {
-       BYTE Value[6];
+  BYTE Value[6];
 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
+
 typedef PVOID PSID;
+
 typedef struct _SID {
-   BYTE  Revision;
-   BYTE  SubAuthorityCount;
-   SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
-   DWORD SubAuthority[ANYSIZE_ARRAY];
+  BYTE Revision;
+  BYTE SubAuthorityCount;
+  SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+  DWORD SubAuthority[ANYSIZE_ARRAY];
 } SID, *PISID;
+
 #define SECURITY_MIN_SID_SIZE (sizeof(SID))
 #define SECURITY_MAX_SID_SIZE (FIELD_OFFSET(SID, SubAuthority) + SID_MAX_SUB_AUTHORITIES * sizeof(DWORD))
+
 typedef struct _SID_AND_ATTRIBUTES {
-       PSID Sid;
-       DWORD Attributes;
+  PSID Sid;
+  DWORD Attributes;
 } SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES;
 typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
 typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
+
 typedef struct _TOKEN_SOURCE {
-       CHAR SourceName[TOKEN_SOURCE_LENGTH];
-       LUID SourceIdentifier;
+  CHAR SourceName[TOKEN_SOURCE_LENGTH];
+  LUID SourceIdentifier;
 } TOKEN_SOURCE,*PTOKEN_SOURCE;
+
 typedef struct _TOKEN_CONTROL {
-       LUID TokenId;
-       LUID AuthenticationId;
-       LUID ModifiedId;
-       TOKEN_SOURCE TokenSource;
+  LUID TokenId;
+  LUID AuthenticationId;
+  LUID ModifiedId;
+  TOKEN_SOURCE TokenSource;
 } TOKEN_CONTROL,*PTOKEN_CONTROL;
+
 typedef struct _TOKEN_DEFAULT_DACL {
-       PACL DefaultDacl;
+  PACL DefaultDacl;
 } TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL;
+
 typedef struct _TOKEN_GROUPS {
-       DWORD GroupCount;
-       SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
+  DWORD GroupCount;
+  SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
 } TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS;
+
 typedef struct _TOKEN_GROUPS_AND_PRIVILEGES {
-       ULONG SidCount;
-       ULONG SidLength;
-       PSID_AND_ATTRIBUTES Sids;
-       ULONG RestrictedSidCount;
-       ULONG RestrictedSidLength;
-       PSID_AND_ATTRIBUTES RestrictedSids;
-       ULONG PrivilegeCount;
-       ULONG PrivilegeLength;
-       PLUID_AND_ATTRIBUTES Privileges;
-       LUID AuthenticationId;
+  DWORD SidCount;
+  DWORD SidLength;
+  PSID_AND_ATTRIBUTES Sids;
+  DWORD RestrictedSidCount;
+  DWORD RestrictedSidLength;
+  PSID_AND_ATTRIBUTES RestrictedSids;
+  DWORD PrivilegeCount;
+  DWORD PrivilegeLength;
+  PLUID_AND_ATTRIBUTES Privileges;
+  LUID AuthenticationId;
 } TOKEN_GROUPS_AND_PRIVILEGES, *PTOKEN_GROUPS_AND_PRIVILEGES;
+
 typedef struct _TOKEN_ORIGIN {
-       LUID OriginatingLogonSession;
+  LUID OriginatingLogonSession;
 } TOKEN_ORIGIN, *PTOKEN_ORIGIN;
+
 typedef struct _TOKEN_OWNER {
-       PSID Owner;
+  PSID Owner;
 } TOKEN_OWNER,*PTOKEN_OWNER;
+
 typedef struct _TOKEN_PRIMARY_GROUP {
-       PSID PrimaryGroup;
+  PSID PrimaryGroup;
 } TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP;
+
 typedef struct _TOKEN_PRIVILEGES {
-       DWORD PrivilegeCount;
-       LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
+  DWORD PrivilegeCount;
+  LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
 } TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES;
+
 typedef enum tagTOKEN_TYPE {
        TokenPrimary = 1,
        TokenImpersonation
 } TOKEN_TYPE,*PTOKEN_TYPE;
 
+typedef enum _TOKEN_ELEVATION_TYPE {
+    TokenElevationTypeDefault = 1,
+    TokenElevationTypeFull,
+    TokenElevationTypeLimited,
+} TOKEN_ELEVATION_TYPE, *PTOKEN_ELEVATION_TYPE;
+
+typedef struct _TOKEN_MANDATORY_LABEL {
+  SID_AND_ATTRIBUTES Label;
+} TOKEN_MANDATORY_LABEL, * PTOKEN_MANDATORY_LABEL;
+
 #include <pshpack4.h>
 typedef struct _TOKEN_STATISTICS {
-       LUID TokenId;
-       LUID AuthenticationId;
-       LARGE_INTEGER ExpirationTime;
-       TOKEN_TYPE TokenType;
-       SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
-       DWORD DynamicCharged;
-       DWORD DynamicAvailable;
-       DWORD GroupCount;
-       DWORD PrivilegeCount;
-       LUID ModifiedId;
+  LUID TokenId;
+  LUID AuthenticationId;
+  LARGE_INTEGER ExpirationTime;
+  TOKEN_TYPE TokenType;
+  SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+  DWORD DynamicCharged;
+  DWORD DynamicAvailable;
+  DWORD GroupCount;
+  DWORD PrivilegeCount;
+  LUID ModifiedId;
 } TOKEN_STATISTICS, *PTOKEN_STATISTICS;
 #include <poppack.h>
 
 typedef struct _TOKEN_USER {
-       SID_AND_ATTRIBUTES User;
+  SID_AND_ATTRIBUTES User;
 } TOKEN_USER, *PTOKEN_USER;
+
 typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION;
 typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL;
 
 #ifndef _SECURITY_ATTRIBUTES_
 #define _SECURITY_ATTRIBUTES_
 typedef struct _SECURITY_DESCRIPTOR {
-       BYTE Revision;
-       BYTE Sbz1;
-       SECURITY_DESCRIPTOR_CONTROL Control;
-       PSID Owner;
-       PSID Group;
-       PACL Sacl;
-       PACL Dacl;
+  BYTE Revision;
+  BYTE Sbz1;
+  SECURITY_DESCRIPTOR_CONTROL Control;
+  PSID Owner;
+  PSID Group;
+  PACL Sacl;
+  PACL Dacl;
 } SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
 typedef PVOID PSECURITY_DESCRIPTOR;
 #endif
+
 typedef struct _SECURITY_DESCRIPTOR_RELATIVE {
-    BYTE Revision;
-    BYTE Sbz1;
-    SECURITY_DESCRIPTOR_CONTROL Control;
-    DWORD Owner;
-    DWORD Group;
-    DWORD Sacl;
-    DWORD Dacl;
+  BYTE Revision;
+  BYTE Sbz1;
+  SECURITY_DESCRIPTOR_CONTROL Control;
+  DWORD Owner;
+  DWORD Group;
+  DWORD Sacl;
+  DWORD Dacl;
 } SECURITY_DESCRIPTOR_RELATIVE, *PISECURITY_DESCRIPTOR_RELATIVE;
 
 typedef enum _TOKEN_INFORMATION_CLASS {
@@ -3122,129 +3665,171 @@ typedef enum _TOKEN_INFORMATION_CLASS {
 } TOKEN_INFORMATION_CLASS;
 
 typedef enum _SID_NAME_USE {
-       SidTypeUser=1,SidTypeGroup,SidTypeDomain,SidTypeAlias,
-       SidTypeWellKnownGroup,SidTypeDeletedAccount,SidTypeInvalid,
-       SidTypeUnknown
+  SidTypeUser=1,
+  SidTypeGroup,
+  SidTypeDomain,
+  SidTypeAlias,
+  SidTypeWellKnownGroup,
+  SidTypeDeletedAccount,
+  SidTypeInvalid,
+  SidTypeUnknown,
+  SidTypeComputer,
+  SidTypeLabel
 } SID_NAME_USE,*PSID_NAME_USE;
+
 typedef struct _QUOTA_LIMITS {
-       SIZE_T PagedPoolLimit;
-       SIZE_T NonPagedPoolLimit;
-       SIZE_T MinimumWorkingSetSize;
-       SIZE_T MaximumWorkingSetSize;
-       SIZE_T PagefileLimit;
-       LARGE_INTEGER TimeLimit;
+  SIZE_T PagedPoolLimit;
+  SIZE_T NonPagedPoolLimit;
+  SIZE_T MinimumWorkingSetSize;
+  SIZE_T MaximumWorkingSetSize;
+  SIZE_T PagefileLimit;
+  LARGE_INTEGER TimeLimit;
 } QUOTA_LIMITS,*PQUOTA_LIMITS;
+
+typedef struct _QUOTA_LIMITS_EX {
+  SIZE_T PagedPoolLimit;
+  SIZE_T NonPagedPoolLimit;
+  SIZE_T MinimumWorkingSetSize;
+  SIZE_T MaximumWorkingSetSize;
+  SIZE_T PagefileLimit;
+  LARGE_INTEGER TimeLimit;
+  SIZE_T Reserved1;
+  SIZE_T Reserved2;
+  SIZE_T Reserved3;
+  SIZE_T Reserved4;
+  ULONG Flags;
+  ULONG Reserved5;
+} QUOTA_LIMITS_EX, *PQUOTA_LIMITS_EX;
+
 typedef struct _IO_COUNTERS {
-       ULONGLONG  ReadOperationCount;
-       ULONGLONG  WriteOperationCount;
-       ULONGLONG  OtherOperationCount;
-       ULONGLONG ReadTransferCount;
-       ULONGLONG WriteTransferCount;
-       ULONGLONG OtherTransferCount;
+  ULONGLONG ReadOperationCount;
+  ULONGLONG WriteOperationCount;
+  ULONGLONG OtherOperationCount;
+  ULONGLONG ReadTransferCount;
+  ULONGLONG WriteTransferCount;
+  ULONGLONG OtherTransferCount;
 } IO_COUNTERS, *PIO_COUNTERS;
+
 typedef struct _FILE_NOTIFY_INFORMATION {
-       DWORD NextEntryOffset;
-       DWORD Action;
-       DWORD FileNameLength;
-       WCHAR FileName[1];
+  DWORD NextEntryOffset;
+  DWORD Action;
+  DWORD FileNameLength;
+  WCHAR FileName[1];
 } FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION;
+
 typedef struct _TAPE_ERASE {
-       DWORD Type;
-       BOOLEAN Immediate;
-} TAPE_ERASE,*PTAPE_ERASE;
+  DWORD Type;
+  BOOLEAN Immediate;
+} TAPE_ERASE, *PTAPE_ERASE;
+
 typedef struct _TAPE_GET_DRIVE_PARAMETERS {
-       BOOLEAN ECC;
-       BOOLEAN Compression;
-       BOOLEAN DataPadding;
-       BOOLEAN ReportSetmarks;
-       DWORD DefaultBlockSize;
-       DWORD MaximumBlockSize;
-       DWORD MinimumBlockSize;
-       DWORD MaximumPartitionCount;
-       DWORD FeaturesLow;
-       DWORD FeaturesHigh;
-       DWORD EOTWarningZoneSize;
-} TAPE_GET_DRIVE_PARAMETERS,*PTAPE_GET_DRIVE_PARAMETERS;
+  BOOLEAN ECC;
+  BOOLEAN Compression;
+  BOOLEAN DataPadding;
+  BOOLEAN ReportSetmarks;
+  DWORD DefaultBlockSize;
+  DWORD MaximumBlockSize;
+  DWORD MinimumBlockSize;
+  DWORD MaximumPartitionCount;
+  DWORD FeaturesLow;
+  DWORD FeaturesHigh;
+  DWORD EOTWarningZoneSize;
+} TAPE_GET_DRIVE_PARAMETERS, *PTAPE_GET_DRIVE_PARAMETERS;
+
 typedef struct _TAPE_GET_MEDIA_PARAMETERS {
-       LARGE_INTEGER Capacity;
-       LARGE_INTEGER Remaining;
-       DWORD BlockSize;
-       DWORD PartitionCount;
-       BOOLEAN WriteProtected;
-} TAPE_GET_MEDIA_PARAMETERS,*PTAPE_GET_MEDIA_PARAMETERS;
+  LARGE_INTEGER Capacity;
+  LARGE_INTEGER Remaining;
+  DWORD BlockSize;
+  DWORD PartitionCount;
+  BOOLEAN WriteProtected;
+} TAPE_GET_MEDIA_PARAMETERS, *PTAPE_GET_MEDIA_PARAMETERS;
+
 typedef struct _TAPE_GET_POSITION {
-       ULONG Type;
-       ULONG Partition;
-       LARGE_INTEGER Offset;
-} TAPE_GET_POSITION,*PTAPE_GET_POSITION;
+  ULONG Type;
+  ULONG Partition;
+  LARGE_INTEGER Offset;
+} TAPE_GET_POSITION, *PTAPE_GET_POSITION;
+
 typedef struct _TAPE_PREPARE {
-       DWORD Operation;
-       BOOLEAN Immediate;
-} TAPE_PREPARE,*PTAPE_PREPARE;
+  DWORD Operation;
+  BOOLEAN Immediate;
+} TAPE_PREPARE, *PTAPE_PREPARE;
+
 typedef struct _TAPE_SET_DRIVE_PARAMETERS {
-       BOOLEAN ECC;
-       BOOLEAN Compression;
-       BOOLEAN DataPadding;
-       BOOLEAN ReportSetmarks;
-       ULONG EOTWarningZoneSize;
-} TAPE_SET_DRIVE_PARAMETERS,*PTAPE_SET_DRIVE_PARAMETERS;
+  BOOLEAN ECC;
+  BOOLEAN Compression;
+  BOOLEAN DataPadding;
+  BOOLEAN ReportSetmarks;
+  DWORD EOTWarningZoneSize;
+} TAPE_SET_DRIVE_PARAMETERS, *PTAPE_SET_DRIVE_PARAMETERS;
+
 typedef struct _TAPE_SET_MEDIA_PARAMETERS {
-       ULONG BlockSize;
+  DWORD BlockSize;
 } TAPE_SET_MEDIA_PARAMETERS,*PTAPE_SET_MEDIA_PARAMETERS;
+
 typedef struct _TAPE_SET_POSITION {
-       DWORD Method;
-       DWORD Partition;
-       LARGE_INTEGER Offset;
-       BOOLEAN Immediate;
-} TAPE_SET_POSITION,*PTAPE_SET_POSITION;
+  DWORD Method;
+  DWORD Partition;
+  LARGE_INTEGER Offset;
+  BOOLEAN Immediate;
+} TAPE_SET_POSITION, *PTAPE_SET_POSITION;
+
 typedef struct _TAPE_WRITE_MARKS {
-       DWORD Type;
-       DWORD Count;
-       BOOLEAN Immediate;
-} TAPE_WRITE_MARKS,*PTAPE_WRITE_MARKS;
+  DWORD Type;
+  DWORD Count;
+  BOOLEAN Immediate;
+} TAPE_WRITE_MARKS, *PTAPE_WRITE_MARKS;
+
 typedef struct _TAPE_CREATE_PARTITION {
-       DWORD Method;
-       DWORD Count;
-       DWORD Size;
-} TAPE_CREATE_PARTITION,*PTAPE_CREATE_PARTITION;
+  DWORD Method;
+  DWORD Count;
+  DWORD Size;
+} TAPE_CREATE_PARTITION, *PTAPE_CREATE_PARTITION;
+
 typedef struct _MEMORY_BASIC_INFORMATION {
-       PVOID BaseAddress;
-       PVOID AllocationBase;
-       DWORD AllocationProtect;
-       SIZE_T RegionSize;
-       DWORD State;
-       DWORD Protect;
-       DWORD Type;
-} MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION;
+  PVOID BaseAddress;
+  PVOID AllocationBase;
+  DWORD AllocationProtect;
+  SIZE_T RegionSize;
+  DWORD State;
+  DWORD Protect;
+  DWORD Type;
+} MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;
+
 typedef struct _MESSAGE_RESOURCE_ENTRY {
-       WORD Length;
-       WORD Flags;
-       BYTE Text[1];
-} MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY;
+  WORD Length;
+  WORD Flags;
+  BYTE Text[1];
+} MESSAGE_RESOURCE_ENTRY, *PMESSAGE_RESOURCE_ENTRY;
+
 typedef struct _MESSAGE_RESOURCE_BLOCK {
-       DWORD LowId;
-       DWORD HighId;
-       DWORD OffsetToEntries;
-} MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK;
+  DWORD LowId;
+  DWORD HighId;
+  DWORD OffsetToEntries;
+} MESSAGE_RESOURCE_BLOCK, *PMESSAGE_RESOURCE_BLOCK;
+
 typedef struct _MESSAGE_RESOURCE_DATA {
-       DWORD NumberOfBlocks;
-       MESSAGE_RESOURCE_BLOCK Blocks[1];
+  DWORD NumberOfBlocks;
+  MESSAGE_RESOURCE_BLOCK Blocks[1];
 } MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA;
+
 typedef struct _LIST_ENTRY {
-       struct _LIST_ENTRY *Flink;
-       struct _LIST_ENTRY *Blink;
-} LIST_ENTRY,*PLIST_ENTRY;
+  struct _LIST_ENTRY *Flink;
+  struct _LIST_ENTRY *Blink;
+} LIST_ENTRY, *PLIST_ENTRY, *RESTRICTED_POINTER PRLIST_ENTRY;
+
 typedef struct _LIST_ENTRY32 {
-       DWORD Flink;
-       DWORD Blink;
+  DWORD Flink;
+  DWORD Blink;
 } LIST_ENTRY32,*PLIST_ENTRY32;
+
 typedef struct _LIST_ENTRY64 {
-       ULONGLONG Flink;
-       ULONGLONG Blink;
+  ULONGLONG Flink;
+  ULONGLONG Blink;
 } LIST_ENTRY64,*PLIST_ENTRY64;
 
 typedef struct _SINGLE_LIST_ENTRY {
-       struct _SINGLE_LIST_ENTRY *Next;
+  struct _SINGLE_LIST_ENTRY *Next;
 } SINGLE_LIST_ENTRY,*PSINGLE_LIST_ENTRY;
 
 //
@@ -3254,112 +3839,158 @@ typedef struct _SINGLE_LIST_ENTRY {
 #define _SLIST_HEADER_
 
 #if defined(_WIN64)
-typedef struct _SLIST_ENTRY *PSLIST_ENTRY;
+
 typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY {
-       PSLIST_ENTRY Next;
-} SLIST_ENTRY;
+  struct _SLIST_ENTRY *Next;
+} SLIST_ENTRY, *PSLIST_ENTRY;
+
+typedef struct _SLIST_ENTRY32 {
+  DWORD Next;
+} SLIST_ENTRY32, *PSLIST_ENTRY32;
+
 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;
+  _ANONYMOUS_STRUCT 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;
+  struct {
+    ULONGLONG Depth:16;
+    ULONGLONG Sequence:48;
+    ULONGLONG HeaderType:1;
+    ULONGLONG Reserved:3;
+    ULONGLONG NextEntry:60;
+  } HeaderX64;
 } SLIST_HEADER, *PSLIST_HEADER;
+
+typedef union _SLIST_HEADER32{
+  ULONGLONG Alignment;
+  _ANONYMOUS_STRUCT struct {
+    SLIST_ENTRY32 Next;
+    WORD Depth;
+    WORD Sequence;
+  } DUMMYSTRUCTNAME;
+} SLIST_HEADER32, *PSLIST_HEADER32;
+
 #else
+
 #define SLIST_ENTRY SINGLE_LIST_ENTRY
 #define _SLIST_ENTRY _SINGLE_LIST_ENTRY
 #define PSLIST_ENTRY PSINGLE_LIST_ENTRY
+
+typedef SLIST_ENTRY SLIST_ENTRY32, *PSLIST_ENTRY32;
+
 typedef union _SLIST_HEADER {
-    ULONGLONG Alignment;
-    struct {
-        SLIST_ENTRY Next;
-        USHORT Depth;
-        USHORT Sequence;
-    } DUMMYSTRUCTNAME;
+  ULONGLONG Alignment;
+  _ANONYMOUS_STRUCT struct {
+    SLIST_ENTRY Next;
+    WORD Depth;
+    WORD Sequence;
+  } DUMMYSTRUCTNAME;
 } SLIST_HEADER, *PSLIST_HEADER;
-#endif
 
-#endif /* _SLIST_HEADER_ */
+typedef SLIST_HEADER SLIST_HEADER32, *PSLIST_HEADER32;
 
+#endif /* defined(_WIN64) */
+
+#endif /* _SLIST_HEADER_ */
 
 NTSYSAPI
 VOID
 NTAPI
-RtlInitializeSListHead (
-    IN PSLIST_HEADER ListHead
-    );
+RtlInitializeSListHead(
+  _Out_ PSLIST_HEADER ListHead);
 
+_Must_inspect_result_
 NTSYSAPI
 PSLIST_ENTRY
 NTAPI
-RtlFirstEntrySList (
-    IN const SLIST_HEADER *ListHead
-    );
+RtlFirstEntrySList(
+  _In_ const SLIST_HEADER *ListHead);
 
 NTSYSAPI
 PSLIST_ENTRY
 NTAPI
-RtlInterlockedPopEntrySList (
-    IN PSLIST_HEADER ListHead
-    );
+RtlInterlockedPopEntrySList(
+  _Inout_ PSLIST_HEADER ListHead);
 
 NTSYSAPI
 PSLIST_ENTRY
 NTAPI
-RtlInterlockedPushEntrySList (
-    IN PSLIST_HEADER ListHead,
-    IN PSLIST_ENTRY ListEntry
-    );
+RtlInterlockedPushEntrySList(
+  _Inout_ PSLIST_HEADER ListHead,
+  _Inout_ __drv_aliasesMem PSLIST_ENTRY ListEntry);
 
 NTSYSAPI
 PSLIST_ENTRY
 NTAPI
-RtlInterlockedFlushSList (
-    IN PSLIST_HEADER ListHead
-    );
+RtlInterlockedFlushSList(
+  _Inout_ PSLIST_HEADER ListHead);
 
 NTSYSAPI
 WORD
 NTAPI
-RtlQueryDepthSList (
-    IN PSLIST_HEADER ListHead
-    );
+RtlQueryDepthSList(
+  _In_ PSLIST_HEADER ListHead);
+
+#ifndef _RTL_RUN_ONCE_DEF
+#define _RTL_RUN_ONCE_DEF
+
+#define RTL_RUN_ONCE_CHECK_ONLY 0x00000001UL
+#define RTL_RUN_ONCE_ASYNC 0x00000002UL
+#define RTL_RUN_ONCE_INIT_FAILED 0x00000004UL
+
+typedef union _RTL_RUN_ONCE {
+  PVOID Ptr;
+} RTL_RUN_ONCE, *PRTL_RUN_ONCE;
+
+#endif
+
+#define RTL_CONDITION_VARIABLE_INIT {0}
+#define RTL_CONDITION_VARIABLE_LOCKMODE_SHARED 0x1
+
+typedef struct _RTL_CONDITION_VARIABLE {
+  PVOID Ptr;
+} RTL_CONDITION_VARIABLE, *PRTL_CONDITION_VARIABLE;
 
 typedef struct _RTL_CRITICAL_SECTION_DEBUG {
-       WORD Type;
-       WORD CreatorBackTraceIndex;
-       struct _RTL_CRITICAL_SECTION *CriticalSection;
-       LIST_ENTRY ProcessLocksList;
-       DWORD EntryCount;
-       DWORD ContentionCount;
-    DWORD Flags;
-    WORD CreatorBackTraceIndexHigh;
-    WORD SpareWORD;
-} RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG;
+  WORD Type;
+  WORD CreatorBackTraceIndex;
+  struct _RTL_CRITICAL_SECTION *CriticalSection;
+  LIST_ENTRY ProcessLocksList;
+  DWORD EntryCount;
+  DWORD ContentionCount;
+  DWORD Flags;
+  WORD CreatorBackTraceIndexHigh;
+  WORD SpareWORD;
+} RTL_CRITICAL_SECTION_DEBUG, *PRTL_CRITICAL_SECTION_DEBUG, RTL_RESOURCE_DEBUG, *PRTL_RESOURCE_DEBUG;
+
+#include "pshpack8.h"
 typedef struct _RTL_CRITICAL_SECTION {
-       PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
-       LONG LockCount;
-       LONG RecursionCount;
-       HANDLE OwningThread;
-       HANDLE LockSemaphore;
-       ULONG_PTR SpinCount;
-} RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION;
+  PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
+  LONG LockCount;
+  LONG RecursionCount;
+  HANDLE OwningThread;
+  HANDLE LockSemaphore;
+  ULONG_PTR SpinCount;
+} RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
+#include "poppack.h"
 
 NTSYSAPI
 WORD
@@ -3375,45 +4006,42 @@ NTSYSAPI
 VOID
 NTAPI
 RtlCaptureContext(
-    PCONTEXT ContextRecord
+    _Out_ PCONTEXT ContextRecord
 );
 
 NTSYSAPI
 PVOID
 NTAPI
 RtlPcToFileHeader(
-    IN PVOID PcValue,
-    PVOID* BaseOfImage
-);
+  _In_ PVOID PcValue,
+  _Out_ PVOID* BaseOfImage);
 
 NTSYSAPI
 VOID
 NTAPI
-RtlUnwind (
-    IN PVOID TargetFrame OPTIONAL,
-    IN PVOID TargetIp OPTIONAL,
-    IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL,
-    IN PVOID ReturnValue
-    );
+RtlUnwind(
+    _In_opt_ PVOID TargetFrame,
+    _In_opt_ PVOID TargetIp,
+    _In_opt_ PEXCEPTION_RECORD ExceptionRecord,
+    _In_ PVOID ReturnValue);
 
 #define RTL_SRWLOCK_INIT {0}
-typedef struct _RTL_SRWLOCK
-{
-    PVOID Ptr;
-} RTL_SRWLOCK, *PRTL_SRWLOCK;
 
-#define RTL_CONDITION_VARIABLE_INIT {0}
-#define RTL_CONDITION_VARIABLE_LOCKMODE_SHARED  0x1
-typedef struct _RTL_CONDITION_VARIABLE
-{
-    PVOID Ptr;
-} RTL_CONDITION_VARIABLE, *PRTL_CONDITION_VARIABLE;
+typedef struct _RTL_SRWLOCK {
+  PVOID Ptr;
+} RTL_SRWLOCK, *PRTL_SRWLOCK;
 
 typedef LONG
 (NTAPI *PVECTORED_EXCEPTION_HANDLER)(
     struct _EXCEPTION_POINTERS *ExceptionInfo
 );
 
+typedef struct _PROCESSOR_NUMBER {
+  WORD Group;
+  BYTE Number;
+  BYTE Reserved;
+} PROCESSOR_NUMBER, *PPROCESSOR_NUMBER;
+
 typedef struct _GROUP_AFFINITY {
   KAFFINITY Mask;
   WORD Group;
@@ -3421,292 +4049,292 @@ typedef struct _GROUP_AFFINITY {
 } GROUP_AFFINITY, *PGROUP_AFFINITY;
 
 typedef struct _EVENTLOGRECORD {
-       DWORD Length;
-       DWORD Reserved;
-       DWORD RecordNumber;
-       DWORD TimeGenerated;
-       DWORD TimeWritten;
-       DWORD EventID;
-       WORD EventType;
-       WORD NumStrings;
-       WORD EventCategory;
-       WORD ReservedFlags;
-       DWORD ClosingRecordNumber;
-       DWORD StringOffset;
-       DWORD UserSidLength;
-       DWORD UserSidOffset;
-       DWORD DataLength;
-       DWORD DataOffset;
-} EVENTLOGRECORD,*PEVENTLOGRECORD;
+  DWORD Length;
+  DWORD Reserved;
+  DWORD RecordNumber;
+  DWORD TimeGenerated;
+  DWORD TimeWritten;
+  DWORD EventID;
+  WORD EventType;
+  WORD NumStrings;
+  WORD EventCategory;
+  WORD ReservedFlags;
+  DWORD ClosingRecordNumber;
+  DWORD StringOffset;
+  DWORD UserSidLength;
+  DWORD UserSidOffset;
+  DWORD DataLength;
+  DWORD DataOffset;
+} EVENTLOGRECORD, *PEVENTLOGRECORD;
 
 typedef struct _OSVERSIONINFOA {
-       DWORD dwOSVersionInfoSize;
-       DWORD dwMajorVersion;
-       DWORD dwMinorVersion;
-       DWORD dwBuildNumber;
-       DWORD dwPlatformId;
-       CHAR szCSDVersion[128];
-} OSVERSIONINFOA,*POSVERSIONINFOA,*LPOSVERSIONINFOA;
+  DWORD dwOSVersionInfoSize;
+  DWORD dwMajorVersion;
+  DWORD dwMinorVersion;
+  DWORD dwBuildNumber;
+  DWORD dwPlatformId;
+  CHAR szCSDVersion[128];
+} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
 
 typedef struct _OSVERSIONINFOW {
-       DWORD dwOSVersionInfoSize;
-       DWORD dwMajorVersion;
-       DWORD dwMinorVersion;
-       DWORD dwBuildNumber;
-       DWORD dwPlatformId;
-       WCHAR szCSDVersion[128];
-} OSVERSIONINFOW,*POSVERSIONINFOW,*LPOSVERSIONINFOW;
+  DWORD dwOSVersionInfoSize;
+  DWORD dwMajorVersion;
+  DWORD dwMinorVersion;
+  DWORD dwBuildNumber;
+  DWORD dwPlatformId;
+  WCHAR szCSDVersion[128];
+} OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW, RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW;
 
 typedef struct _OSVERSIONINFOEXA {
-       DWORD dwOSVersionInfoSize;
-       DWORD dwMajorVersion;
-       DWORD dwMinorVersion;
-       DWORD dwBuildNumber;
-       DWORD dwPlatformId;
-       CHAR szCSDVersion[128];
-       WORD wServicePackMajor;
-       WORD wServicePackMinor;
-       WORD wSuiteMask;
-       BYTE wProductType;
-       BYTE wReserved;
+  DWORD dwOSVersionInfoSize;
+  DWORD dwMajorVersion;
+  DWORD dwMinorVersion;
+  DWORD dwBuildNumber;
+  DWORD dwPlatformId;
+  CHAR szCSDVersion[128];
+  WORD wServicePackMajor;
+  WORD wServicePackMinor;
+  WORD wSuiteMask;
+  BYTE wProductType;
+  BYTE wReserved;
 } OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
 
 typedef struct _OSVERSIONINFOEXW {
-       DWORD dwOSVersionInfoSize;
-       DWORD dwMajorVersion;
-       DWORD dwMinorVersion;
-       DWORD dwBuildNumber;
-       DWORD dwPlatformId;
-       WCHAR szCSDVersion[128];
-       WORD wServicePackMajor;
-       WORD wServicePackMinor;
-       WORD wSuiteMask;
-       BYTE wProductType;
-       BYTE wReserved;
-} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW;
+  DWORD dwOSVersionInfoSize;
+  DWORD dwMajorVersion;
+  DWORD dwMinorVersion;
+  DWORD dwBuildNumber;
+  DWORD dwPlatformId;
+  WCHAR szCSDVersion[128];
+  WORD wServicePackMajor;
+  WORD wServicePackMinor;
+  WORD wSuiteMask;
+  BYTE wProductType;
+  BYTE wReserved;
+} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
 
 #include <pshpack2.h>
+
 typedef struct _IMAGE_VXD_HEADER {
-       WORD e32_magic;
-       BYTE e32_border;
-       BYTE e32_worder;
-       DWORD e32_level;
-       WORD e32_cpu;
-       WORD e32_os;
-       DWORD e32_ver;
-       DWORD e32_mflags;
-       DWORD e32_mpages;
-       DWORD e32_startobj;
-       DWORD e32_eip;
-       DWORD e32_stackobj;
-       DWORD e32_esp;
-       DWORD e32_pagesize;
-       DWORD e32_lastpagesize;
-       DWORD e32_fixupsize;
-       DWORD e32_fixupsum;
-       DWORD e32_ldrsize;
-       DWORD e32_ldrsum;
-       DWORD e32_objtab;
-       DWORD e32_objcnt;
-       DWORD e32_objmap;
-       DWORD e32_itermap;
-       DWORD e32_rsrctab;
-       DWORD e32_rsrccnt;
-       DWORD e32_restab;
-       DWORD e32_enttab;
-       DWORD e32_dirtab;
-       DWORD e32_dircnt;
-       DWORD e32_fpagetab;
-       DWORD e32_frectab;
-       DWORD e32_impmod;
-       DWORD e32_impmodcnt;
-       DWORD e32_impproc;
-       DWORD e32_pagesum;
-       DWORD e32_datapage;
-       DWORD e32_preload;
-       DWORD e32_nrestab;
-       DWORD e32_cbnrestab;
-       DWORD e32_nressum;
-       DWORD e32_autodata;
-       DWORD e32_debuginfo;
-       DWORD e32_debuglen;
-       DWORD e32_instpreload;
-       DWORD e32_instdemand;
-       DWORD e32_heapsize;
-       BYTE e32_res3[12];
-       DWORD e32_winresoff;
-       DWORD e32_winreslen;
-       WORD e32_devid;
-       WORD e32_ddkver;
-} IMAGE_VXD_HEADER,*PIMAGE_VXD_HEADER;
+  WORD e32_magic;
+  BYTE e32_border;
+  BYTE e32_worder;
+  DWORD e32_level;
+  WORD e32_cpu;
+  WORD e32_os;
+  DWORD e32_ver;
+  DWORD e32_mflags;
+  DWORD e32_mpages;
+  DWORD e32_startobj;
+  DWORD e32_eip;
+  DWORD e32_stackobj;
+  DWORD e32_esp;
+  DWORD e32_pagesize;
+  DWORD e32_lastpagesize;
+  DWORD e32_fixupsize;
+  DWORD e32_fixupsum;
+  DWORD e32_ldrsize;
+  DWORD e32_ldrsum;
+  DWORD e32_objtab;
+  DWORD e32_objcnt;
+  DWORD e32_objmap;
+  DWORD e32_itermap;
+  DWORD e32_rsrctab;
+  DWORD e32_rsrccnt;
+  DWORD e32_restab;
+  DWORD e32_enttab;
+  DWORD e32_dirtab;
+  DWORD e32_dircnt;
+  DWORD e32_fpagetab;
+  DWORD e32_frectab;
+  DWORD e32_impmod;
+  DWORD e32_impmodcnt;
+  DWORD e32_impproc;
+  DWORD e32_pagesum;
+  DWORD e32_datapage;
+  DWORD e32_preload;
+  DWORD e32_nrestab;
+  DWORD e32_cbnrestab;
+  DWORD e32_nressum;
+  DWORD e32_autodata;
+  DWORD e32_debuginfo;
+  DWORD e32_debuglen;
+  DWORD e32_instpreload;
+  DWORD e32_instdemand;
+  DWORD e32_heapsize;
+  BYTE e32_res3[12];
+  DWORD e32_winresoff;
+  DWORD e32_winreslen;
+  WORD e32_devid;
+  WORD e32_ddkver;
+} IMAGE_VXD_HEADER, *PIMAGE_VXD_HEADER;
+
+typedef struct _IMAGE_DOS_HEADER {
+  WORD e_magic;
+  WORD e_cblp;
+  WORD e_cp;
+  WORD e_crlc;
+  WORD e_cparhdr;
+  WORD e_minalloc;
+  WORD e_maxalloc;
+  WORD e_ss;
+  WORD e_sp;
+  WORD e_csum;
+  WORD e_ip;
+  WORD e_cs;
+  WORD e_lfarlc;
+  WORD e_ovno;
+  WORD e_res[4];
+  WORD e_oemid;
+  WORD e_oeminfo;
+  WORD e_res2[10];
+  LONG e_lfanew;
+} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
+
+typedef struct _IMAGE_OS2_HEADER {
+  WORD ne_magic;
+  CHAR ne_ver;
+  CHAR ne_rev;
+  WORD ne_enttab;
+  WORD ne_cbenttab;
+  LONG ne_crc;
+  WORD ne_flags;
+  WORD ne_autodata;
+  WORD ne_heap;
+  WORD ne_stack;
+  LONG ne_csip;
+  LONG ne_sssp;
+  WORD ne_cseg;
+  WORD ne_cmod;
+  WORD ne_cbnrestab;
+  WORD ne_segtab;
+  WORD ne_rsrctab;
+  WORD ne_restab;
+  WORD ne_modtab;
+  WORD ne_imptab;
+  LONG ne_nrestab;
+  WORD ne_cmovent;
+  WORD ne_align;
+  WORD ne_cres;
+  BYTE ne_exetyp;
+  BYTE ne_flagsothers;
+  WORD ne_pretthunks;
+  WORD ne_psegrefbytes;
+  WORD ne_swaparea;
+  WORD ne_expver;
+} IMAGE_OS2_HEADER, *PIMAGE_OS2_HEADER;
+
 #include <poppack.h>
 
 typedef struct _IMAGE_FILE_HEADER {
-       WORD Machine;
-       WORD NumberOfSections;
-       DWORD TimeDateStamp;
-       DWORD PointerToSymbolTable;
-       DWORD NumberOfSymbols;
-       WORD SizeOfOptionalHeader;
-       WORD Characteristics;
+  WORD Machine;
+  WORD NumberOfSections;
+  DWORD TimeDateStamp;
+  DWORD PointerToSymbolTable;
+  DWORD NumberOfSymbols;
+  WORD SizeOfOptionalHeader;
+  WORD Characteristics;
 } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
 
 typedef struct _IMAGE_DATA_DIRECTORY {
-       DWORD VirtualAddress;
-       DWORD Size;
-} IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY;
+  DWORD VirtualAddress;
+  DWORD Size;
+} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
 
 typedef struct _IMAGE_OPTIONAL_HEADER32 {
-       WORD Magic;
-       BYTE MajorLinkerVersion;
-       BYTE MinorLinkerVersion;
-       DWORD SizeOfCode;
-       DWORD SizeOfInitializedData;
-       DWORD SizeOfUninitializedData;
-       DWORD AddressOfEntryPoint;
-       DWORD BaseOfCode;
-       DWORD BaseOfData;
-       DWORD ImageBase;
-       DWORD SectionAlignment;
-       DWORD FileAlignment;
-       WORD MajorOperatingSystemVersion;
-       WORD MinorOperatingSystemVersion;
-       WORD MajorImageVersion;
-       WORD MinorImageVersion;
-       WORD MajorSubsystemVersion;
-       WORD MinorSubsystemVersion;
-       DWORD Win32VersionValue;
-       DWORD SizeOfImage;
-       DWORD SizeOfHeaders;
-       DWORD CheckSum;
-       WORD Subsystem;
-       WORD DllCharacteristics;
-       DWORD SizeOfStackReserve;
-       DWORD SizeOfStackCommit;
-       DWORD SizeOfHeapReserve;
-       DWORD SizeOfHeapCommit;
-       DWORD LoaderFlags;
-       DWORD NumberOfRvaAndSizes;
-       IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
-} IMAGE_OPTIONAL_HEADER32,*PIMAGE_OPTIONAL_HEADER32;
+  WORD Magic;
+  BYTE MajorLinkerVersion;
+  BYTE MinorLinkerVersion;
+  DWORD SizeOfCode;
+  DWORD SizeOfInitializedData;
+  DWORD SizeOfUninitializedData;
+  DWORD AddressOfEntryPoint;
+  DWORD BaseOfCode;
+  DWORD BaseOfData;
+  DWORD ImageBase;
+  DWORD SectionAlignment;
+  DWORD FileAlignment;
+  WORD MajorOperatingSystemVersion;
+  WORD MinorOperatingSystemVersion;
+  WORD MajorImageVersion;
+  WORD MinorImageVersion;
+  WORD MajorSubsystemVersion;
+  WORD MinorSubsystemVersion;
+  DWORD Win32VersionValue;
+  DWORD SizeOfImage;
+  DWORD SizeOfHeaders;
+  DWORD CheckSum;
+  WORD Subsystem;
+  WORD DllCharacteristics;
+  DWORD SizeOfStackReserve;
+  DWORD SizeOfStackCommit;
+  DWORD SizeOfHeapReserve;
+  DWORD SizeOfHeapCommit;
+  DWORD LoaderFlags;
+  DWORD NumberOfRvaAndSizes;
+  IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;
 
 typedef struct _IMAGE_OPTIONAL_HEADER64 {
-       WORD Magic;
-       BYTE MajorLinkerVersion;
-       BYTE MinorLinkerVersion;
-       DWORD SizeOfCode;
-       DWORD SizeOfInitializedData;
-       DWORD SizeOfUninitializedData;
-       DWORD AddressOfEntryPoint;
-       DWORD BaseOfCode;
-       ULONGLONG ImageBase;
-       DWORD SectionAlignment;
-       DWORD FileAlignment;
-       WORD MajorOperatingSystemVersion;
-       WORD MinorOperatingSystemVersion;
-       WORD MajorImageVersion;
-       WORD MinorImageVersion;
-       WORD MajorSubsystemVersion;
-       WORD MinorSubsystemVersion;
-       DWORD Win32VersionValue;
-       DWORD SizeOfImage;
-       DWORD SizeOfHeaders;
-       DWORD CheckSum;
-       WORD Subsystem;
-       WORD DllCharacteristics;
-       ULONGLONG SizeOfStackReserve;
-       ULONGLONG SizeOfStackCommit;
-       ULONGLONG SizeOfHeapReserve;
-       ULONGLONG SizeOfHeapCommit;
-       DWORD LoaderFlags;
-       DWORD NumberOfRvaAndSizes;
-       IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
-} IMAGE_OPTIONAL_HEADER64,*PIMAGE_OPTIONAL_HEADER64;
+  WORD Magic;
+  BYTE MajorLinkerVersion;
+  BYTE MinorLinkerVersion;
+  DWORD SizeOfCode;
+  DWORD SizeOfInitializedData;
+  DWORD SizeOfUninitializedData;
+  DWORD AddressOfEntryPoint;
+  DWORD BaseOfCode;
+  ULONGLONG ImageBase;
+  DWORD SectionAlignment;
+  DWORD FileAlignment;
+  WORD MajorOperatingSystemVersion;
+  WORD MinorOperatingSystemVersion;
+  WORD MajorImageVersion;
+  WORD MinorImageVersion;
+  WORD MajorSubsystemVersion;
+  WORD MinorSubsystemVersion;
+  DWORD Win32VersionValue;
+  DWORD SizeOfImage;
+  DWORD SizeOfHeaders;
+  DWORD CheckSum;
+  WORD Subsystem;
+  WORD DllCharacteristics;
+  ULONGLONG SizeOfStackReserve;
+  ULONGLONG SizeOfStackCommit;
+  ULONGLONG SizeOfHeapReserve;
+  ULONGLONG SizeOfHeapCommit;
+  DWORD LoaderFlags;
+  DWORD NumberOfRvaAndSizes;
+  IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64;
 
 typedef struct _IMAGE_ROM_OPTIONAL_HEADER {
-       WORD Magic;
-       BYTE MajorLinkerVersion;
-       BYTE MinorLinkerVersion;
-       DWORD SizeOfCode;
-       DWORD SizeOfInitializedData;
-       DWORD SizeOfUninitializedData;
-       DWORD AddressOfEntryPoint;
-       DWORD BaseOfCode;
-       DWORD BaseOfData;
-       DWORD BaseOfBss;
-       DWORD GprMask;
-       DWORD CprMask[4];
-       DWORD GpValue;
-} IMAGE_ROM_OPTIONAL_HEADER,*PIMAGE_ROM_OPTIONAL_HEADER;
-
-#include <pshpack2.h>
-typedef struct _IMAGE_DOS_HEADER {
-       WORD e_magic;
-       WORD e_cblp;
-       WORD e_cp;
-       WORD e_crlc;
-       WORD e_cparhdr;
-       WORD e_minalloc;
-       WORD e_maxalloc;
-       WORD e_ss;
-       WORD e_sp;
-       WORD e_csum;
-       WORD e_ip;
-       WORD e_cs;
-       WORD e_lfarlc;
-       WORD e_ovno;
-       WORD e_res[4];
-       WORD e_oemid;
-       WORD e_oeminfo;
-       WORD e_res2[10];
-       LONG e_lfanew;
-} IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
-
-typedef struct _IMAGE_OS2_HEADER {
-       WORD ne_magic;
-       CHAR ne_ver;
-       CHAR ne_rev;
-       WORD ne_enttab;
-       WORD ne_cbenttab;
-       LONG ne_crc;
-       WORD ne_flags;
-       WORD ne_autodata;
-       WORD ne_heap;
-       WORD ne_stack;
-       LONG ne_csip;
-       LONG ne_sssp;
-       WORD ne_cseg;
-       WORD ne_cmod;
-       WORD ne_cbnrestab;
-       WORD ne_segtab;
-       WORD ne_rsrctab;
-       WORD ne_restab;
-       WORD ne_modtab;
-       WORD ne_imptab;
-       LONG ne_nrestab;
-       WORD ne_cmovent;
-       WORD ne_align;
-       WORD ne_cres;
-       BYTE ne_exetyp;
-       BYTE ne_flagsothers;
-       WORD ne_pretthunks;
-       WORD ne_psegrefbytes;
-       WORD ne_swaparea;
-       WORD ne_expver;
-} IMAGE_OS2_HEADER,*PIMAGE_OS2_HEADER;
-#include <poppack.h>
+  WORD Magic;
+  BYTE MajorLinkerVersion;
+  BYTE MinorLinkerVersion;
+  DWORD SizeOfCode;
+  DWORD SizeOfInitializedData;
+  DWORD SizeOfUninitializedData;
+  DWORD AddressOfEntryPoint;
+  DWORD BaseOfCode;
+  DWORD BaseOfData;
+  DWORD BaseOfBss;
+  DWORD GprMask;
+  DWORD CprMask[4];
+  DWORD GpValue;
+} IMAGE_ROM_OPTIONAL_HEADER, *PIMAGE_ROM_OPTIONAL_HEADER;
 
 typedef struct _IMAGE_NT_HEADERS32 {
-       DWORD Signature;
-       IMAGE_FILE_HEADER FileHeader;
-       IMAGE_OPTIONAL_HEADER32 OptionalHeader;
-} IMAGE_NT_HEADERS32,*PIMAGE_NT_HEADERS32;
+  DWORD Signature;
+  IMAGE_FILE_HEADER FileHeader;
+  IMAGE_OPTIONAL_HEADER32 OptionalHeader;
+} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
 
 typedef struct _IMAGE_NT_HEADERS64 {
-       DWORD Signature;
-       IMAGE_FILE_HEADER FileHeader;
-       IMAGE_OPTIONAL_HEADER64 OptionalHeader;
-} IMAGE_NT_HEADERS64,*PIMAGE_NT_HEADERS64;
+  DWORD Signature;
+  IMAGE_FILE_HEADER FileHeader;
+  IMAGE_OPTIONAL_HEADER64 OptionalHeader;
+} IMAGE_NT_HEADERS64, *PIMAGE_NT_HEADERS64;
 
 #ifdef _WIN64
 typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER;
@@ -3721,217 +4349,225 @@ typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS;
 #endif
 
 typedef struct _IMAGE_ROM_HEADERS {
-       IMAGE_FILE_HEADER FileHeader;
-       IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
-} IMAGE_ROM_HEADERS,*PIMAGE_ROM_HEADERS;
+  IMAGE_FILE_HEADER FileHeader;
+  IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
+} IMAGE_ROM_HEADERS, *PIMAGE_ROM_HEADERS;
 
 typedef struct _IMAGE_SECTION_HEADER {
-       BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
-       union {
-               DWORD PhysicalAddress;
-               DWORD VirtualSize;
-       } Misc;
-       DWORD VirtualAddress;
-       DWORD SizeOfRawData;
-       DWORD PointerToRawData;
-       DWORD PointerToRelocations;
-       DWORD PointerToLinenumbers;
-       WORD NumberOfRelocations;
-       WORD NumberOfLinenumbers;
-       DWORD Characteristics;
-} IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
+  BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
+  union {
+    DWORD PhysicalAddress;
+    DWORD VirtualSize;
+  } Misc;
+  DWORD VirtualAddress;
+  DWORD SizeOfRawData;
+  DWORD PointerToRawData;
+  DWORD PointerToRelocations;
+  DWORD PointerToLinenumbers;
+  WORD NumberOfRelocations;
+  WORD NumberOfLinenumbers;
+  DWORD Characteristics;
+} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
 
 #include <pshpack2.h>
+
 typedef struct _IMAGE_SYMBOL {
-       union {
-               BYTE ShortName[8];
-               struct {
-                       DWORD Short;
-                       DWORD Long;
-               } Name;
-               PBYTE LongName[2];
-       } N;
-       DWORD Value;
-       SHORT SectionNumber;
-       WORD Type;
-       BYTE StorageClass;
-       BYTE NumberOfAuxSymbols;
-} IMAGE_SYMBOL,*PIMAGE_SYMBOL;
+  union {
+    BYTE ShortName[8];
+    struct {
+      DWORD Short;
+      DWORD Long;
+    } Name;
+    PBYTE LongName[2];
+  } N;
+  DWORD Value;
+  SHORT SectionNumber;
+  WORD Type;
+  BYTE StorageClass;
+  BYTE NumberOfAuxSymbols;
+} IMAGE_SYMBOL, *PIMAGE_SYMBOL;
 
 typedef struct _IMAGE_LINENUMBER {
-       union {
-               DWORD SymbolTableIndex;
-               DWORD VirtualAddress;
-       } Type;
-       WORD Linenumber;
-} IMAGE_LINENUMBER,*PIMAGE_LINENUMBER;
+  union {
+    DWORD SymbolTableIndex;
+    DWORD VirtualAddress;
+  } Type;
+  WORD Linenumber;
+} IMAGE_LINENUMBER, UNALIGNED *PIMAGE_LINENUMBER;
+
+typedef struct IMAGE_AUX_SYMBOL_TOKEN_DEF {
+  BYTE bAuxType;
+  BYTE bReserved;
+  DWORD SymbolTableIndex;
+  BYTE rgbReserved[12];
+} IMAGE_AUX_SYMBOL_TOKEN_DEF, UNALIGNED *PIMAGE_AUX_SYMBOL_TOKEN_DEF;
 
 typedef union _IMAGE_AUX_SYMBOL {
-       struct {
-               DWORD TagIndex;
-               union {
-                       struct {
-                               WORD Linenumber;
-                               WORD Size;
-                       } LnSz;
-                       DWORD TotalSize;
-               } Misc;
-               union {
-                       struct {
-                               DWORD PointerToLinenumber;
-                               DWORD PointerToNextFunction;
-                       } Function;
-                       struct {
-                               WORD Dimension[4];
-                       } Array;
-               } FcnAry;
-               WORD TvIndex;
-       } Sym;
-       struct {
-               BYTE Name[IMAGE_SIZEOF_SYMBOL];
-       } File;
-       struct {
-               DWORD Length;
-               WORD NumberOfRelocations;
-               WORD NumberOfLinenumbers;
-               DWORD CheckSum;
-               SHORT Number;
-               BYTE Selection;
-       } Section;
-} IMAGE_AUX_SYMBOL,*PIMAGE_AUX_SYMBOL;
+  struct {
+    DWORD TagIndex;
+    union {
+      struct {
+        WORD Linenumber;
+        WORD Size;
+      } LnSz;
+      DWORD TotalSize;
+    } Misc;
+    union {
+      struct {
+        DWORD PointerToLinenumber;
+        DWORD PointerToNextFunction;
+      } Function;
+      struct {
+        WORD Dimension[4];
+      } Array;
+    } FcnAry;
+    WORD TvIndex;
+  } Sym;
+  struct {
+    BYTE Name[IMAGE_SIZEOF_SYMBOL];
+  } File;
+  struct {
+    DWORD Length;
+    WORD NumberOfRelocations;
+    WORD NumberOfLinenumbers;
+    DWORD CheckSum;
+    SHORT Number;
+    BYTE Selection;
+    BYTE bReserved;
+    SHORT HighNumber;
+  } Section;
+  IMAGE_AUX_SYMBOL_TOKEN_DEF TokenDef;
+  struct {
+    DWORD crc;
+    BYTE rgbReserved[14];
+  } CRC;
+} IMAGE_AUX_SYMBOL, *PIMAGE_AUX_SYMBOL;
+
+typedef struct _IMAGE_RELOCATION {
+  _ANONYMOUS_UNION union {
+    DWORD VirtualAddress;
+    DWORD RelocCount;
+  } DUMMYUNIONNAME;
+  DWORD SymbolTableIndex;
+  WORD Type;
+} IMAGE_RELOCATION, UNALIGNED *PIMAGE_RELOCATION;
+
+#include <poppack.h>
 
 #ifndef __IMAGE_COR20_HEADER_DEFINED__
 #define __IMAGE_COR20_HEADER_DEFINED__
 
-typedef enum ReplacesCorHdrNumericDefines
-{
-    COMIMAGE_FLAGS_ILONLY           = 0x00000001,
-    COMIMAGE_FLAGS_32BITREQUIRED    = 0x00000002,
-    COMIMAGE_FLAGS_IL_LIBRARY       = 0x00000004,
-    COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,
-    COMIMAGE_FLAGS_TRACKDEBUGDATA   = 0x00010000,
-
-    COR_VERSION_MAJOR_V2       = 2,
-    COR_VERSION_MAJOR          = COR_VERSION_MAJOR_V2,
-    COR_VERSION_MINOR          = 0,
-    COR_DELETED_NAME_LENGTH    = 8,
-    COR_VTABLEGAP_NAME_LENGTH  = 8,
-
-    NATIVE_TYPE_MAX_CB = 1,
-    COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE = 0xff,
-
-    IMAGE_COR_MIH_METHODRVA  = 0x01,
-    IMAGE_COR_MIH_EHRVA      = 0x02,
-    IMAGE_COR_MIH_BASICBLOCK = 0x08,
-
-    COR_VTABLE_32BIT             = 0x01,
-    COR_VTABLE_64BIT             = 0x02,
-    COR_VTABLE_FROM_UNMANAGED    = 0x04,
-    COR_VTABLE_CALL_MOST_DERIVED = 0x10,
-
-    IMAGE_COR_EATJ_THUNK_SIZE = 32,
-
-    MAX_CLASS_NAME   = 1024,
-    MAX_PACKAGE_NAME = 1024,
+typedef enum ReplacesCorHdrNumericDefines {
+  COMIMAGE_FLAGS_ILONLY = 0x00000001,
+  COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002,
+  COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004,
+  COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,
+  COMIMAGE_FLAGS_NATIVE_ENTRYPOINT = 0x00000010,
+  COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,
+  COR_VERSION_MAJOR_V2 = 2,
+  COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2,
+  COR_VERSION_MINOR = 0,
+  COR_DELETED_NAME_LENGTH = 8,
+  COR_VTABLEGAP_NAME_LENGTH = 8,
+  NATIVE_TYPE_MAX_CB = 1,
+  COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE = 0xFF,
+  IMAGE_COR_MIH_METHODRVA = 0x01,
+  IMAGE_COR_MIH_EHRVA = 0x02,
+  IMAGE_COR_MIH_BASICBLOCK = 0x08,
+  COR_VTABLE_32BIT = 0x01,
+  COR_VTABLE_64BIT = 0x02,
+  COR_VTABLE_FROM_UNMANAGED = 0x04,
+  COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN = 0x08,
+  COR_VTABLE_CALL_MOST_DERIVED = 0x10,
+  IMAGE_COR_EATJ_THUNK_SIZE = 32,
+  MAX_CLASS_NAME = 1024,
+  MAX_PACKAGE_NAME = 1024
 } ReplacesCorHdrNumericDefines;
 
-typedef struct IMAGE_COR20_HEADER
-{
-    DWORD cb;
-    WORD  MajorRuntimeVersion;
-    WORD  MinorRuntimeVersion;
-
-    IMAGE_DATA_DIRECTORY MetaData;
-    DWORD Flags;
+typedef struct IMAGE_COR20_HEADER {
+  DWORD cb;
+  WORD MajorRuntimeVersion;
+  WORD MinorRuntimeVersion;
+  IMAGE_DATA_DIRECTORY MetaData;
+  DWORD Flags;
+  _ANONYMOUS_UNION union {
     DWORD EntryPointToken;
-
-    IMAGE_DATA_DIRECTORY Resources;
-    IMAGE_DATA_DIRECTORY StrongNameSignature;
-    IMAGE_DATA_DIRECTORY CodeManagerTable;
-    IMAGE_DATA_DIRECTORY VTableFixups;
-    IMAGE_DATA_DIRECTORY ExportAddressTableJumps;
-    IMAGE_DATA_DIRECTORY ManagedNativeHeader;
-
+    DWORD EntryPointRVA;
+  } DUMMYUNIONNAME;
+  IMAGE_DATA_DIRECTORY Resources;
+  IMAGE_DATA_DIRECTORY StrongNameSignature;
+  IMAGE_DATA_DIRECTORY CodeManagerTable;
+  IMAGE_DATA_DIRECTORY VTableFixups;
+  IMAGE_DATA_DIRECTORY ExportAddressTableJumps;
+  IMAGE_DATA_DIRECTORY ManagedNativeHeader;
 } IMAGE_COR20_HEADER, *PIMAGE_COR20_HEADER;
 
-#endif
+#endif /* __IMAGE_COR20_HEADER_DEFINED__ */
 
 typedef struct _IMAGE_COFF_SYMBOLS_HEADER {
-       DWORD NumberOfSymbols;
-       DWORD LvaToFirstSymbol;
-       DWORD NumberOfLinenumbers;
-       DWORD LvaToFirstLinenumber;
-       DWORD RvaToFirstByteOfCode;
-       DWORD RvaToLastByteOfCode;
-       DWORD RvaToFirstByteOfData;
-       DWORD RvaToLastByteOfData;
-} IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER;
-
-typedef struct _IMAGE_RELOCATION {
-       _ANONYMOUS_UNION union {
-               DWORD VirtualAddress;
-               DWORD RelocCount;
-       } DUMMYUNIONNAME;
-       DWORD SymbolTableIndex;
-       WORD Type;
-} IMAGE_RELOCATION,*PIMAGE_RELOCATION;
-#include <poppack.h>
+  DWORD NumberOfSymbols;
+  DWORD LvaToFirstSymbol;
+  DWORD NumberOfLinenumbers;
+  DWORD LvaToFirstLinenumber;
+  DWORD RvaToFirstByteOfCode;
+  DWORD RvaToLastByteOfCode;
+  DWORD RvaToFirstByteOfData;
+  DWORD RvaToLastByteOfData;
+} IMAGE_COFF_SYMBOLS_HEADER, *PIMAGE_COFF_SYMBOLS_HEADER;
 
 typedef struct _IMAGE_BASE_RELOCATION {
-       DWORD VirtualAddress;
-       DWORD SizeOfBlock;
-} IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION;
+  DWORD VirtualAddress;
+  DWORD SizeOfBlock;
+} IMAGE_BASE_RELOCATION, UNALIGNED *PIMAGE_BASE_RELOCATION;
 
 typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER {
-       BYTE Name[16];
-       BYTE Date[12];
-       BYTE UserID[6];
-       BYTE GroupID[6];
-       BYTE Mode[8];
-       BYTE Size[10];
-       BYTE EndHeader[2];
-} IMAGE_ARCHIVE_MEMBER_HEADER,*PIMAGE_ARCHIVE_MEMBER_HEADER;
+  BYTE Name[16];
+  BYTE Date[12];
+  BYTE UserID[6];
+  BYTE GroupID[6];
+  BYTE Mode[8];
+  BYTE Size[10];
+  BYTE EndHeader[2];
+} IMAGE_ARCHIVE_MEMBER_HEADER, *PIMAGE_ARCHIVE_MEMBER_HEADER;
 
 typedef struct _IMAGE_EXPORT_DIRECTORY {
-       DWORD Characteristics;
-       DWORD TimeDateStamp;
-       WORD MajorVersion;
-       WORD MinorVersion;
-       DWORD Name;
-       DWORD Base;
-       DWORD NumberOfFunctions;
-       DWORD NumberOfNames;
-       DWORD AddressOfFunctions;
-       DWORD AddressOfNames;
-       DWORD AddressOfNameOrdinals;
-} IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;
+  DWORD Characteristics;
+  DWORD TimeDateStamp;
+  WORD MajorVersion;
+  WORD MinorVersion;
+  DWORD Name;
+  DWORD Base;
+  DWORD NumberOfFunctions;
+  DWORD NumberOfNames;
+  DWORD AddressOfFunctions;
+  DWORD AddressOfNames;
+  DWORD AddressOfNameOrdinals;
+} IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;
 
 typedef struct _IMAGE_IMPORT_BY_NAME {
-       WORD Hint;
-       BYTE Name[1];
-} IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME;
+  WORD Hint;
+  BYTE Name[1];
+} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;
 
 #include <pshpack8.h>
 typedef struct _IMAGE_THUNK_DATA64 {
-    union {
-        ULONGLONG ForwarderString;
-        ULONGLONG Function;
-        ULONGLONG Ordinal;
-        ULONGLONG AddressOfData;
-    } u1;
-} IMAGE_THUNK_DATA64;
-typedef IMAGE_THUNK_DATA64 *PIMAGE_THUNK_DATA64;
+  union {
+    ULONGLONG ForwarderString;
+    ULONGLONG Function;
+    ULONGLONG Ordinal;
+    ULONGLONG AddressOfData;
+  } u1;
+} IMAGE_THUNK_DATA64, *PIMAGE_THUNK_DATA64;
 #include <poppack.h>
 
 typedef struct _IMAGE_THUNK_DATA32 {
-    union {
-        DWORD ForwarderString;
-        DWORD Function;
-        DWORD Ordinal;
-        DWORD AddressOfData;
-    } u1;
-} IMAGE_THUNK_DATA32;
-typedef IMAGE_THUNK_DATA32 *PIMAGE_THUNK_DATA32;
+  union {
+    DWORD ForwarderString;
+    DWORD Function;
+    DWORD Ordinal;
+    DWORD AddressOfData;
+  } u1;
+} IMAGE_THUNK_DATA32, *PIMAGE_THUNK_DATA32;
 
 #define IMAGE_ORDINAL_FLAG64 0x8000000000000000ULL
 #define IMAGE_ORDINAL_FLAG32 0x80000000
@@ -3944,24 +4580,23 @@ typedef VOID
 (NTAPI *PIMAGE_TLS_CALLBACK)(PVOID DllHandle,DWORD Reason,PVOID Reserved);
 
 typedef struct _IMAGE_TLS_DIRECTORY64 {
-    ULONGLONG StartAddressOfRawData;
-    ULONGLONG EndAddressOfRawData;
-    ULONGLONG AddressOfIndex;
-    ULONGLONG AddressOfCallBacks;
-    DWORD SizeOfZeroFill;
-    DWORD Characteristics;
-} IMAGE_TLS_DIRECTORY64;
-typedef IMAGE_TLS_DIRECTORY64 *PIMAGE_TLS_DIRECTORY64;
+  ULONGLONG StartAddressOfRawData;
+  ULONGLONG EndAddressOfRawData;
+  ULONGLONG AddressOfIndex;
+  ULONGLONG AddressOfCallBacks;
+  DWORD SizeOfZeroFill;
+  DWORD Characteristics;
+} IMAGE_TLS_DIRECTORY64, *PIMAGE_TLS_DIRECTORY64;
 
 typedef struct _IMAGE_TLS_DIRECTORY32 {
-    DWORD StartAddressOfRawData;
-    DWORD EndAddressOfRawData;
-    DWORD AddressOfIndex;
-    DWORD AddressOfCallBacks;
-    DWORD SizeOfZeroFill;
-    DWORD Characteristics;
-} IMAGE_TLS_DIRECTORY32;
-typedef IMAGE_TLS_DIRECTORY32 *PIMAGE_TLS_DIRECTORY32;
+  DWORD StartAddressOfRawData;
+  DWORD EndAddressOfRawData;
+  DWORD AddressOfIndex;
+  DWORD AddressOfCallBacks;
+  DWORD SizeOfZeroFill;
+  DWORD Characteristics;
+} IMAGE_TLS_DIRECTORY32, *PIMAGE_TLS_DIRECTORY32;
+
 #ifdef _WIN64
 #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG64
 #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL64(Ordinal)
@@ -3981,230 +4616,276 @@ typedef PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY;
 #endif
 
 typedef struct _IMAGE_IMPORT_DESCRIPTOR {
-       _ANONYMOUS_UNION union {
-               DWORD Characteristics;
-               ULONG OriginalFirstThunk;
-       } DUMMYUNIONNAME;
-       DWORD TimeDateStamp;
-       DWORD ForwarderChain;
-       DWORD Name;
-       ULONG FirstThunk;
-} IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR;
+  _ANONYMOUS_UNION union {
+    DWORD Characteristics;
+    DWORD OriginalFirstThunk;
+  } DUMMYUNIONNAME;
+  DWORD TimeDateStamp;
+  DWORD ForwarderChain;
+  DWORD Name;
+  DWORD FirstThunk;
+} IMAGE_IMPORT_DESCRIPTOR, UNALIGNED *PIMAGE_IMPORT_DESCRIPTOR;
 
 typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR {
-       DWORD TimeDateStamp;
-       WORD OffsetModuleName;
-       WORD NumberOfModuleForwarderRefs;
-} IMAGE_BOUND_IMPORT_DESCRIPTOR,*PIMAGE_BOUND_IMPORT_DESCRIPTOR;
+  DWORD TimeDateStamp;
+  WORD OffsetModuleName;
+  WORD NumberOfModuleForwarderRefs;
+} IMAGE_BOUND_IMPORT_DESCRIPTOR, *PIMAGE_BOUND_IMPORT_DESCRIPTOR;
 
 typedef struct _IMAGE_BOUND_FORWARDER_REF {
-       DWORD TimeDateStamp;
-       WORD OffsetModuleName;
-       WORD Reserved;
-} IMAGE_BOUND_FORWARDER_REF,*PIMAGE_BOUND_FORWARDER_REF;
+  DWORD TimeDateStamp;
+  WORD OffsetModuleName;
+  WORD Reserved;
+} IMAGE_BOUND_FORWARDER_REF, *PIMAGE_BOUND_FORWARDER_REF;
+
+typedef struct _IMAGE_DELAYLOAD_DESCRIPTOR {
+  union {
+    DWORD AllAttributes;
+    struct {
+      DWORD RvaBased:1;
+      DWORD ReservedAttributes:31;
+    };
+  } Attributes;
+  DWORD DllNameRVA;
+  DWORD ModuleHandleRVA;
+  DWORD ImportAddressTableRVA;
+  DWORD ImportNameTableRVA;
+  DWORD BoundImportAddressTableRVA;
+  DWORD UnloadInformationTableRVA;
+  DWORD TimeDateStamp;
+} IMAGE_DELAYLOAD_DESCRIPTOR, *PIMAGE_DELAYLOAD_DESCRIPTOR;
+
+typedef const IMAGE_DELAYLOAD_DESCRIPTOR *PCIMAGE_DELAYLOAD_DESCRIPTOR;
 
 typedef struct _IMAGE_RESOURCE_DIRECTORY {
-       DWORD Characteristics;
-       DWORD TimeDateStamp;
-       WORD MajorVersion;
-       WORD MinorVersion;
-       WORD NumberOfNamedEntries;
-       WORD NumberOfIdEntries;
-} IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY;
-_ANONYMOUS_STRUCT typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
-       _ANONYMOUS_UNION union {
-               _ANONYMOUS_STRUCT struct {
-                       DWORD NameOffset:31;
-                       DWORD NameIsString:1;
-               }DUMMYSTRUCTNAME1;
-               DWORD Name;
-               _ANONYMOUS_STRUCT struct {
-                       WORD Id;
-                       WORD __pad;
-               }DUMMYSTRUCTNAME2;
-       } DUMMYUNIONNAME1;
-       _ANONYMOUS_UNION union {
-               DWORD OffsetToData;
-               _ANONYMOUS_STRUCT struct {
-                       DWORD OffsetToDirectory:31;
-                       DWORD DataIsDirectory:1;
-               } DUMMYSTRUCTNAME3;
-       } DUMMYUNIONNAME2;
-} IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY;
+  DWORD Characteristics;
+  DWORD TimeDateStamp;
+  WORD MajorVersion;
+  WORD MinorVersion;
+  WORD NumberOfNamedEntries;
+  WORD NumberOfIdEntries;
+} IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;
+
+typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
+  _ANONYMOUS_UNION union {
+    _ANONYMOUS_STRUCT struct {
+      DWORD NameOffset:31;
+      DWORD NameIsString:1;
+    } DUMMYSTRUCTNAME1;
+    DWORD Name;
+    WORD Id;
+  } DUMMYUNIONNAME1;
+  _ANONYMOUS_UNION union {
+    DWORD OffsetToData;
+    _ANONYMOUS_STRUCT struct {
+      DWORD OffsetToDirectory:31;
+      DWORD DataIsDirectory:1;
+    } DUMMYSTRUCTNAME2;
+  } DUMMYUNIONNAME2;
+} IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY;
 
 typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING {
-       WORD Length;
-       CHAR NameString[1];
-} IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING;
+  WORD Length;
+  CHAR NameString[1];
+} IMAGE_RESOURCE_DIRECTORY_STRING, *PIMAGE_RESOURCE_DIRECTORY_STRING;
 
 typedef struct _IMAGE_RESOURCE_DIR_STRING_U {
-       WORD Length;
-       WCHAR NameString[1];
-} IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U;
+  WORD Length;
+  WCHAR NameString[1];
+} IMAGE_RESOURCE_DIR_STRING_U, *PIMAGE_RESOURCE_DIR_STRING_U;
 
 typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
-       DWORD OffsetToData;
-       DWORD Size;
-       DWORD CodePage;
-       DWORD Reserved;
-} IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY;
-
-typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY {
-    DWORD Size;
-    DWORD TimeDateStamp;
-    WORD MajorVersion;
-    WORD MinorVersion;
-    DWORD GlobalFlagsClear;
-    DWORD GlobalFlagsSet;
-    DWORD CriticalSectionDefaultTimeout;
-    DWORD DeCommitFreeBlockThreshold;
-    DWORD DeCommitTotalFreeThreshold;
-    DWORD LockPrefixTable;
-    DWORD MaximumAllocationSize;
-    DWORD VirtualMemoryThreshold;
-    DWORD ProcessHeapFlags;
-    DWORD ProcessAffinityMask;
-    WORD CSDVersion;
-    WORD Reserved1;
-    DWORD EditList;
-    DWORD SecurityCookie;
-    DWORD SEHandlerTable;
-    DWORD SEHandlerCount;
-} IMAGE_LOAD_CONFIG_DIRECTORY,*PIMAGE_LOAD_CONFIG_DIRECTORY;
+  DWORD OffsetToData;
+  DWORD Size;
+  DWORD CodePage;
+  DWORD Reserved;
+} IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY;
+
+typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY32 {
+  DWORD Size;
+  DWORD TimeDateStamp;
+  WORD MajorVersion;
+  WORD MinorVersion;
+  DWORD GlobalFlagsClear;
+  DWORD GlobalFlagsSet;
+  DWORD CriticalSectionDefaultTimeout;
+  DWORD DeCommitFreeBlockThreshold;
+  DWORD DeCommitTotalFreeThreshold;
+  DWORD LockPrefixTable;
+  DWORD MaximumAllocationSize;
+  DWORD VirtualMemoryThreshold;
+  DWORD ProcessHeapFlags;
+  DWORD ProcessAffinityMask;
+  WORD CSDVersion;
+  WORD Reserved1;
+  DWORD EditList;
+  DWORD SecurityCookie;
+  DWORD SEHandlerTable;
+  DWORD SEHandlerCount;
+} IMAGE_LOAD_CONFIG_DIRECTORY32, *PIMAGE_LOAD_CONFIG_DIRECTORY32;
+
+typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY64 {
+  DWORD Size;
+  DWORD TimeDateStamp;
+  WORD MajorVersion;
+  WORD MinorVersion;
+  DWORD GlobalFlagsClear;
+  DWORD GlobalFlagsSet;
+  DWORD CriticalSectionDefaultTimeout;
+  ULONGLONG DeCommitFreeBlockThreshold;
+  ULONGLONG DeCommitTotalFreeThreshold;
+  ULONGLONG LockPrefixTable;
+  ULONGLONG MaximumAllocationSize;
+  ULONGLONG VirtualMemoryThreshold;
+  ULONGLONG ProcessAffinityMask;
+  DWORD ProcessHeapFlags;
+  WORD CSDVersion;
+  WORD Reserved1;
+  ULONGLONG EditList;
+  ULONGLONG SecurityCookie;
+  ULONGLONG SEHandlerTable;
+  ULONGLONG SEHandlerCount;
+} IMAGE_LOAD_CONFIG_DIRECTORY64, *PIMAGE_LOAD_CONFIG_DIRECTORY64;
+
+#ifdef _WIN64
+typedef IMAGE_LOAD_CONFIG_DIRECTORY64 IMAGE_LOAD_CONFIG_DIRECTORY;
+typedef PIMAGE_LOAD_CONFIG_DIRECTORY64 PIMAGE_LOAD_CONFIG_DIRECTORY;
+#else
+typedef IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY;
+typedef PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY;
+#endif
 
 typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY {
-       DWORD BeginAddress;
-       DWORD EndAddress;
-       PVOID ExceptionHandler;
-       PVOID HandlerData;
-       DWORD PrologEndAddress;
-} IMAGE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_RUNTIME_FUNCTION_ENTRY;
+  DWORD BeginAddress;
+  DWORD EndAddress;
+  DWORD UnwindInfoAddress;
+} IMAGE_RUNTIME_FUNCTION_ENTRY, *PIMAGE_RUNTIME_FUNCTION_ENTRY;
 
 typedef struct _IMAGE_DEBUG_DIRECTORY {
-       DWORD Characteristics;
-       DWORD TimeDateStamp;
-       WORD MajorVersion;
-       WORD MinorVersion;
-       DWORD Type;
-       DWORD SizeOfData;
-       DWORD AddressOfRawData;
-       DWORD PointerToRawData;
-} IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY;
+  DWORD Characteristics;
+  DWORD TimeDateStamp;
+  WORD MajorVersion;
+  WORD MinorVersion;
+  DWORD Type;
+  DWORD SizeOfData;
+  DWORD AddressOfRawData;
+  DWORD PointerToRawData;
+} IMAGE_DEBUG_DIRECTORY, *PIMAGE_DEBUG_DIRECTORY;
 
 typedef struct _FPO_DATA {
-       DWORD ulOffStart;
-       DWORD cbProcSize;
-       DWORD cdwLocals;
-       WORD cdwParams;
-       WORD cbProlog:8;
-       WORD cbRegs:3;
-       WORD fHasSEH:1;
-       WORD fUseBP:1;
-       WORD reserved:1;
-       WORD cbFrame:2;
-} FPO_DATA,*PFPO_DATA;
+  DWORD ulOffStart;
+  DWORD cbProcSize;
+  DWORD cdwLocals;
+  WORD cdwParams;
+  WORD cbProlog:8;
+  WORD cbRegs:3;
+  WORD fHasSEH:1;
+  WORD fUseBP:1;
+  WORD reserved:1;
+  WORD cbFrame:2;
+} FPO_DATA, *PFPO_DATA;
 
 typedef struct _IMAGE_DEBUG_MISC {
-       DWORD DataType;
-       DWORD Length;
-       BOOLEAN Unicode;
-       BYTE Reserved[3];
-       BYTE Data[1];
-} IMAGE_DEBUG_MISC,*PIMAGE_DEBUG_MISC;
+  DWORD DataType;
+  DWORD Length;
+  BOOLEAN Unicode;
+  BYTE Reserved[3];
+  BYTE Data[1];
+} IMAGE_DEBUG_MISC, *PIMAGE_DEBUG_MISC;
 
 typedef struct _IMAGE_FUNCTION_ENTRY {
-       DWORD StartingAddress;
-       DWORD EndingAddress;
-       DWORD EndOfPrologue;
-} IMAGE_FUNCTION_ENTRY,*PIMAGE_FUNCTION_ENTRY;
+  DWORD StartingAddress;
+  DWORD EndingAddress;
+  DWORD EndOfPrologue;
+} IMAGE_FUNCTION_ENTRY, *PIMAGE_FUNCTION_ENTRY;
 
 typedef struct _IMAGE_SEPARATE_DEBUG_HEADER {
-       WORD Signature;
-       WORD Flags;
-       WORD Machine;
-       WORD Characteristics;
-       DWORD TimeDateStamp;
-       DWORD CheckSum;
-       DWORD ImageBase;
-       DWORD SizeOfImage;
-       DWORD NumberOfSections;
-       DWORD ExportedNamesSize;
-       DWORD DebugDirectorySize;
-       DWORD SectionAlignment;
-       DWORD Reserved[2];
-} IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER;
+  WORD Signature;
+  WORD Flags;
+  WORD Machine;
+  WORD Characteristics;
+  DWORD TimeDateStamp;
+  DWORD CheckSum;
+  DWORD ImageBase;
+  DWORD SizeOfImage;
+  DWORD NumberOfSections;
+  DWORD ExportedNamesSize;
+  DWORD DebugDirectorySize;
+  DWORD SectionAlignment;
+  DWORD Reserved[2];
+} IMAGE_SEPARATE_DEBUG_HEADER, *PIMAGE_SEPARATE_DEBUG_HEADER;
 
 typedef enum _CM_SERVICE_NODE_TYPE {
-       DriverType=SERVICE_KERNEL_DRIVER,
-       FileSystemType=SERVICE_FILE_SYSTEM_DRIVER,
-       Win32ServiceOwnProcess=SERVICE_WIN32_OWN_PROCESS,
-       Win32ServiceShareProcess=SERVICE_WIN32_SHARE_PROCESS,
-       AdapterType=SERVICE_ADAPTER,
-       RecognizerType=SERVICE_RECOGNIZER_DRIVER
+  DriverType = SERVICE_KERNEL_DRIVER,
+  FileSystemType = SERVICE_FILE_SYSTEM_DRIVER,
+  Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS,
+  Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS,
+  AdapterType = SERVICE_ADAPTER,
+  RecognizerType = SERVICE_RECOGNIZER_DRIVER
 } SERVICE_NODE_TYPE;
 
 typedef enum _CM_SERVICE_LOAD_TYPE {
-       BootLoad=SERVICE_BOOT_START,
-       SystemLoad=SERVICE_SYSTEM_START,
-       AutoLoad=SERVICE_AUTO_START,
-       DemandLoad=SERVICE_DEMAND_START,
-       DisableLoad=SERVICE_DISABLED
+  BootLoad = SERVICE_BOOT_START,
+  SystemLoad = SERVICE_SYSTEM_START,
+  AutoLoad = SERVICE_AUTO_START,
+  DemandLoad = SERVICE_DEMAND_START,
+  DisableLoad = SERVICE_DISABLED
 } SERVICE_LOAD_TYPE;
 
 typedef enum _CM_ERROR_CONTROL_TYPE {
-       IgnoreError=SERVICE_ERROR_IGNORE,
-       NormalError=SERVICE_ERROR_NORMAL,
-       SevereError=SERVICE_ERROR_SEVERE,
-       CriticalError=SERVICE_ERROR_CRITICAL
+  IgnoreError = SERVICE_ERROR_IGNORE,
+  NormalError = SERVICE_ERROR_NORMAL,
+  SevereError = SERVICE_ERROR_SEVERE,
+  CriticalError = SERVICE_ERROR_CRITICAL
 } SERVICE_ERROR_TYPE;
 
 typedef struct _NT_TIB {
-       struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
-       PVOID StackBase;
-       PVOID StackLimit;
-       PVOID SubSystemTib;
-       _ANONYMOUS_UNION union {
-               PVOID FiberData;
-               DWORD Version;
-       } DUMMYUNIONNAME;
-       PVOID ArbitraryUserPointer;
-       struct _NT_TIB *Self;
+  struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
+  PVOID StackBase;
+  PVOID StackLimit;
+  PVOID SubSystemTib;
+  _ANONYMOUS_UNION union {
+    PVOID FiberData;
+    DWORD Version;
+  } DUMMYUNIONNAME;
+  PVOID ArbitraryUserPointer;
+  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;
+  DWORD ExceptionList;
+  DWORD StackBase;
+  DWORD StackLimit;
+  DWORD SubSystemTib;
+  _ANONYMOUS_UNION union {
+    DWORD FiberData;
+    DWORD Version;
+  } DUMMYUNIONNAME;
+  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;
+  DWORD64 ExceptionList;
+  DWORD64 StackBase;
+  DWORD64 StackLimit;
+  DWORD64 SubSystemTib;
+  _ANONYMOUS_UNION union {
+    DWORD64 FiberData;
+    DWORD Version;
+  } DUMMYUNIONNAME;
+  DWORD64 ArbitraryUserPointer;
+  DWORD64 Self;
 } NT_TIB64,*PNT_TIB64;
 
 typedef struct _REPARSE_GUID_DATA_BUFFER {
-       DWORD  ReparseTag;
-       WORD   ReparseDataLength;
-       WORD   Reserved;
-       GUID   ReparseGuid;
-       struct {
-               BYTE   DataBuffer[1];
-       } GenericReparseBuffer;
+  DWORD ReparseTag;
+  WORD ReparseDataLength;
+  WORD Reserved;
+  GUID ReparseGuid;
+  struct {
+    BYTE DataBuffer[1];
+  } GenericReparseBuffer;
 } REPARSE_GUID_DATA_BUFFER, *PREPARSE_GUID_DATA_BUFFER;
 
 typedef struct _REPARSE_POINT_INFORMATION {
@@ -4213,9 +4894,9 @@ typedef struct _REPARSE_POINT_INFORMATION {
 } REPARSE_POINT_INFORMATION, *PREPARSE_POINT_INFORMATION;
 
 typedef union _FILE_SEGMENT_ELEMENT {
-       PVOID64 Buffer;
-       ULONGLONG Alignment;
-}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
+  PVOID64 Buffer;
+  ULONGLONG Alignment;
+} FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
 
 /* JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants */
 #define JOB_OBJECT_LIMIT_WORKINGSET                 0x0001
@@ -4270,91 +4951,92 @@ typedef union _FILE_SEGMENT_ELEMENT {
 #define JOB_OBJECT_ALL_ACCESS               (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|31)
 
 typedef enum _JOBOBJECTINFOCLASS {
-       JobObjectBasicAccountingInformation = 1,
-       JobObjectBasicLimitInformation,
-       JobObjectBasicProcessIdList,
-       JobObjectBasicUIRestrictions,
-       JobObjectSecurityLimitInformation,
-       JobObjectEndOfJobTimeInformation,
-       JobObjectAssociateCompletionPortInformation,
-       JobObjectBasicAndIoAccountingInformation,
-       JobObjectExtendedLimitInformation,
-       JobObjectJobSetInformation,
-       MaxJobObjectInfoClass
+  JobObjectBasicAccountingInformation = 1,
+  JobObjectBasicLimitInformation,
+  JobObjectBasicProcessIdList,
+  JobObjectBasicUIRestrictions,
+  JobObjectSecurityLimitInformation,
+  JobObjectEndOfJobTimeInformation,
+  JobObjectAssociateCompletionPortInformation,
+  JobObjectBasicAndIoAccountingInformation,
+  JobObjectExtendedLimitInformation,
+  JobObjectJobSetInformation,
+  JobObjectGroupInformation,
+  MaxJobObjectInfoClass
 } JOBOBJECTINFOCLASS;
 
-typedef struct _JOB_SET_ARRAY
-{
-    HANDLE JobHandle;
-    DWORD MemberLevel;
-    DWORD Flags;
+typedef struct _JOB_SET_ARRAY {
+  HANDLE JobHandle;
+  DWORD MemberLevel;
+  DWORD Flags;
 } JOB_SET_ARRAY, *PJOB_SET_ARRAY;
 
 typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION {
-       LARGE_INTEGER TotalUserTime;
-       LARGE_INTEGER TotalKernelTime;
-       LARGE_INTEGER ThisPeriodTotalUserTime;
-       LARGE_INTEGER ThisPeriodTotalKernelTime;
-       DWORD TotalPageFaultCount;
-       DWORD TotalProcesses;
-       DWORD ActiveProcesses;
-       DWORD TotalTerminatedProcesses;
+  LARGE_INTEGER TotalUserTime;
+  LARGE_INTEGER TotalKernelTime;
+  LARGE_INTEGER ThisPeriodTotalUserTime;
+  LARGE_INTEGER ThisPeriodTotalKernelTime;
+  DWORD TotalPageFaultCount;
+  DWORD TotalProcesses;
+  DWORD ActiveProcesses;
+  DWORD TotalTerminatedProcesses;
 } JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION;
+
 typedef struct _JOBOBJECT_BASIC_LIMIT_INFORMATION {
-       LARGE_INTEGER PerProcessUserTimeLimit;
-       LARGE_INTEGER PerJobUserTimeLimit;
-       DWORD LimitFlags;
-       SIZE_T MinimumWorkingSetSize;
-       SIZE_T MaximumWorkingSetSize;
-       DWORD ActiveProcessLimit;
-       ULONG_PTR Affinity;
-       DWORD PriorityClass;
-       DWORD SchedulingClass;
+  LARGE_INTEGER PerProcessUserTimeLimit;
+  LARGE_INTEGER PerJobUserTimeLimit;
+  DWORD LimitFlags;
+  SIZE_T MinimumWorkingSetSize;
+  SIZE_T MaximumWorkingSetSize;
+  DWORD ActiveProcessLimit;
+  ULONG_PTR Affinity;
+  DWORD PriorityClass;
+  DWORD SchedulingClass;
 } JOBOBJECT_BASIC_LIMIT_INFORMATION,*PJOBOBJECT_BASIC_LIMIT_INFORMATION;
 
 typedef struct _JOBOBJECT_BASIC_PROCESS_ID_LIST {
-       DWORD NumberOfAssignedProcesses;
-       DWORD NumberOfProcessIdsInList;
-       ULONG_PTR ProcessIdList[1];
+  DWORD NumberOfAssignedProcesses;
+  DWORD NumberOfProcessIdsInList;
+  ULONG_PTR ProcessIdList[1];
 } JOBOBJECT_BASIC_PROCESS_ID_LIST, *PJOBOBJECT_BASIC_PROCESS_ID_LIST;
 
 typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS {
-       DWORD UIRestrictionsClass;
+  DWORD UIRestrictionsClass;
 } JOBOBJECT_BASIC_UI_RESTRICTIONS,*PJOBOBJECT_BASIC_UI_RESTRICTIONS;
 
 typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION {
-       DWORD SecurityLimitFlags;
-       HANDLE JobToken;
-       PTOKEN_GROUPS SidsToDisable;
-       PTOKEN_PRIVILEGES PrivilegesToDelete;
-       PTOKEN_GROUPS RestrictedSids;
+  DWORD SecurityLimitFlags;
+  HANDLE JobToken;
+  PTOKEN_GROUPS SidsToDisable;
+  PTOKEN_PRIVILEGES PrivilegesToDelete;
+  PTOKEN_GROUPS RestrictedSids;
 } JOBOBJECT_SECURITY_LIMIT_INFORMATION,*PJOBOBJECT_SECURITY_LIMIT_INFORMATION;
 
 typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION {
-       DWORD EndOfJobTimeAction;
+  DWORD EndOfJobTimeAction;
 } JOBOBJECT_END_OF_JOB_TIME_INFORMATION,*PJOBOBJECT_END_OF_JOB_TIME_INFORMATION;
 
 typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT {
-       PVOID CompletionKey;
-       HANDLE CompletionPort;
+  PVOID CompletionKey;
+  HANDLE CompletionPort;
 } JOBOBJECT_ASSOCIATE_COMPLETION_PORT,*PJOBOBJECT_ASSOCIATE_COMPLETION_PORT;
 
 typedef struct _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION {
-       JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo;
-       IO_COUNTERS IoInfo;
+  JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo;
+  IO_COUNTERS IoInfo;
 } JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION;
 
 typedef struct _JOBOBJECT_EXTENDED_LIMIT_INFORMATION {
-       JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation;
-       IO_COUNTERS IoInfo;
-       SIZE_T ProcessMemoryLimit;
-       SIZE_T JobMemoryLimit;
-       SIZE_T PeakProcessMemoryUsed;
-       SIZE_T PeakJobMemoryUsed;
+  JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation;
+  IO_COUNTERS IoInfo;
+  SIZE_T ProcessMemoryLimit;
+  SIZE_T JobMemoryLimit;
+  SIZE_T PeakProcessMemoryUsed;
+  SIZE_T PeakJobMemoryUsed;
 } JOBOBJECT_EXTENDED_LIMIT_INFORMATION,*PJOBOBJECT_EXTENDED_LIMIT_INFORMATION;
 
 typedef struct _JOBOBJECT_JOBSET_INFORMATION {
-       DWORD MemberLevel;
+  DWORD MemberLevel;
 } JOBOBJECT_JOBSET_INFORMATION,*PJOBOBJECT_JOBSET_INFORMATION;
 
 /* Fixme: Making these defines conditional on WINVER will break ddk includes */
@@ -4366,51 +5048,54 @@ typedef struct _JOBOBJECT_JOBSET_INFORMATION {
 #define ES_CONTINUOUS                     0x80000000
 
 typedef enum _LATENCY_TIME {
-       LT_DONT_CARE,
-       LT_LOWEST_LATENCY
+  LT_DONT_CARE,
+  LT_LOWEST_LATENCY
 } LATENCY_TIME, *PLATENCY_TIME;
 
 typedef enum _SYSTEM_POWER_STATE {
-       PowerSystemUnspecified,
-       PowerSystemWorking,
-       PowerSystemSleeping1,
-       PowerSystemSleeping2,
-       PowerSystemSleeping3,
-       PowerSystemHibernate,
-       PowerSystemShutdown,
-       PowerSystemMaximum
+  PowerSystemUnspecified = 0,
+  PowerSystemWorking,
+  PowerSystemSleeping1,
+  PowerSystemSleeping2,
+  PowerSystemSleeping3,
+  PowerSystemHibernate,
+  PowerSystemShutdown,
+  PowerSystemMaximum
 } SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE;
+
 #define POWER_SYSTEM_MAXIMUM PowerSystemMaximum
 
 typedef enum {
-       PowerActionNone,
-       PowerActionReserved,
-       PowerActionSleep,
-       PowerActionHibernate,
-       PowerActionShutdown,
-       PowerActionShutdownReset,
-       PowerActionShutdownOff,
-       PowerActionWarmEject
+  PowerActionNone = 0,
+  PowerActionReserved,
+  PowerActionSleep,
+  PowerActionHibernate,
+  PowerActionShutdown,
+  PowerActionShutdownReset,
+  PowerActionShutdownOff,
+  PowerActionWarmEject
 } POWER_ACTION, *PPOWER_ACTION;
 
 typedef enum _DEVICE_POWER_STATE {
-       PowerDeviceUnspecified,
-       PowerDeviceD0,
-       PowerDeviceD1,
-       PowerDeviceD2,
-       PowerDeviceD3,
-       PowerDeviceMaximum
+  PowerDeviceUnspecified = 0,
+  PowerDeviceD0,
+  PowerDeviceD1,
+  PowerDeviceD2,
+  PowerDeviceD3,
+  PowerDeviceMaximum
 } DEVICE_POWER_STATE, *PDEVICE_POWER_STATE;
 
+#if (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_)
 typedef struct {
-       DWORD  Granularity;
-       DWORD  Capacity;
+  DWORD Granularity;
+  DWORD Capacity;
 } BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE;
+#endif
 
 typedef struct _POWER_ACTION_POLICY {
-       POWER_ACTION  Action;
-       ULONG  Flags;
-       ULONG  EventCode;
+  POWER_ACTION Action;
+  DWORD Flags;
+  DWORD EventCode;
 } POWER_ACTION_POLICY, *PPOWER_ACTION_POLICY;
 
 /* POWER_ACTION_POLICY.Flags constants */
@@ -4441,87 +5126,93 @@ typedef struct _POWER_ACTION_POLICY {
 #define PO_THROTTLE_MAXIMUM    4
 
 typedef struct _SYSTEM_POWER_LEVEL {
-       BOOLEAN  Enable;
-       UCHAR  Spare[3];
-       ULONG  BatteryLevel;
-       POWER_ACTION_POLICY  PowerPolicy;
-       SYSTEM_POWER_STATE  MinSystemState;
+  BOOLEAN Enable;
+  BYTE Spare[3];
+  DWORD BatteryLevel;
+  POWER_ACTION_POLICY PowerPolicy;
+  SYSTEM_POWER_STATE MinSystemState;
 } SYSTEM_POWER_LEVEL, *PSYSTEM_POWER_LEVEL;
 
 typedef struct _SYSTEM_POWER_POLICY {
-       ULONG  Revision;
-       POWER_ACTION_POLICY  PowerButton;
-       POWER_ACTION_POLICY  SleepButton;
-       POWER_ACTION_POLICY  LidClose;
-       SYSTEM_POWER_STATE  LidOpenWake;
-       ULONG  Reserved;
-       POWER_ACTION_POLICY  Idle;
-       ULONG  IdleTimeout;
-       UCHAR  IdleSensitivity;
-       UCHAR  DynamicThrottle;
-       UCHAR  Spare2[2];
-       SYSTEM_POWER_STATE  MinSleep;
-       SYSTEM_POWER_STATE  MaxSleep;
-       SYSTEM_POWER_STATE  ReducedLatencySleep;
-       ULONG  WinLogonFlags;
-       ULONG  Spare3;
-       ULONG  DozeS4Timeout;
-       ULONG  BroadcastCapacityResolution;
-       SYSTEM_POWER_LEVEL  DischargePolicy[NUM_DISCHARGE_POLICIES];
-       ULONG  VideoTimeout;
-       BOOLEAN  VideoDimDisplay;
-       ULONG  VideoReserved[3];
-       ULONG  SpindownTimeout;
-       BOOLEAN  OptimizeForPower;
-       UCHAR  FanThrottleTolerance;
-       UCHAR  ForcedThrottle;
-       UCHAR  MinThrottle;
-       POWER_ACTION_POLICY  OverThrottled;
+  DWORD Revision;
+  POWER_ACTION_POLICY PowerButton;
+  POWER_ACTION_POLICY SleepButton;
+  POWER_ACTION_POLICY LidClose;
+  SYSTEM_POWER_STATE LidOpenWake;
+  DWORD Reserved;
+  POWER_ACTION_POLICY Idle;
+  DWORD IdleTimeout;
+  BYTE IdleSensitivity;
+  BYTE DynamicThrottle;
+  BYTE Spare2[2];
+  SYSTEM_POWER_STATE MinSleep;
+  SYSTEM_POWER_STATE MaxSleep;
+  SYSTEM_POWER_STATE ReducedLatencySleep;
+  DWORD WinLogonFlags;
+  DWORD Spare3;
+  DWORD DozeS4Timeout;
+  DWORD BroadcastCapacityResolution;
+  SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES];
+  DWORD VideoTimeout;
+  BOOLEAN VideoDimDisplay;
+  DWORD VideoReserved[3];
+  DWORD SpindownTimeout;
+  BOOLEAN OptimizeForPower;
+  BYTE FanThrottleTolerance;
+  BYTE ForcedThrottle;
+  BYTE MinThrottle;
+  POWER_ACTION_POLICY OverThrottled;
 } SYSTEM_POWER_POLICY, *PSYSTEM_POWER_POLICY;
 
 typedef struct _SYSTEM_POWER_CAPABILITIES {
-       BOOLEAN  PowerButtonPresent;
-       BOOLEAN  SleepButtonPresent;
-       BOOLEAN  LidPresent;
-       BOOLEAN  SystemS1;
-       BOOLEAN  SystemS2;
-       BOOLEAN  SystemS3;
-       BOOLEAN  SystemS4;
-       BOOLEAN  SystemS5;
-       BOOLEAN  HiberFilePresent;
-       BOOLEAN  FullWake;
-       BOOLEAN  VideoDimPresent;
-       BOOLEAN  ApmPresent;
-       BOOLEAN  UpsPresent;
-       BOOLEAN  ThermalControl;
-       BOOLEAN  ProcessorThrottle;
-       UCHAR  ProcessorMinThrottle;
-       UCHAR  ProcessorMaxThrottle;
-       UCHAR  spare2[4];
-       BOOLEAN  DiskSpinDown;
-       UCHAR  spare3[8];
-       BOOLEAN  SystemBatteriesPresent;
-       BOOLEAN  BatteriesAreShortTerm;
-       BATTERY_REPORTING_SCALE  BatteryScale[3];
-       SYSTEM_POWER_STATE  AcOnLineWake;
-       SYSTEM_POWER_STATE  SoftLidWake;
-       SYSTEM_POWER_STATE  RtcWake;
-       SYSTEM_POWER_STATE  MinDeviceWakeState;
-       SYSTEM_POWER_STATE  DefaultLowLatencyWake;
+  BOOLEAN PowerButtonPresent;
+  BOOLEAN SleepButtonPresent;
+  BOOLEAN LidPresent;
+  BOOLEAN SystemS1;
+  BOOLEAN SystemS2;
+  BOOLEAN SystemS3;
+  BOOLEAN SystemS4;
+  BOOLEAN SystemS5;
+  BOOLEAN HiberFilePresent;
+  BOOLEAN FullWake;
+  BOOLEAN VideoDimPresent;
+  BOOLEAN ApmPresent;
+  BOOLEAN UpsPresent;
+  BOOLEAN ThermalControl;
+  BOOLEAN ProcessorThrottle;
+  BYTE ProcessorMinThrottle;
+#if (NTDDI_VERSION < NTDDI_WINXP)
+  BYTE ProcessorThrottleScale;
+  BYTE spare2[4];
+#else
+  BYTE ProcessorMaxThrottle;
+  BOOLEAN FastSystemS4;
+  BYTE spare2[3];
+#endif /* (NTDDI_VERSION < NTDDI_WINXP) */
+  BOOLEAN DiskSpinDown;
+  BYTE spare3[8];
+  BOOLEAN SystemBatteriesPresent;
+  BOOLEAN BatteriesAreShortTerm;
+  BATTERY_REPORTING_SCALE BatteryScale[3];
+  SYSTEM_POWER_STATE AcOnLineWake;
+  SYSTEM_POWER_STATE SoftLidWake;
+  SYSTEM_POWER_STATE RtcWake;
+  SYSTEM_POWER_STATE MinDeviceWakeState;
+  SYSTEM_POWER_STATE DefaultLowLatencyWake;
 } SYSTEM_POWER_CAPABILITIES, *PSYSTEM_POWER_CAPABILITIES;
 
 typedef struct _SYSTEM_BATTERY_STATE {
-       BOOLEAN  AcOnLine;
-       BOOLEAN  BatteryPresent;
-       BOOLEAN  Charging;
-       BOOLEAN  Discharging;
-       BOOLEAN  Spare1[4];
-       ULONG  MaxCapacity;
-       ULONG  RemainingCapacity;
-       ULONG  Rate;
-       ULONG  EstimatedTime;
-       ULONG  DefaultAlert1;
-       ULONG  DefaultAlert2;
+  BOOLEAN AcOnLine;
+  BOOLEAN BatteryPresent;
+  BOOLEAN Charging;
+  BOOLEAN Discharging;
+  BOOLEAN Spare1[4];
+  DWORD MaxCapacity;
+  DWORD RemainingCapacity;
+  DWORD Rate;
+  DWORD EstimatedTime;
+  DWORD DefaultAlert1;
+  DWORD DefaultAlert2;
 } SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE;
 
 typedef struct _PROCESSOR_POWER_INFORMATION {
@@ -4534,30 +5225,61 @@ typedef struct _PROCESSOR_POWER_INFORMATION {
 } PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION;
 
 typedef DWORD EXECUTION_STATE;
+
 typedef enum _POWER_INFORMATION_LEVEL {
-       SystemPowerPolicyAc,
-       SystemPowerPolicyDc,
-       VerifySystemPolicyAc,
-       VerifySystemPolicyDc,
-       SystemPowerCapabilities,
-       SystemBatteryState,
-       SystemPowerStateHandler,
-       ProcessorStateHandler,
-       SystemPowerPolicyCurrent,
-       AdministratorPowerPolicy,
-       SystemReserveHiberFile,
-       ProcessorInformation,
-       SystemPowerInformation,
-       ProcessorStateHandler2,
-       LastWakeTime,
-       LastSleepTime,
-       SystemExecutionState,
-       SystemPowerStateNotifyHandler,
-       ProcessorPowerPolicyAc,
-       ProcessorPowerPolicyDc,
-       VerifyProcessorPowerPolicyAc,
-       VerifyProcessorPowerPolicyDc,
-       ProcessorPowerPolicyCurrent
+  SystemPowerPolicyAc,
+  SystemPowerPolicyDc,
+  VerifySystemPolicyAc,
+  VerifySystemPolicyDc,
+  SystemPowerCapabilities,
+  SystemBatteryState,
+  SystemPowerStateHandler,
+  ProcessorStateHandler,
+  SystemPowerPolicyCurrent,
+  AdministratorPowerPolicy,
+  SystemReserveHiberFile,
+  ProcessorInformation,
+  SystemPowerInformation,
+  ProcessorStateHandler2,
+  LastWakeTime,
+  LastSleepTime,
+  SystemExecutionState,
+  SystemPowerStateNotifyHandler,
+  ProcessorPowerPolicyAc,
+  ProcessorPowerPolicyDc,
+  VerifyProcessorPowerPolicyAc,
+  VerifyProcessorPowerPolicyDc,
+  ProcessorPowerPolicyCurrent,
+  SystemPowerStateLogging,
+  SystemPowerLoggingEntry,
+  SetPowerSettingValue,
+  NotifyUserPowerSetting,
+  PowerInformationLevelUnused0,
+  PowerInformationLevelUnused1,
+  SystemVideoState,
+  TraceApplicationPowerMessage,
+  TraceApplicationPowerMessageEnd,
+  ProcessorPerfStates,
+  ProcessorIdleStates,
+  ProcessorCap,
+  SystemWakeSource,
+  SystemHiberFileInformation,
+  TraceServicePowerMessage,
+  ProcessorLoad,
+  PowerShutdownNotification,
+  MonitorCapabilities,
+  SessionPowerInit,
+  SessionDisplayState,
+  PowerRequestCreate,
+  PowerRequestAction,
+  GetPowerRequestList,
+  ProcessorInformationEx,
+  NotifyUserModeLegacyPowerEvent,
+  GroupPark,
+  ProcessorIdleDomains,
+  WakeTimerList,
+  SystemHiberFileSize,
+  PowerInformationLevelMaximum
 } POWER_INFORMATION_LEVEL;
 
 #if 1 /* (WIN32_WINNT >= 0x0500) */
@@ -4572,65 +5294,77 @@ typedef struct _SYSTEM_POWER_INFORMATION {
 #if (_WIN32_WINNT >= 0x0500)
 #define _AUDIT_EVENT_TYPE_HACK 1
 typedef enum _AUDIT_EVENT_TYPE {
-    AuditEventObjectAccess,
-    AuditEventDirectoryServiceAccess
+  AuditEventObjectAccess,
+  AuditEventDirectoryServiceAccess
 } AUDIT_EVENT_TYPE, *PAUDIT_EVENT_TYPE;
 #endif
 
 #if (_WIN32_WINNT >= 0x0501)
+
 typedef enum _ACTIVATION_CONTEXT_INFO_CLASS {
-       ActivationContextBasicInformation = 1,
-       ActivationContextDetailedInformation,
-       AssemblyDetailedInformationInActivationContext,
-       FileInformationInAssemblyOfAssemblyInActivationContext
+  ActivationContextBasicInformation = 1,
+  ActivationContextDetailedInformation = 2,
+  AssemblyDetailedInformationInActivationContext = 3,
+  FileInformationInAssemblyOfAssemblyInActivationContext = 4,
+  RunlevelInformationInActivationContext = 5,
+  CompatibilityInformationInActivationContext = 6,
+  ActivationContextManifestResourceName = 7,
+  MaxActivationContextInfoClass,
+/* For compatibility with the old names */
+  AssemblyDetailedInformationInActivationContxt = 3,
+  FileInformationInAssemblyOfAssemblyInActivationContxt = 4
 } ACTIVATION_CONTEXT_INFO_CLASS;
+
 typedef struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION {
-       DWORD ulFlags;
-       DWORD ulEncodedAssemblyIdentityLength;
-       DWORD ulManifestPathType;
-       DWORD ulManifestPathLength;
-       LARGE_INTEGER liManifestLastWriteTime;
-       DWORD ulPolicyPathType;
-       DWORD ulPolicyPathLength;
-       LARGE_INTEGER liPolicyLastWriteTime;
-       DWORD ulMetadataSatelliteRosterIndex;
-       DWORD ulManifestVersionMajor;
-       DWORD ulManifestVersionMinor;
-       DWORD ulPolicyVersionMajor;
-       DWORD ulPolicyVersionMinor;
-       DWORD ulAssemblyDirectoryNameLength;
-       PCWSTR lpAssemblyEncodedAssemblyIdentity;
-       PCWSTR lpAssemblyManifestPath;
-       PCWSTR lpAssemblyPolicyPath;
-       PCWSTR lpAssemblyDirectoryName;
-} ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
+  DWORD ulFlags;
+  DWORD ulEncodedAssemblyIdentityLength;
+  DWORD ulManifestPathType;
+  DWORD ulManifestPathLength;
+  LARGE_INTEGER liManifestLastWriteTime;
+  DWORD ulPolicyPathType;
+  DWORD ulPolicyPathLength;
+  LARGE_INTEGER liPolicyLastWriteTime;
+  DWORD ulMetadataSatelliteRosterIndex;
+  DWORD ulManifestVersionMajor;
+  DWORD ulManifestVersionMinor;
+  DWORD ulPolicyVersionMajor;
+  DWORD ulPolicyVersionMinor;
+  DWORD ulAssemblyDirectoryNameLength;
+  PCWSTR lpAssemblyEncodedAssemblyIdentity;
+  PCWSTR lpAssemblyManifestPath;
+  PCWSTR lpAssemblyPolicyPath;
+  PCWSTR lpAssemblyDirectoryName;
+} ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION, *PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
 typedef const ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
+
 typedef struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION {
-       DWORD dwFlags;
-       DWORD ulFormatVersion;
-       DWORD ulAssemblyCount;
-       DWORD ulRootManifestPathType;
-       DWORD ulRootManifestPathChars;
-       DWORD ulRootConfigurationPathType;
-       DWORD ulRootConfigurationPathChars;
-       DWORD ulAppDirPathType;
-       DWORD ulAppDirPathChars;
-       PCWSTR lpRootManifestPath;
-       PCWSTR lpRootConfigurationPath;
-       PCWSTR lpAppDirPath;
-} ACTIVATION_CONTEXT_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_DETAILED_INFORMATION;
+  DWORD dwFlags;
+  DWORD ulFormatVersion;
+  DWORD ulAssemblyCount;
+  DWORD ulRootManifestPathType;
+  DWORD ulRootManifestPathChars;
+  DWORD ulRootConfigurationPathType;
+  DWORD ulRootConfigurationPathChars;
+  DWORD ulAppDirPathType;
+  DWORD ulAppDirPathChars;
+  PCWSTR lpRootManifestPath;
+  PCWSTR lpRootConfigurationPath;
+  PCWSTR lpAppDirPath;
+} ACTIVATION_CONTEXT_DETAILED_INFORMATION, *PACTIVATION_CONTEXT_DETAILED_INFORMATION;
 typedef const ACTIVATION_CONTEXT_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_DETAILED_INFORMATION;
+
 typedef struct _ACTIVATION_CONTEXT_QUERY_INDEX {
-       ULONG ulAssemblyIndex;
-       ULONG ulFileIndexInAssembly;
+  DWORD ulAssemblyIndex;
+  DWORD ulFileIndexInAssembly;
 } ACTIVATION_CONTEXT_QUERY_INDEX,*PACTIVATION_CONTEXT_QUERY_INDEX;
 typedef const ACTIVATION_CONTEXT_QUERY_INDEX *PCACTIVATION_CONTEXT_QUERY_INDEX;
+
 typedef struct _ASSEMBLY_FILE_DETAILED_INFORMATION {
-       DWORD ulFlags;
-       DWORD ulFilenameLength;
-       DWORD ulPathLength;
-       PCWSTR lpFileName;
-       PCWSTR lpFilePath;
+  DWORD ulFlags;
+  DWORD ulFilenameLength;
+  DWORD ulPathLength;
+  PCWSTR lpFileName;
+  PCWSTR lpFilePath;
 } ASSEMBLY_FILE_DETAILED_INFORMATION,*PASSEMBLY_FILE_DETAILED_INFORMATION;
 typedef const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFORMATION;
 
@@ -4652,32 +5386,36 @@ typedef const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFOR
 #endif /* (WIN32_WINNT >= 0x0501) */
 
 typedef struct _PROCESSOR_POWER_POLICY_INFO {
-       ULONG  TimeCheck;
-       ULONG  DemoteLimit;
-       ULONG  PromoteLimit;
-       UCHAR  DemotePercent;
-       UCHAR  PromotePercent;
-       UCHAR  Spare[2];
-       ULONG  AllowDemotion : 1;
-       ULONG  AllowPromotion : 1;
-       ULONG  Reserved : 30;
+  DWORD TimeCheck;
+  DWORD DemoteLimit;
+  DWORD PromoteLimit;
+  BYTE DemotePercent;
+  BYTE PromotePercent;
+  BYTE Spare[2];
+  DWORD AllowDemotion:1;
+  DWORD AllowPromotion:1;
+  DWORD Reserved:30;
 } PROCESSOR_POWER_POLICY_INFO, *PPROCESSOR_POWER_POLICY_INFO;
+
 typedef struct _PROCESSOR_POWER_POLICY {
-       ULONG  Revision;
-       UCHAR  DynamicThrottle;
-       UCHAR  Spare[3];
-       ULONG  Reserved;
-       ULONG  PolicyCount;
-       PROCESSOR_POWER_POLICY_INFO  Policy[3];
+  DWORD Revision;
+  BYTE DynamicThrottle;
+  BYTE Spare[3];
+  DWORD DisableCStates:1;
+  DWORD Reserved:31;
+  DWORD PolicyCount;
+  PROCESSOR_POWER_POLICY_INFO Policy[3];
 } PROCESSOR_POWER_POLICY, *PPROCESSOR_POWER_POLICY;
+
 typedef struct _ADMINISTRATOR_POWER_POLICY {
-       SYSTEM_POWER_STATE  MinSleep;
-       SYSTEM_POWER_STATE  MaxSleep;
-       ULONG  MinVideoTimeout;
-       ULONG  MaxVideoTimeout;
-       ULONG  MinSpindownTimeout;
-       ULONG  MaxSpindownTimeout;
+  SYSTEM_POWER_STATE MinSleep;
+  SYSTEM_POWER_STATE MaxSleep;
+  DWORD MinVideoTimeout;
+  DWORD MaxVideoTimeout;
+  DWORD MinSpindownTimeout;
+  DWORD MaxSpindownTimeout;
 } ADMINISTRATOR_POWER_POLICY, *PADMINISTRATOR_POWER_POLICY;
+
 #endif /* WINVER >= 0x0500 */
 
 typedef VOID (NTAPI *WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN);
@@ -4693,106 +5431,63 @@ typedef OSVERSIONINFOEXA OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX;
 #define VER_SET_CONDITION(lc,t,c) ((lc) = VerSetConditionMask((lc),(t),(c)))
 
 #if (_WIN32_WINNT >= 0x0500)
-ULONGLONG WINAPI VerSetConditionMask(ULONGLONG,DWORD,BYTE);
+ULONGLONG WINAPI VerSetConditionMask(_In_ ULONGLONG, _In_ DWORD, _In_ BYTE);
 #endif
 
 typedef enum _HEAP_INFORMATION_CLASS {
-
-    HeapCompatibilityInformation
-
+  HeapCompatibilityInformation,
+  HeapEnableTerminationOnCorruption
 } HEAP_INFORMATION_CLASS;
 
-NTSYSAPI
-DWORD
-NTAPI
-RtlSetHeapInformation (
-    IN PVOID HeapHandle,
-    IN HEAP_INFORMATION_CLASS HeapInformationClass,
-    IN PVOID HeapInformation OPTIONAL,
-    IN SIZE_T HeapInformationLength OPTIONAL
-    );
-
-NTSYSAPI
-DWORD
-NTAPI
-RtlQueryHeapInformation (
-    IN PVOID HeapHandle,
-    IN HEAP_INFORMATION_CLASS HeapInformationClass,
-    OUT PVOID HeapInformation OPTIONAL,
-    IN SIZE_T HeapInformationLength OPTIONAL,
-    OUT PSIZE_T ReturnLength OPTIONAL
-    );
-
-//
-//  Multiple alloc-free APIS
-//
-
-DWORD
-NTAPI
-RtlMultipleAllocateHeap (
-    IN PVOID HeapHandle,
-    IN DWORD Flags,
-    IN SIZE_T Size,
-    IN DWORD Count,
-    OUT PVOID * Array
-    );
-
-DWORD
-NTAPI
-RtlMultipleFreeHeap (
-    IN PVOID HeapHandle,
-    IN DWORD Flags,
-    IN DWORD Count,
-    OUT PVOID * Array
-    );
-
 typedef enum _PROCESSOR_CACHE_TYPE {
-    CacheUnified,
-    CacheInstruction,
-    CacheData,
-    CacheTrace
+  CacheUnified,
+  CacheInstruction,
+  CacheData,
+  CacheTrace
 } PROCESSOR_CACHE_TYPE;
 
 typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP {
-    RelationProcessorCore,
-    RelationNumaNode,
-    RelationCache,
-    RelationProcessorPackage
+  RelationProcessorCore,
+  RelationNumaNode,
+  RelationCache,
+  RelationProcessorPackage,
+  RelationGroup,
+  RelationAll = 0xffff
 } LOGICAL_PROCESSOR_RELATIONSHIP;
 
 #define CACHE_FULLY_ASSOCIATIVE 0xFF
 
 typedef struct _CACHE_DESCRIPTOR {
-    BYTE Level;
-    BYTE Associativity;
-    WORD LineSize;
-    DWORD Size;
-    PROCESSOR_CACHE_TYPE Type;
+  BYTE Level;
+  BYTE Associativity;
+  WORD LineSize;
+  DWORD Size;
+  PROCESSOR_CACHE_TYPE Type;
 } CACHE_DESCRIPTOR, *PCACHE_DESCRIPTOR;
 
 typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION {
-    ULONG_PTR ProcessorMask;
-    LOGICAL_PROCESSOR_RELATIONSHIP Relationship;
-    union {
-        struct {
-            BYTE Flags;
-        } ProcessorCore;
-        struct {
-        DWORD NodeNumber;
-        } NumaNode;
-        CACHE_DESCRIPTOR Cache;
-        ULONGLONG Reserved[2];
-    };
+  ULONG_PTR ProcessorMask;
+  LOGICAL_PROCESSOR_RELATIONSHIP Relationship;
+  _ANONYMOUS_UNION union {
+    struct {
+      BYTE Flags;
+    } ProcessorCore;
+    struct {
+      DWORD NodeNumber;
+    } NumaNode;
+    CACHE_DESCRIPTOR Cache;
+    ULONGLONG Reserved[2];
+  } DUMMYUNIONNAME;
 } SYSTEM_LOGICAL_PROCESSOR_INFORMATION, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION;
 
+_Check_return_
 NTSYSAPI
 SIZE_T
 NTAPI
 RtlCompareMemory (
-    const VOID *Source1,
-    const VOID *Source2,
-    SIZE_T Length
-    );
+  _In_ const VOID *Source1,
+  _In_ const VOID *Source2,
+  _In_ SIZE_T Length);
 
 #define RtlMoveMemory memmove
 #define RtlCopyMemory memcpy
@@ -4801,8 +5496,8 @@ RtlCompareMemory (
 
 FORCEINLINE
 PVOID
-RtlSecureZeroMemory(IN PVOID Buffer,
-                    IN SIZE_T Length)
+RtlSecureZeroMemory(_Out_writes_bytes_all_(Length) PVOID Buffer,
+                    _In_ SIZE_T Length)
 {
     volatile char *VolatilePointer;
 
@@ -4822,24 +5517,25 @@ RtlSecureZeroMemory(IN PVOID Buffer,
 }
 
 typedef struct _OBJECT_TYPE_LIST {
-    WORD   Level;
-    WORD   Sbz;
-    GUID *ObjectType;
+  WORD Level;
+  WORD Sbz;
+  GUID *ObjectType;
 } OBJECT_TYPE_LIST, *POBJECT_TYPE_LIST;
 
-#if defined(__GNUC__)
-
 #if defined(_M_IX86)
-static __inline__ PVOID GetCurrentFiber(void)
+FORCEINLINE struct _TEB * NtCurrentTeb(void)
+{
+    return (struct _TEB *)__readfsdword(0x18);
+}
+FORCEINLINE PVOID GetCurrentFiber(VOID)
 {
-    void* ret;
-    __asm__ __volatile__ (
-        "movl  %%fs:0x10,%0"
-        : "=r" (ret) /* allow use of reg eax,ebx,ecx,edx,esi,edi */
-    );
-    return ret;
+    return (PVOID)(ULONG_PTR)__readfsdword(0x10);
 }
 #elif defined (_M_AMD64)
+FORCEINLINE struct _TEB * NtCurrentTeb(void)
+{
+    return (struct _TEB *)__readgsqword(FIELD_OFFSET(NT_TIB, Self));
+}
 FORCEINLINE PVOID GetCurrentFiber(VOID)
 {
   #ifdef NONAMELESSUNION
@@ -4850,9 +5546,8 @@ FORCEINLINE PVOID GetCurrentFiber(VOID)
 }
 #elif defined (_M_ARM)
     PVOID WINAPI GetCurrentFiber(VOID);
-#else
-#if defined(_M_PPC)
-static __inline__ __attribute__((always_inline)) unsigned long __readfsdword_winnt(const unsigned long Offset)
+#elif defined(_M_PPC)
+FORCEINLINE unsigned long _read_teb_dword(const unsigned long Offset)
 {
     unsigned long result;
     __asm__("\tadd 7,13,%1\n"
@@ -4862,96 +5557,18 @@ static __inline__ __attribute__((always_inline)) unsigned long __readfsdword_win
             : "r7");
     return result;
 }
-
-#else
-#error Unknown architecture
-#endif
-static __inline__ PVOID GetCurrentFiber(void)
-{
-    return __readfsdword_winnt(0x10);
-}
-#endif
-
-#if defined(_M_IX86)
-static __inline__ struct _TEB * NtCurrentTeb(void)
-{
-    struct _TEB *ret;
-
-    __asm__ __volatile__ (
-        "movl %%fs:0x18, %0\n"
-        : "=r" (ret)
-        : /* no inputs */
-    );
-
-    return ret;
-}
-#elif defined(_M_ARM)
-
-//
-// NT-ARM is not documented
-//
-#include <armddk.h>
-
-#elif defined(_M_AMD64)
-FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
+FORCEINLINE struct _TEB * NtCurrentTeb(void)
 {
-    return (struct _TEB *)__readgsqword(FIELD_OFFSET(NT_TIB, Self));
+    return (struct _TEB *)_read_teb_dword(0x18);
 }
-#elif defined(_M_PPC)
-static __inline__ struct _TEB * NtCurrentTeb(void)
+FORCEINLINE PVOID GetCurrentFiber(void)
 {
-    return __readfsdword_winnt(0x18);
+    return _read_teb_dword(0x10);
 }
 #else
-static __inline__ struct _TEB * NtCurrentTeb(void)
-{
-    return __readfsdword_winnt(0x18);
-}
+#error Unknown architecture
 #endif
 
-#elif defined(__WATCOMC__)
-
-extern PVOID GetCurrentFiber(void);
-#pragma aux GetCurrentFiber = \
-        "mov   eax, dword ptr fs:0x10" \
-        value [eax] \
-        modify [eax];
-
-extern struct _TEB * NtCurrentTeb(void);
-#pragma aux NtCurrentTeb = \
-        "mov   eax, dword ptr fs:0x18" \
-        value [eax] \
-        modify [eax];
-
-#elif defined(_MSC_VER)
-
-#if (_MSC_FULL_VER >= 13012035)
-
-__inline PVOID GetCurrentFiber(void) { return (PVOID)(ULONG_PTR)__readfsdword(0x10); }
-__inline struct _TEB * NtCurrentTeb(void) { return (struct _TEB *)(ULONG_PTR)__readfsdword(0x18); }
-
-#else
-
-static __inline PVOID GetCurrentFiber(void)
-{
-    PVOID p;
-       __asm mov eax, fs:[10h]
-       __asm mov [p], eax
-    return p;
-}
-
-static __inline struct _TEB * NtCurrentTeb(void)
-{
-    struct _TEB *p;
-       __asm mov eax, fs:[18h]
-       __asm mov [p], eax
-    return p;
-}
-
-#endif /* _MSC_FULL_VER */
-
-#endif /* __GNUC__/__WATCOMC__/_MSC_VER */
-
 static __inline PVOID GetFiberData(void)
 {
        return *((PVOID *)GetCurrentFiber());
@@ -4999,6 +5616,10 @@ InterlockedBitTestAndReset(IN LONG volatile *Base,
 
 #define BitScanForward _BitScanForward
 #define BitScanReverse _BitScanReverse
+#ifdef _M_AMD64
+#define BitScanForward64 _BitScanForward64
+#define BitScanReverse64 _BitScanReverse64
+#endif
 
 /* TODO: Other architectures than X86 */
 #if defined(_M_IX86)
@@ -5030,7 +5651,8 @@ FORCEINLINE
 VOID
 MemoryBarrier(VOID)
 {
-    LONG Barrier;
+    LONG Barrier, *Dummy = &Barrier;
+    UNREFERENCED_LOCAL_VARIABLE(Dummy);
     __asm__ __volatile__("xchgl %%eax, %[Barrier]" : : [Barrier] "m" (Barrier) : "memory");
 }
 #endif
@@ -5044,26 +5666,24 @@ MemoryBarrier(VOID)
 #error Unknown architecture
 #endif
 
-#if defined(_M_IX86)
-#ifdef _MSC_VER
-#pragma intrinsic(_mm_pause)
-#define YieldProcessor _mm_pause
-#else
-#define YieldProcessor() __asm__ __volatile__("pause");
-#endif
-#elif defined (_M_AMD64)
-#ifdef _MSC_VER
-#pragma intrinsic(_mm_pause)
+#if defined(_M_IX86) || defined(_M_AMD64)
+
 #define YieldProcessor _mm_pause
-#else
-#define YieldProcessor() __asm__ __volatile__("pause");
-#endif
+
+__analysis_noreturn
+FORCEINLINE
+VOID
+DbgRaiseAssertionFailure(VOID)
+{
+    __int2c();
+}
+
 #elif defined(_M_PPC)
 #define YieldProcessor() __asm__ __volatile__("nop");
 #elif defined(_M_MIPS)
 #define YieldProcessor() __asm__ __volatile__("nop");
 #elif defined(_M_ARM)
-#define YieldProcessor()
+#define YieldProcessor __yield
 #else
 #error Unknown architecture
 #endif
@@ -5094,6 +5714,78 @@ MemoryBarrier(VOID)
 
 #endif
 
+typedef struct _TP_POOL TP_POOL, *PTP_POOL;
+typedef struct _TP_WORK TP_WORK, *PTP_WORK;
+typedef struct _TP_CALLBACK_INSTANCE TP_CALLBACK_INSTANCE, *PTP_CALLBACK_INSTANCE;
+
+typedef DWORD TP_VERSION, *PTP_VERSION;
+
+typedef enum _TP_CALLBACK_PRIORITY {
+  TP_CALLBACK_PRIORITY_HIGH,
+  TP_CALLBACK_PRIORITY_NORMAL,
+  TP_CALLBACK_PRIORITY_LOW,
+  TP_CALLBACK_PRIORITY_INVALID,
+  TP_CALLBACK_PRIORITY_COUNT = TP_CALLBACK_PRIORITY_INVALID
+} TP_CALLBACK_PRIORITY;
+
+typedef VOID
+(NTAPI *PTP_WORK_CALLBACK)(
+  _Inout_ PTP_CALLBACK_INSTANCE Instance,
+  _Inout_opt_ PVOID Context,
+  _Inout_ PTP_WORK Work);
+
+typedef struct _TP_CLEANUP_GROUP TP_CLEANUP_GROUP, *PTP_CLEANUP_GROUP;
+
+typedef VOID
+(NTAPI *PTP_SIMPLE_CALLBACK)(
+  _Inout_ PTP_CALLBACK_INSTANCE Instance,
+  _Inout_opt_ PVOID Context);
+
+typedef VOID
+(NTAPI *PTP_CLEANUP_GROUP_CANCEL_CALLBACK)(
+  _Inout_opt_ PVOID ObjectContext,
+  _Inout_opt_ PVOID CleanupContext);
+
+#if (_WIN32_WINNT >= _WIN32_WINNT_WIN7)
+typedef struct _TP_CALLBACK_ENVIRON_V3 {
+  TP_VERSION Version;
+  PTP_POOL Pool;
+  PTP_CLEANUP_GROUP CleanupGroup;
+  PTP_CLEANUP_GROUP_CANCEL_CALLBACK CleanupGroupCancelCallback;
+  PVOID RaceDll;
+  struct _ACTIVATION_CONTEXT *ActivationContext;
+  PTP_SIMPLE_CALLBACK FinalizationCallback;
+  union {
+    DWORD Flags;
+    struct {
+      DWORD LongFunction:1;
+      DWORD Persistent:1;
+      DWORD Private:30;
+    } s;
+  } u;
+  TP_CALLBACK_PRIORITY CallbackPriority;
+  DWORD Size;
+} TP_CALLBACK_ENVIRON_V3, TP_CALLBACK_ENVIRON, *PTP_CALLBACK_ENVIRON;
+#else
+typedef struct _TP_CALLBACK_ENVIRON_V1 {
+  TP_VERSION Version;
+  PTP_POOL Pool;
+  PTP_CLEANUP_GROUP CleanupGroup;
+  PTP_CLEANUP_GROUP_CANCEL_CALLBACK CleanupGroupCancelCallback;
+  PVOID RaceDll;
+  struct _ACTIVATION_CONTEXT *ActivationContext;
+  PTP_SIMPLE_CALLBACK FinalizationCallback;
+  union {
+    DWORD Flags;
+    struct {
+      DWORD LongFunction:1;
+      DWORD Persistent:1;
+      DWORD Private:30;
+    } s;
+  } u;
+} TP_CALLBACK_ENVIRON_V1, TP_CALLBACK_ENVIRON, *PTP_CALLBACK_ENVIRON;
+#endif /* (_WIN32_WINNT >= _WIN32_WINNT_WIN7) */
+
 #ifdef _MSC_VER
 #pragma warning(pop)
 #endif