[HEADERS]
[reactos.git] / reactos / include / psdk / winbase.h
index 2bab90b..b7a5fd2 100644 (file)
 extern "C" {
 #endif
 
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable:4201)
+#pragma warning(disable:4214)
+#pragma warning(disable:4820)
+#endif
+
+#define PROCESS_NAME_NATIVE      1
+
 #define FILE_ENCRYPTABLE         0
 #define FILE_IS_ENCRYPTED        1
 #define FILE_SYSTEM_ATTR         2
@@ -484,6 +493,8 @@ extern "C" {
 #define DDD_RAW_TARGET_PATH 1
 #define DDD_REMOVE_DEFINITION 2
 #define DDD_EXACT_MATCH_ON_REMOVE 4
+#define DDD_NO_BROADCAST_SYSTEM 8
+#define DDD_LUID_BROADCAST_DRIVE 16
 #define HINSTANCE_ERROR 32
 #define MS_CTS_ON 16
 #define MS_DSR_ON 32
@@ -520,6 +531,7 @@ extern "C" {
 #define QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX 0x00000004
 #define QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE 0x00000008
 #define QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS 0x00000010
+#define QUERY_ACTCTX_FLAG_NO_ADDREF 0x80000000
 #if (_WIN32_WINNT >= 0x0600)
 #define SYMBOLIC_LINK_FLAG_DIRECTORY 0x1
 #endif
@@ -563,6 +575,7 @@ extern "C" {
 #endif
 
 #ifndef RC_INVOKED
+
 #ifndef _FILETIME_
 #define _FILETIME_
 typedef struct _FILETIME {
@@ -570,6 +583,7 @@ typedef struct _FILETIME {
        DWORD dwHighDateTime;
 } FILETIME,*PFILETIME,*LPFILETIME;
 #endif
+
 typedef struct _BY_HANDLE_FILE_INFORMATION {
        DWORD   dwFileAttributes;
        FILETIME        ftCreationTime;
@@ -581,7 +595,8 @@ typedef struct _BY_HANDLE_FILE_INFORMATION {
        DWORD   nNumberOfLinks;
        DWORD   nFileIndexHigh;
        DWORD   nFileIndexLow;
-} BY_HANDLE_FILE_INFORMATION,*LPBY_HANDLE_FILE_INFORMATION;
+} BY_HANDLE_FILE_INFORMATION,*PBY_HANDLE_FILE_INFORMATION,*LPBY_HANDLE_FILE_INFORMATION;
+
 typedef struct _DCB {
        DWORD DCBlength;
        DWORD BaudRate;
@@ -612,6 +627,7 @@ typedef struct _DCB {
        char EvtChar;
        WORD wReserved1;
 } DCB,*LPDCB;
+
 typedef struct _COMM_CONFIG {
        DWORD dwSize;
        WORD  wVersion;
@@ -622,6 +638,7 @@ typedef struct _COMM_CONFIG {
        DWORD dwProviderSize;
        WCHAR wcProviderData[1];
 } COMMCONFIG,*LPCOMMCONFIG;
+
 typedef struct _COMMPROP {
        WORD    wPacketLength;
        WORD    wPacketVersion;
@@ -642,6 +659,7 @@ typedef struct _COMMPROP {
        DWORD   dwProvSpec2;
        WCHAR   wcProvChar[1];
 } COMMPROP,*LPCOMMPROP;
+
 typedef struct _COMMTIMEOUTS {
        DWORD ReadIntervalTimeout;
        DWORD ReadTotalTimeoutMultiplier;
@@ -649,6 +667,7 @@ typedef struct _COMMTIMEOUTS {
        DWORD WriteTotalTimeoutMultiplier;
        DWORD WriteTotalTimeoutConstant;
 } COMMTIMEOUTS,*LPCOMMTIMEOUTS;
+
 typedef struct _COMSTAT {
        DWORD fCtsHold:1;
        DWORD fDsrHold:1;
@@ -661,7 +680,9 @@ typedef struct _COMSTAT {
        DWORD cbInQue;
        DWORD cbOutQue;
 } COMSTAT,*LPCOMSTAT;
+
 typedef DWORD (WINAPI *LPTHREAD_START_ROUTINE)(LPVOID);
+
 typedef struct _CREATE_PROCESS_DEBUG_INFO {
        HANDLE hFile;
        HANDLE hProcess;
@@ -674,21 +695,26 @@ typedef struct _CREATE_PROCESS_DEBUG_INFO {
        LPVOID lpImageName;
        WORD fUnicode;
 } CREATE_PROCESS_DEBUG_INFO,*LPCREATE_PROCESS_DEBUG_INFO;
+
 typedef struct _CREATE_THREAD_DEBUG_INFO {
        HANDLE hThread;
        LPVOID lpThreadLocalBase;
        LPTHREAD_START_ROUTINE lpStartAddress;
 } CREATE_THREAD_DEBUG_INFO,*LPCREATE_THREAD_DEBUG_INFO;
+
 typedef struct _EXCEPTION_DEBUG_INFO {
        EXCEPTION_RECORD ExceptionRecord;
        DWORD dwFirstChance;
 } EXCEPTION_DEBUG_INFO,*LPEXCEPTION_DEBUG_INFO;
+
 typedef struct _EXIT_THREAD_DEBUG_INFO {
        DWORD dwExitCode;
 } EXIT_THREAD_DEBUG_INFO,*LPEXIT_THREAD_DEBUG_INFO;
+
 typedef struct _EXIT_PROCESS_DEBUG_INFO {
        DWORD dwExitCode;
 } EXIT_PROCESS_DEBUG_INFO,*LPEXIT_PROCESS_DEBUG_INFO;
+
 typedef struct _LOAD_DLL_DEBUG_INFO {
        HANDLE hFile;
        LPVOID lpBaseOfDll;
@@ -697,18 +723,22 @@ typedef struct _LOAD_DLL_DEBUG_INFO {
        LPVOID lpImageName;
        WORD fUnicode;
 } LOAD_DLL_DEBUG_INFO,*LPLOAD_DLL_DEBUG_INFO;
+
 typedef struct _UNLOAD_DLL_DEBUG_INFO {
        LPVOID lpBaseOfDll;
 } UNLOAD_DLL_DEBUG_INFO,*LPUNLOAD_DLL_DEBUG_INFO;
+
 typedef struct _OUTPUT_DEBUG_STRING_INFO {
        LPSTR lpDebugStringData;
        WORD fUnicode;
        WORD nDebugStringLength;
 } OUTPUT_DEBUG_STRING_INFO,*LPOUTPUT_DEBUG_STRING_INFO;
+
 typedef struct _RIP_INFO {
        DWORD dwError;
        DWORD dwType;
 } RIP_INFO,*LPRIP_INFO;
+
 typedef struct _DEBUG_EVENT {
        DWORD dwDebugEventCode;
        DWORD dwProcessId;
@@ -725,6 +755,7 @@ typedef struct _DEBUG_EVENT {
                RIP_INFO RipInfo;
        } u;
 } DEBUG_EVENT,*LPDEBUG_EVENT;
+
 typedef struct _OVERLAPPED {
        ULONG_PTR Internal;
        ULONG_PTR InternalHigh;
@@ -732,6 +763,7 @@ typedef struct _OVERLAPPED {
        DWORD OffsetHigh;
        HANDLE hEvent;
 } OVERLAPPED,*POVERLAPPED,*LPOVERLAPPED;
+
 typedef struct _STARTUPINFOA {
        DWORD   cb;
        LPSTR   lpReserved;
@@ -752,6 +784,7 @@ typedef struct _STARTUPINFOA {
        HANDLE  hStdOutput;
        HANDLE  hStdError;
 } STARTUPINFOA,*LPSTARTUPINFOA;
+
 typedef struct _STARTUPINFOW {
        DWORD   cb;
        LPWSTR  lpReserved;
@@ -772,12 +805,14 @@ typedef struct _STARTUPINFOW {
        HANDLE  hStdOutput;
        HANDLE  hStdError;
 } STARTUPINFOW,*LPSTARTUPINFOW;
+
 typedef struct _PROCESS_INFORMATION {
        HANDLE hProcess;
        HANDLE hThread;
        DWORD dwProcessId;
        DWORD dwThreadId;
-} PROCESS_INFORMATION,*LPPROCESS_INFORMATION;
+} PROCESS_INFORMATION,*PPROCESS_INFORMATION,*LPPROCESS_INFORMATION;
+
 typedef struct _CRITICAL_SECTION_DEBUG {
        WORD Type;
        WORD CreatorBackTraceIndex;
@@ -790,7 +825,8 @@ typedef struct _CRITICAL_SECTION_DEBUG {
 //#else
        //WORD SpareWORD;
 //#endif
-} CRITICAL_SECTION_DEBUG,*PCRITICAL_SECTION_DEBUG;
+} CRITICAL_SECTION_DEBUG,*PCRITICAL_SECTION_DEBUG,*LPCRITICAL_SECTION_DEBUG;
+
 typedef struct _CRITICAL_SECTION {
        PCRITICAL_SECTION_DEBUG DebugInfo;
        LONG LockCount;
@@ -799,6 +835,7 @@ typedef struct _CRITICAL_SECTION {
        HANDLE LockSemaphore;
        ULONG_PTR SpinCount;
 } CRITICAL_SECTION,*PCRITICAL_SECTION,*LPCRITICAL_SECTION;
+
 #ifndef _SYSTEMTIME_
 #define _SYSTEMTIME_
 typedef struct _SYSTEMTIME {
@@ -847,15 +884,18 @@ typedef struct _WIN32_FIND_DATAW {
        WCHAR cFileName[MAX_PATH];
        WCHAR cAlternateFileName[14];
 } WIN32_FIND_DATAW,*PWIN32_FIND_DATAW,*LPWIN32_FIND_DATAW;
+
 #if (_WIN32_WINNT >= 0x0501)
 typedef enum _STREAM_INFO_LEVELS {
        FindStreamInfoStandard
 } STREAM_INFO_LEVELS;
+
 typedef struct _WIN32_FIND_STREAM_DATA {
        LARGE_INTEGER StreamSize;
        WCHAR cStreamName[MAX_PATH + 36];
 } WIN32_FIND_STREAM_DATA, *PWIN32_FIND_STREAM_DATA;
 #endif
+
 typedef struct _WIN32_STREAM_ID {
        DWORD dwStreamId;
        DWORD dwStreamAttributes;
@@ -863,11 +903,13 @@ typedef struct _WIN32_STREAM_ID {
        DWORD dwStreamNameSize;
        WCHAR cStreamName[ANYSIZE_ARRAY];
 } WIN32_STREAM_ID, *LPWIN32_STREAM_ID;
+
 #if (_WIN32_WINNT >= 0x0600)
 typedef enum _FILE_ID_TYPE {
        FileIdType,
        MaximumFileIdType
 } FILE_ID_TYPE, *PFILE_ID_TYPE;
+
 typedef struct _FILE_ID_DESCRIPTOR {
        DWORD dwSize;
        FILE_ID_TYPE Type;
@@ -876,30 +918,44 @@ typedef struct _FILE_ID_DESCRIPTOR {
        } DUMMYUNIONNAME;
 } FILE_ID_DESCRIPTOR, *LPFILE_ID_DESCRIPTOR;
 #endif
+
 typedef enum _FINDEX_INFO_LEVELS {
        FindExInfoStandard,
        FindExInfoMaxInfoLevel
 } FINDEX_INFO_LEVELS;
+
 typedef enum _FINDEX_SEARCH_OPS {
        FindExSearchNameMatch,
        FindExSearchLimitToDirectories,
        FindExSearchLimitToDevices,
        FindExSearchMaxSearchOp
 } FINDEX_SEARCH_OPS;
+
 typedef struct tagHW_PROFILE_INFOA {
        DWORD dwDockInfo;
        CHAR szHwProfileGuid[HW_PROFILE_GUIDLEN];
        CHAR szHwProfileName[MAX_PROFILE_LEN];
 } HW_PROFILE_INFOA,*LPHW_PROFILE_INFOA;
+
 typedef struct tagHW_PROFILE_INFOW {
        DWORD dwDockInfo;
        WCHAR szHwProfileGuid[HW_PROFILE_GUIDLEN];
        WCHAR szHwProfileName[MAX_PROFILE_LEN];
 } HW_PROFILE_INFOW,*LPHW_PROFILE_INFOW;
+
+/* Event Logging */
+
+#define EVENTLOG_FULL_INFO          0
+
+typedef struct _EVENTLOG_FULL_INFORMATION {
+    DWORD dwFull;
+} EVENTLOG_FULL_INFORMATION, *LPEVENTLOG_FULL_INFORMATION;
+
 typedef enum _GET_FILEEX_INFO_LEVELS {
        GetFileExInfoStandard,
        GetFileExMaxInfoLevel
 } GET_FILEEX_INFO_LEVELS;
+
 typedef struct _SYSTEM_INFO {
        _ANONYMOUS_UNION union {
                DWORD dwOemId;
@@ -918,6 +974,7 @@ typedef struct _SYSTEM_INFO {
        WORD wProcessorLevel;
        WORD wProcessorRevision;
 } SYSTEM_INFO,*LPSYSTEM_INFO;
+
 typedef struct _SYSTEM_POWER_STATUS {
        BYTE ACLineStatus;
        BYTE BatteryFlag;
@@ -926,6 +983,7 @@ typedef struct _SYSTEM_POWER_STATUS {
        DWORD BatteryLifeTime;
        DWORD BatteryFullLifeTime;
 } SYSTEM_POWER_STATUS,*LPSYSTEM_POWER_STATUS;
+
 typedef struct _TIME_ZONE_INFORMATION {
        LONG Bias;
        WCHAR StandardName[32];
@@ -934,7 +992,8 @@ typedef struct _TIME_ZONE_INFORMATION {
        WCHAR DaylightName[32];
        SYSTEMTIME DaylightDate;
        LONG DaylightBias;
-} TIME_ZONE_INFORMATION,*LPTIME_ZONE_INFORMATION;
+} TIME_ZONE_INFORMATION,*PTIME_ZONE_INFORMATION,*LPTIME_ZONE_INFORMATION;
+
 typedef struct _MEMORYSTATUS {
        DWORD dwLength;
        DWORD dwMemoryLoad;
@@ -945,6 +1004,7 @@ typedef struct _MEMORYSTATUS {
        DWORD dwTotalVirtual;
        DWORD dwAvailVirtual;
 } MEMORYSTATUS,*LPMEMORYSTATUS;
+
 #if (_WIN32_WINNT >= 0x0500)
 typedef struct _MEMORYSTATUSEX {
        DWORD dwLength;
@@ -958,6 +1018,7 @@ typedef struct _MEMORYSTATUSEX {
        DWORDLONG ullAvailExtendedVirtual;
 } MEMORYSTATUSEX, *LPMEMORYSTATUSEX;
 #endif
+
 #ifndef _LDT_ENTRY_DEFINED
 #define _LDT_ENTRY_DEFINED
 typedef struct _LDT_ENTRY {
@@ -985,6 +1046,7 @@ typedef struct _LDT_ENTRY {
        } HighWord;
 } LDT_ENTRY,*PLDT_ENTRY,*LPLDT_ENTRY;
 #endif
+
 typedef struct _PROCESS_HEAP_ENTRY {
        PVOID lpData;
        DWORD cbData;
@@ -1003,7 +1065,8 @@ typedef struct _PROCESS_HEAP_ENTRY {
                        LPVOID lpLastBlock;
                } Region;
        } DUMMYUNIONNAME;
-} PROCESS_HEAP_ENTRY,*LPPROCESS_HEAP_ENTRY;
+} PROCESS_HEAP_ENTRY,*PPROCESS_HEAP_ENTRY,*LPPROCESS_HEAP_ENTRY;
+
 typedef struct _OFSTRUCT {
        BYTE cBytes;
        BYTE fFixedDisk;
@@ -1012,6 +1075,7 @@ typedef struct _OFSTRUCT {
        WORD Reserved2;
        CHAR szPathName[OFS_MAXPATHNAME];
 } OFSTRUCT,*LPOFSTRUCT,*POFSTRUCT;
+
 #if (_WIN32_WINNT >= 0x0501)
 typedef struct tagACTCTXA {
        ULONG cbSize;
@@ -1025,6 +1089,7 @@ typedef struct tagACTCTXA {
        HMODULE hModule;
 } ACTCTXA,*PACTCTXA;
 typedef const ACTCTXA *PCACTCTXA;
+
 typedef struct tagACTCTXW {
        ULONG cbSize;
        DWORD dwFlags;
@@ -1037,6 +1102,30 @@ typedef struct tagACTCTXW {
        HMODULE hModule;
 } ACTCTXW,*PACTCTXW;
 typedef const ACTCTXW *PCACTCTXW;
+
+typedef struct tagACTCTX_SECTION_KEYED_DATA_2600 {
+       ULONG  cbSize;
+       ULONG  ulDataFormatVersion;
+       PVOID  lpData;
+       ULONG  ulLength;
+       PVOID  lpSectionGlobalData;
+       ULONG  ulSectionGlobalDataLength;
+       PVOID  lpSectionBase;
+       ULONG  ulSectionTotalLength;
+       HANDLE hActCtx;
+       ULONG  ulAssemblyRosterIndex;
+} ACTCTX_SECTION_KEYED_DATA_2600, *PACTCTX_SECTION_KEYED_DATA_2600;
+typedef const ACTCTX_SECTION_KEYED_DATA_2600 *PCACTCTX_SECTION_KEYED_DATA_2600;
+
+typedef struct tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA {
+       PVOID lpInformation;
+       PVOID lpSectionBase;
+       ULONG ulSectionLength;
+       PVOID lpSectionGlobalDataBase;
+       ULONG ulSectionGlobalDataLength;
+} ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA, *PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
+typedef const ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA *PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
+
 typedef struct tagACTCTX_SECTION_KEYED_DATA {
        ULONG cbSize;
        ULONG ulDataFormatVersion;
@@ -1047,14 +1136,28 @@ typedef struct tagACTCTX_SECTION_KEYED_DATA {
        PVOID lpSectionBase;
        ULONG ulSectionTotalLength;
        HANDLE hActCtx;
-       HANDLE ulAssemblyRosterIndex;
+       ULONG ulAssemblyRosterIndex;
+       /* Non 2600 extra fields */
+       ULONG ulFlags;
+       ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA AssemblyMetadata;
 } ACTCTX_SECTION_KEYED_DATA,*PACTCTX_SECTION_KEYED_DATA;
+
 typedef const ACTCTX_SECTION_KEYED_DATA *PCACTCTX_SECTION_KEYED_DATA;
+
+typedef struct _ACTIVATION_CONTEXT_BASIC_INFORMATION {
+       HANDLE hActCtx;
+       DWORD  dwFlags;
+} ACTIVATION_CONTEXT_BASIC_INFORMATION, *PACTIVATION_CONTEXT_BASIC_INFORMATION;
+typedef const struct _ACTIVATION_CONTEXT_BASIC_INFORMATION *PCACTIVATION_CONTEXT_BASIC_INFORMATION;
+
+typedef BOOL (WINAPI *PQUERYACTCTXW_FUNC)(DWORD,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T *);
+
 typedef enum {
        LowMemoryResourceNotification ,
        HighMemoryResourceNotification
 } MEMORY_RESOURCE_NOTIFICATION_TYPE;
 #endif /* (_WIN32_WINNT >= 0x0501) */
+
 #if (_WIN32_WINNT >= 0x0500)
 typedef enum _COMPUTER_NAME_FORMAT {
        ComputerNameNetBIOS,
@@ -1068,12 +1171,17 @@ typedef enum _COMPUTER_NAME_FORMAT {
        ComputerNameMax
 } COMPUTER_NAME_FORMAT;
 #endif /* (_WIN32_WINNT >= 0x0500) */
+
 #if (_WIN32_WINNT >= 0x0600)
 typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK;
 typedef RTL_CONDITION_VARIABLE CONDITION_VARIABLE, *PCONDITION_VARIABLE;
 #endif
+
 typedef DWORD(WINAPI *LPPROGRESS_ROUTINE)(LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,DWORD,DWORD,HANDLE,HANDLE,LPVOID);
-typedef void(WINAPI *LPFIBER_START_ROUTINE)(PVOID);
+
+typedef VOID (WINAPI *PFIBER_START_ROUTINE)( LPVOID lpFiberParameter );
+typedef PFIBER_START_ROUTINE LPFIBER_START_ROUTINE;
+
 typedef VOID (WINAPI *PFLS_CALLBACK_FUNCTION)(PVOID);
 typedef BOOL(CALLBACK *ENUMRESLANGPROCA)(HMODULE,LPCSTR,LPCSTR,WORD,LONG_PTR);
 typedef BOOL(CALLBACK *ENUMRESLANGPROCW)(HMODULE,LPCWSTR,LPCWSTR,WORD,LONG_PTR);
@@ -1089,7 +1197,13 @@ typedef void(CALLBACK *PTIMERAPCROUTINE)(PVOID,DWORD,DWORD);
 #if (_WIN32_WINNT >= 0x0600)
 typedef DWORD (WINAPI *APPLICATION_RECOVERY_CALLBACK)(PVOID);
 #endif
+
+#ifdef WINE_NO_UNICODE_MACROS /* force using a cast */
+#define MAKEINTATOM(atom)   ((ULONG_PTR)((WORD)(atom)))
+#else
 #define MAKEINTATOM(i) (LPTSTR)((ULONG_PTR)((WORD)(i)))
+#endif
+
 /* Functions */
 #ifndef UNDER_CE
 int APIENTRY WinMain(HINSTANCE,HINSTANCE,LPSTR,int);
@@ -1105,9 +1219,6 @@ LONG WINAPI _llseek(HFILE,LONG,int);
 HFILE WINAPI _lopen(LPCSTR,int);
 UINT WINAPI _lread(HFILE,LPVOID,UINT);
 UINT WINAPI _lwrite(HFILE,LPCSTR,UINT);
-#ifndef AbnormalTermination
-#define AbnormalTermination() FALSE
-#endif
 BOOL WINAPI AccessCheck(PSECURITY_DESCRIPTOR,HANDLE,DWORD,PGENERIC_MAPPING,PPRIVILEGE_SET,PDWORD,PDWORD,PBOOL);
 BOOL WINAPI AccessCheckAndAuditAlarmA(LPCSTR,LPVOID,LPSTR,LPSTR,PSECURITY_DESCRIPTOR,DWORD,PGENERIC_MAPPING,BOOL,PDWORD,PBOOL,PBOOL);
 BOOL WINAPI AccessCheckAndAuditAlarmW(LPCWSTR,LPVOID,LPWSTR,LPWSTR,PSECURITY_DESCRIPTOR,DWORD,PGENERIC_MAPPING,BOOL,PDWORD,PBOOL,PBOOL);
@@ -1143,6 +1254,7 @@ BOOL WINAPI AccessCheckByType(PSECURITY_DESCRIPTOR,PSID,HANDLE,DWORD,POBJECT_TYP
 BOOL WINAPI AdjustTokenGroups(HANDLE,BOOL,PTOKEN_GROUPS,DWORD,PTOKEN_GROUPS,PDWORD);
 BOOL WINAPI AdjustTokenPrivileges(HANDLE,BOOL,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
 BOOL WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID*);
+BOOL WINAPI CheckTokenMembership(HANDLE,PSID,PBOOL);
 BOOL WINAPI AllocateLocallyUniqueId(PLUID);
 BOOL WINAPI AreAllAccessesGranted(DWORD,DWORD);
 BOOL WINAPI AreAnyAccessesGranted(DWORD,DWORD);
@@ -1285,6 +1397,8 @@ void WINAPI DebugBreak(void);
 BOOL WINAPI DebugBreakProcess(HANDLE);
 BOOL WINAPI DebugSetProcessKillOnExit(BOOL);
 #endif
+PVOID WINAPI DecodePointer(PVOID);
+PVOID WINAPI DecodeSystemPointer(PVOID);
 BOOL WINAPI DefineDosDeviceA(DWORD,LPCSTR,LPCSTR);
 BOOL WINAPI DefineDosDeviceW(DWORD,LPCWSTR,LPCWSTR);
 #define DefineHandleTable(w) ((w),TRUE)
@@ -1314,6 +1428,8 @@ BOOL WINAPI DosDateTimeToFileTime(WORD,WORD,LPFILETIME);
 BOOL WINAPI DuplicateHandle(HANDLE,HANDLE,HANDLE,PHANDLE,DWORD,BOOL,DWORD);
 BOOL WINAPI DuplicateToken(HANDLE,SECURITY_IMPERSONATION_LEVEL,PHANDLE);
 BOOL WINAPI DuplicateTokenEx(HANDLE,DWORD,LPSECURITY_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
+PVOID WINAPI EncodePointer(PVOID);
+PVOID WINAPI EncodeSystemPointer(PVOID);
 BOOL WINAPI EncryptFileA(LPCSTR);
 BOOL WINAPI EncryptFileW(LPCWSTR);
 BOOL WINAPI EndUpdateResourceA(HANDLE,BOOL);
@@ -1512,6 +1628,7 @@ BOOL WINAPI GetNamedPipeInfo(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD);
 #if (_WIN32_WINNT >= 0x0501)
 VOID WINAPI GetNativeSystemInfo(LPSYSTEM_INFO);
 #endif
+BOOL WINAPI GetEventLogInformation(HANDLE,DWORD,LPVOID,DWORD,LPDWORD);
 BOOL WINAPI GetNumberOfEventLogRecords(HANDLE,PDWORD);
 BOOL WINAPI GetOldestEventLogRecord(HANDLE,PDWORD);
 BOOL WINAPI GetOverlappedResult(HANDLE,LPOVERLAPPED,PDWORD,BOOL);
@@ -1659,7 +1776,7 @@ BOOL WINAPI GlobalUnlock(HGLOBAL);
 BOOL WINAPI GlobalUnWire(HGLOBAL); /* Obsolete: Has no effect. */
 PVOID WINAPI GlobalWire(HGLOBAL); /* Obsolete: Has no effect. */
 #define HasOverlappedIoCompleted(lpOverlapped)  ((lpOverlapped)->Internal != STATUS_PENDING)
-PVOID WINAPI HeapAlloc(HANDLE,DWORD,DWORD);
+PVOID WINAPI HeapAlloc(HANDLE,DWORD,SIZE_T);
 SIZE_T WINAPI HeapCompact(HANDLE,DWORD);
 HANDLE WINAPI HeapCreate(DWORD,DWORD,DWORD);
 BOOL WINAPI HeapDestroy(HANDLE);
@@ -1690,9 +1807,7 @@ BOOL WINAPI InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION,DWORD);
 DWORD WINAPI SetCriticalSectionSpinCount(LPCRITICAL_SECTION,DWORD);
 BOOL WINAPI InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
 BOOL WINAPI InitializeSid (PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
-#if !defined(__WINDDK_H) && _WIN32_WINNT >= 0x0501
-VOID WINAPI InitializeSListHead(PSLIST_HEADER);
-#endif
+
 #if (_WIN32_WINNT >= 0x0600)
 VOID WINAPI InitializeSRWLock(PSRWLOCK);
 #endif
@@ -1764,6 +1879,26 @@ PSLIST_ENTRY WINAPI InterlockedPushEntrySList(PSLIST_HEADER,PSLIST_ENTRY);
 
 #endif // !(defined (_M_AMD64) || defined (_M_IA64))
 
+#if defined(_SLIST_HEADER_) && !defined(_NTOSP_)
+
+WINBASEAPI
+VOID
+WINAPI
+InitializeSListHead (
+  IN OUT PSLIST_HEADER ListHead);
+#endif
+
+USHORT WINAPI QueryDepthSList(PSLIST_HEADER);
+
+#ifdef _MSC_VER
+
+//
+// Intrinsics are a mess -- *sigh*
+//
+long _InterlockedCompareExchange(volatile long * const Destination, const long Exchange, const long Comperand);
+#pragma intrinsic(_InterlockedCompareExchange)
+#endif
+
 #if !defined(InterlockedAnd)
 #define InterlockedAnd InterlockedAnd_Inline
 FORCEINLINE
@@ -1777,7 +1912,7 @@ InterlockedAnd_Inline(IN OUT volatile LONG *Target,
     j = *Target;
     do {
         i = j;
-        j = _InterlockedCompareExchange((PLONG)Target,
+        j = _InterlockedCompareExchange((volatile long *)Target,
                                         i & Set,
                                         i);
 
@@ -1800,7 +1935,7 @@ InterlockedOr_Inline(IN OUT volatile LONG *Target,
     j = *Target;
     do {
         i = j;
-        j = _InterlockedCompareExchange((PLONG)Target,
+        j = _InterlockedCompareExchange((volatile long *)Target,
                                         i | Set,
                                         i);
 
@@ -1965,7 +2100,7 @@ BOOL WINAPI ReadEventLogW(HANDLE,DWORD,DWORD,PVOID,DWORD,DWORD *,DWORD *);
 BOOL WINAPI ReadFile(HANDLE,PVOID,DWORD,PDWORD,LPOVERLAPPED);
 BOOL WINAPI ReadFileEx(HANDLE,PVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
 BOOL WINAPI ReadFileScatter(HANDLE,FILE_SEGMENT_ELEMENT*,DWORD,LPDWORD,LPOVERLAPPED);
-BOOL WINAPI ReadProcessMemory(HANDLE,PCVOID,PVOID,SIZE_T,SIZE_T*);
+BOOL WINAPI ReadProcessMemory(HANDLE,PCVOID,PVOID,SIZE_T,PSIZE_T);
 #if (_WIN32_WINNT >= 0x0600)
 VOID WINAPI RecoveryFinished(BOOL);
 HRESULT WINAPI RecoveryInProgress(OUT PBOOL);
@@ -2128,6 +2263,7 @@ BOOL WINAPI TlsSetValue(DWORD,PVOID);
 BOOL WINAPI TransactNamedPipe(HANDLE,PVOID,DWORD,PVOID,DWORD,PDWORD,LPOVERLAPPED);
 BOOL WINAPI TransmitCommChar(HANDLE,char);
 BOOL WINAPI TryEnterCriticalSection(LPCRITICAL_SECTION);
+BOOL WINAPI TzSpecificLocalTimeToSystemTime(LPTIME_ZONE_INFORMATION,LPSYSTEMTIME,LPSYSTEMTIME);
 LONG WINAPI UnhandledExceptionFilter(LPEXCEPTION_POINTERS);
 BOOL WINAPI UnlockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
 BOOL WINAPI UnlockFileEx(HANDLE,DWORD,DWORD,DWORD,LPOVERLAPPED);
@@ -2599,6 +2735,11 @@ typedef ENUMRESTYPEPROCA ENUMRESTYPEPROC;
 #define WriteProfileString WriteProfileStringA
 #endif
 #endif
+
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+
 #ifdef __cplusplus
 }
 #endif