+
+#if _WIN32_WINNT >= _WIN32_WINNT_WINXP
+/* New features, implemented for WinXP; not available in Win9x.
+ */
+typedef struct tagACTCTXA
+{ ULONG cbSize;
+ DWORD dwFlags;
+ LPCSTR lpSource;
+ USHORT wProcessorArchitecture;
+ LANGID wLangId;
+ LPCSTR lpAssemblyDirectory;
+ LPCSTR lpResourceName;
+ LPCSTR lpApplicationName;
+ HMODULE hModule;
+} ACTCTXA, *PACTCTXA;
+
+typedef struct tagACTCTXW
+{ ULONG cbSize;
+ DWORD dwFlags;
+ LPCWSTR lpSource;
+ USHORT wProcessorArchitecture;
+ LANGID wLangId;
+ LPCWSTR lpAssemblyDirectory;
+ LPCWSTR lpResourceName;
+ LPCWSTR lpApplicationName;
+ HMODULE hModule;
+} ACTCTXW, *PACTCTXW;
+
+typedef const ACTCTXA *PCACTCTXA;
+typedef const ACTCTXW *PCACTCTXW;
+
+typedef __AW_ALIAS__(ACTCTX), *PACTCTX;
+typedef __AW_ALIAS__(PCACTCTX);
+
+typedef struct tagACTCTX_SECTION_KEYED_DATA
+{ ULONG cbSize;
+ ULONG ulDataFormatVersion;
+ PVOID lpData;
+ ULONG ulLength;
+ PVOID lpSectionGlobalData;
+ ULONG ulSectionGlobalDataLength;
+ PVOID lpSectionBase;
+ ULONG ulSectionTotalLength;
+ HANDLE hActCtx;
+ HANDLE ulAssemblyRosterIndex;
+} ACTCTX_SECTION_KEYED_DATA, *PACTCTX_SECTION_KEYED_DATA;
+
+typedef const ACTCTX_SECTION_KEYED_DATA *PCACTCTX_SECTION_KEYED_DATA;
+
+typedef enum
+{ LowMemoryResourceNotification,
+ HighMemoryResourceNotification
+} MEMORY_RESOURCE_NOTIFICATION_TYPE;
+
+WINBASEAPI BOOL WINAPI ActivateActCtx (HANDLE, ULONG_PTR *);
+WINBASEAPI void WINAPI AddRefActCtx (HANDLE);
+
+#define CheckNameLegalDOS8Dot3 __AW_SUFFIXED__(CheckNameLegalDOS8Dot3)
+WINBASEAPI BOOL WINAPI CheckNameLegalDOS8Dot3A
+(LPCSTR, LPSTR, DWORD, PBOOL, PBOOL);
+WINBASEAPI BOOL WINAPI CheckNameLegalDOS8Dot3W
+(LPCWSTR, LPSTR, DWORD, PBOOL, PBOOL);
+
+WINBASEAPI BOOL WINAPI CheckRemoteDebuggerPresent (HANDLE, PBOOL);
+
+#define CreateActCtx __AW_SUFFIXED__(CreateActCtx)
+WINBASEAPI HANDLE WINAPI CreateActCtxA (PCACTCTXA);
+WINBASEAPI HANDLE WINAPI CreateActCtxW (PCACTCTXW);
+
+WINBASEAPI HANDLE WINAPI CreateMemoryResourceNotification
+(MEMORY_RESOURCE_NOTIFICATION_TYPE);
+
+WINBASEAPI BOOL WINAPI DeactivateActCtx (DWORD, ULONG_PTR);
+WINBASEAPI BOOL WINAPI DebugActiveProcessStop (DWORD);
+WINBASEAPI BOOL WINAPI DebugBreakProcess (HANDLE);
+WINBASEAPI BOOL WINAPI DebugSetProcessKillOnExit (BOOL);
+
+WINBASEAPI BOOL WINAPI FindActCtxSectionGuid
+(DWORD, const GUID *, ULONG, const GUID *, PACTCTX_SECTION_KEYED_DATA);
+
+#define FindActCtxSectionString __AW_SUFFIXED__(FindActCtxSectionString)
+WINBASEAPI BOOL WINAPI FindActCtxSectionStringA
+(DWORD, const GUID *, ULONG, LPCSTR, PACTCTX_SECTION_KEYED_DATA);
+WINBASEAPI BOOL WINAPI FindActCtxSectionStringW
+(DWORD, const GUID *, ULONG, LPCWSTR, PACTCTX_SECTION_KEYED_DATA);
+
+WINBASEAPI BOOL WINAPI GetCurrentActCtx (HANDLE *);
+
+#define GetModuleHandleEx __AW_SUFFIXED__(GetModuleHandleEx)
+WINBASEAPI BOOL WINAPI GetModuleHandleExA (DWORD, LPCSTR, HMODULE *);
+WINBASEAPI BOOL WINAPI GetModuleHandleExW (DWORD, LPCWSTR, HMODULE *);
+
+WINBASEAPI VOID WINAPI GetNativeSystemInfo (LPSYSTEM_INFO);
+WINBASEAPI BOOL WINAPI GetProcessHandleCount (HANDLE, PDWORD);
+WINBASEAPI DWORD WINAPI GetProcessId (HANDLE);
+WINBASEAPI BOOL WINAPI GetSystemRegistryQuota (PDWORD, PDWORD);
+WINBASEAPI BOOL WINAPI GetSystemTimes (LPFILETIME, LPFILETIME, LPFILETIME);
+
+#define GetSystemWow64Directory __AW_SUFFIXED__(GetSystemWow64Directory)
+WINBASEAPI UINT WINAPI GetSystemWow64DirectoryA (LPSTR, UINT);
+WINBASEAPI UINT WINAPI GetSystemWow64DirectoryW (LPWSTR, UINT);
+WINBASEAPI BOOL WINAPI GetThreadIOPendingFlag (HANDLE, PBOOL);
+#define \
+GetVolumePathNamesForVolumeName __AW_SUFFIXED__(GetVolumePathNamesForVolumeName)
+WINBASEAPI BOOL WINAPI GetVolumePathNamesForVolumeNameA
+(LPCSTR, LPSTR, DWORD, PDWORD);
+WINBASEAPI BOOL WINAPI GetVolumePathNamesForVolumeNameW
+(LPCWSTR, LPWSTR, DWORD, PDWORD);
+
+WINBASEAPI BOOL WINAPI HeapQueryInformation
+(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T, PSIZE_T);
+WINBASEAPI BOOL WINAPI HeapSetInformation
+(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T);
+
+WINBASEAPI BOOL IsProcessInJob (HANDLE, HANDLE, PBOOL);
+WINBASEAPI BOOL WINAPI IsWow64Process (HANDLE, PBOOL);
+
+WINBASEAPI BOOL WINAPI QueryActCtxW
+(DWORD, HANDLE, PVOID, ULONG, PVOID, SIZE_T, SIZE_T *);
+WINBASEAPI BOOL WINAPI QueryMemoryResourceNotification (HANDLE, PBOOL);
+
+WINBASEAPI void WINAPI ReleaseActCtx (HANDLE);
+WINBASEAPI VOID WINAPI RestoreLastError (DWORD);
+
+#define SetFileShortName __AW_SUFFIXED__(SetFileShortName)
+WINBASEAPI BOOL WINAPI SetFileShortNameA (HANDLE, LPCSTR);
+WINBASEAPI BOOL WINAPI SetFileShortNameW (HANDLE, LPCWSTR);
+
+WINBASEAPI BOOL WINAPI SetFileValidData (HANDLE, LONGLONG);
+
+WINBASEAPI BOOL WINAPI TzSpecificLocalTimeToSystemTime
+(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME);
+
+WINBASEAPI BOOL WINAPI ZombifyActCtx (HANDLE);
+
+#if _WIN32_WINNT >= _WIN32_WINNT_WS03
+/* Further added features, which became available on the WinNT platform
+ * from Windows Server-2003; these were never made available in Win9x.
+ */
+/* GetFirmwareEnvironmentVariable: previously missing UNICODE vs. ANSI define */
+#define \
+GetFirmwareEnvironmentVariable __AW_SUFFIXED__(GetFirmwareEnvironmentVariable)
+WINBASEAPI DWORD WINAPI GetFirmwareEnvironmentVariableA
+(LPCSTR, LPCSTR, PVOID, DWORD);
+WINBASEAPI DWORD WINAPI GetFirmwareEnvironmentVariableW
+(LPCWSTR, LPCWSTR, PVOID, DWORD);
+
+#define GetDllDirectory __AW_SUFFIXED__(GetDllDirectory)
+WINBASEAPI DWORD WINAPI GetDllDirectoryA (DWORD, LPSTR);
+WINBASEAPI DWORD WINAPI GetDllDirectoryW (DWORD, LPWSTR);
+
+WINBASEAPI HANDLE WINAPI ReOpenFile (HANDLE, DWORD, DWORD, DWORD);
+
+#define SetDllDirectory __AW_SUFFIXED__(SetDllDirectory)
+WINBASEAPI BOOL WINAPI SetDllDirectoryA (LPCSTR);
+WINBASEAPI BOOL WINAPI SetDllDirectoryW (LPCWSTR);
+
+#define \
+SetFirmwareEnvironmentVariable __AW_SUFFIXED__(SetFirmwareEnvironmentVariable)
+WINBASEAPI BOOL WINAPI SetFirmwareEnvironmentVariableA
+(LPCSTR, LPCSTR, PVOID, DWORD);
+WINBASEAPI BOOL WINAPI SetFirmwareEnvironmentVariableW
+(LPCWSTR, LPCWSTR, PVOID, DWORD);
+
+#if _WIN32_WINNT >= _WIN32_WINNT_VISTA
+/* Additional features, available only on the WinNT series platforms, from
+ * the release of Windows-Vista onwards.
+ */
+typedef struct _FILE_BASIC_INFO
+/* http://msdn.microsoft.com/en-us/library/aa364217%28VS.85%29.aspx */
+{ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ DWORD FileAttributes;
+} FILE_BASIC_INFO, *PFILE_BASIC_INFO, *LPFILE_BASIC_INFO;
+
+typedef struct _FILE_STANDARD_INFO
+/* http://msdn.microsoft.com/en-us/library/aa364401%28VS.85%29.aspx */
+{ LARGE_INTEGER AllocationSize;
+ LARGE_INTEGER EndOfFile;
+ DWORD NumberOfLinks;
+ BOOL DeletePending;
+ BOOL Directory;
+} FILE_STANDARD_INFO, *PFILE_STANDARD_INFO, *LPFILE_STANDARD_INFO;
+
+typedef struct _FILE_NAME_INFO
+/* http://msdn.microsoft.com/en-us/library/aa364388%28v=VS.85%29.aspx */
+{ DWORD FileNameLength;
+ WCHAR FileName[1];
+} FILE_NAME_INFO, *PFILE_NAME_INFO, *LPFILE_NAME_INFO;
+
+typedef struct _FILE_STREAM_INFO
+/* http://msdn.microsoft.com/en-us/library/aa364406%28v=VS.85%29.aspx */
+{ DWORD NextEntryOffset;
+ DWORD StreamNameLength;
+ LARGE_INTEGER StreamSize;
+ LARGE_INTEGER StreamAllocationSize;
+ WCHAR StreamName[1];
+} FILE_STREAM_INFO, *PFILE_STREAM_INFO, *LPFILE_STREAM_INFO;
+
+typedef struct _FILE_COMPRESSION_INFO
+/* http://msdn.microsoft.com/en-us/library/aa364220%28v=VS.85%29.aspx */
+{ LARGE_INTEGER CompressedFileSize;
+ WORD CompressionFormat;
+ UCHAR CompressionUnitShift;
+ UCHAR ChunkShift;
+ UCHAR ClusterShift;
+ UCHAR Reserved[3];
+} FILE_COMPRESSION_INFO, *PFILE_COMPRESSION_INFO, *LPFILE_COMPRESSION_INFO;
+
+typedef struct _FILE_ATTRIBUTE_TAG_INFO
+/* http://msdn.microsoft.com/en-us/library/aa364216%28v=VS.85%29.aspx */
+{ DWORD FileAttributes;
+ DWORD ReparseTag;
+} FILE_ATTRIBUTE_TAG_INFO, *PFILE_ATTRIBUTE_TAG_INFO, *LPFILE_ATTRIBUTE_TAG_INFO;
+
+typedef struct _FILE_ID_BOTH_DIR_INFO
+/* http://msdn.microsoft.com/en-us/library/aa364226%28v=VS.85%29.aspx */
+{ DWORD NextEntryOffset;
+ DWORD FileIndex;
+ LARGE_INTEGER CreationTime;
+ LARGE_INTEGER LastAccessTime;
+ LARGE_INTEGER LastWriteTime;
+ LARGE_INTEGER ChangeTime;
+ LARGE_INTEGER EndOfFile;
+ LARGE_INTEGER AllocationSize;
+ DWORD FileAttributes;
+ DWORD FileNameLength;
+ DWORD EaSize;
+ CCHAR ShortNameLength;
+ WCHAR ShortName[12];
+ LARGE_INTEGER FileId;
+ WCHAR FileName[1];
+} FILE_ID_BOTH_DIR_INFO, *PFILE_ID_BOTH_DIR_INFO, *LPFILE_ID_BOTH_DIR_INFO;
+
+typedef struct _FILE_REMOTE_PROTOCOL_INFO
+/* http://msdn.microsoft.com/en-us/library/dd979524%28v=VS.85%29.aspx */
+{ USHORT StructureVersion;
+ USHORT StructureSize;
+ ULONG Protocol;
+ USHORT ProtocolMajorVersion;
+ USHORT ProtocolMinorVersion;
+ USHORT ProtocolRevision;
+ USHORT Reserved;
+ ULONG Flags;
+ struct
+ { ULONG Reserved[8];
+ } GenericReserved;
+ struct
+ { ULONG Reserved[16];
+ } ProtocolSpecificReserved;
+} FILE_REMOTE_PROTOCOL_INFO, *PFILE_REMOTE_PROTOCOL_INFO, *LPFILE_REMOTE_PROTOCOL_INFO;
+
+typedef enum _DEP_SYSTEM_POLICY_TYPE
+{ AlwaysOn,
+ AlwaysOff,
+ OptIn,
+ OptOut
+} DEP_SYSTEM_POLICY_TYPE;
+
+typedef enum _FILE_INFO_BY_HANDLE_CLASS
+/* http://msdn.microsoft.com/en-us/library/aa364228%28v=VS.85%29.aspx */
+{ FileBasicInfo,
+ FileStandardInfo,
+ FileNameInfo,
+ FileRenameInfo,
+ FileDispositionInfo,
+ FileAllocationInfo,
+ FileEndOfFileInfo,
+ FileStreamInfo,
+ FileCompressionInfo,
+ FileAttributeTagInfo,
+ FileIdBothDirectoryInfo,
+ FileIdBothDirectoryRestartInfo,
+ FileIoPriorityHintInfo,
+ FileRemoteProtocolInfo,
+ MaximumFileInfoByHandlesClass
+} FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS;
+
+#define CreateSymbolicLink __AW_SUFFIXED__(CreateSymbolicLink)
+WINBASEAPI BOOL WINAPI CreateSymbolicLinkA (LPCSTR, LPCSTR, DWORD);
+WINBASEAPI BOOL WINAPI CreateSymbolicLinkW (LPCWSTR, LPCWSTR, DWORD);
+
+/* http://msdn.microsoft.com/en-us/library/aa364953%28VS.85%29.aspx */
+WINBASEAPI BOOL WINAPI GetFileInformationByHandleEx
+(HANDLE, FILE_INFO_BY_HANDLE_CLASS, LPVOID, DWORD);
+
+/* http://msdn.microsoft.com/en-us/library/aa364962%28VS.85%29.aspx */
+#define GetFinalPathNameByHandle __AW_SUFFIXED__(GetFinalPathNameByHandle)
+WINBASEAPI DWORD WINAPI GetFinalPathNameByHandleA (HANDLE, LPSTR, DWORD, DWORD);
+WINBASEAPI DWORD WINAPI GetFinalPathNameByHandleW
+(HANDLE, LPWSTR, DWORD, DWORD);
+
+#if _WIN32_WINNT >= _WIN32_WINNT_WIN7
+/* Additional features, available only on the WinNT series platforms, from
+ * the release of Windows-7 onwards.
+ */
+WINBASEAPI BOOL WINAPI GetProcessDEPPolicy (HANDLE, LPDWORD, PBOOL);
+WINBASEAPI DEP_SYSTEM_POLICY_TYPE WINAPI GetSystemDEPPolicy (void);
+
+WINBASEAPI BOOL WINAPI SetProcessDEPPolicy (DWORD);
+
+#endif /* Win7 and later */
+#endif /* Windows Vista and later */
+#endif /* Windows Server-2003 and later */
+#endif /* WinXP and later; not Win9x */
+#endif /* Win2K and later, but not Win9x */
+#endif /* Win98, Win2K, and later */