[PSDK]
[reactos.git] / reactos / include / psdk / dbghelp.h
index 483ef29..31d9d1b 100644 (file)
@@ -487,10 +487,8 @@ typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64
 #define SYMOPT_EXACT_SYMBOLS            0x00000400
 #define SYMOPT_WILD_UNDERSCORE          0x00000800
 #define SYMOPT_USE_DEFAULTS             0x00001000
-/* latest SDK defines:
 #define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS   0x00000800
 #define SYMOPT_IGNORE_NT_SYMPATH        0x00001000
-*/
 #define SYMOPT_INCLUDE_32BIT_MODULES    0x00002000
 #define SYMOPT_PUBLICS_ONLY             0x00004000
 #define SYMOPT_NO_PUBLICS               0x00008000
@@ -500,7 +498,12 @@ typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64
 #define SYMOPT_NO_PROMPTS               0x00080000
 #define SYMOPT_OVERWRITE                0x00100000
 #define SYMOPT_IGNORE_IMAGEDIR          0x00200000
-
+#define SYMOPT_FLAT_DIRECTORY           0x00400000
+#define SYMOPT_FAVOR_COMPRESSED         0x00800000
+#define SYMOPT_ALLOW_ZERO_ADDRESS       0x01000000
+#define SYMOPT_DISABLE_SYMSRV_AUTODETECT 0x02000000
+#define SYMOPT_READONLY_CACHE           0x04000000
+#define SYMOPT_SYMPATH_LAST             0x08000000
 #define SYMOPT_DEBUG                    0x80000000
 
 typedef struct _IMAGEHLP_STACK_FRAME
@@ -668,7 +671,11 @@ typedef struct _MINIDUMP_CALLBACK_OUTPUT
     } DUMMYUNIONNAME;
 } MINIDUMP_CALLBACK_OUTPUT, *PMINIDUMP_CALLBACK_OUTPUT;
 
-typedef BOOL (WINAPI* MINIDUMP_CALLBACK_ROUTINE)(PVOID, const PMINIDUMP_CALLBACK_INPUT, PMINIDUMP_CALLBACK_OUTPUT);
+typedef BOOL
+(WINAPI* MINIDUMP_CALLBACK_ROUTINE)(
+  _Inout_ PVOID,
+  _In_ const PMINIDUMP_CALLBACK_INPUT,
+  _Inout_ PMINIDUMP_CALLBACK_OUTPUT);
 
 typedef struct _MINIDUMP_CALLBACK_INFORMATION 
 {
@@ -887,12 +894,25 @@ typedef enum _MINIDUMP_STREAM_TYPE
     LastReservedStream          = 0xffff
 } MINIDUMP_STREAM_TYPE;
 
-BOOL WINAPI MiniDumpWriteDump(HANDLE, DWORD, HANDLE, MINIDUMP_TYPE,
-                              const PMINIDUMP_EXCEPTION_INFORMATION,
-                              const PMINIDUMP_USER_STREAM_INFORMATION,
-                              const PMINIDUMP_CALLBACK_INFORMATION);
-BOOL WINAPI MiniDumpReadDumpStream(PVOID, ULONG, PMINIDUMP_DIRECTORY*, PVOID*,
-                                   ULONG*);
+BOOL
+WINAPI
+MiniDumpWriteDump(
+  _In_ HANDLE,
+  _In_ DWORD,
+  _In_ HANDLE,
+  _In_ MINIDUMP_TYPE,
+  _In_opt_ const PMINIDUMP_EXCEPTION_INFORMATION,
+  _In_opt_ const PMINIDUMP_USER_STREAM_INFORMATION,
+  _In_opt_ const PMINIDUMP_CALLBACK_INFORMATION);
+
+BOOL
+WINAPI
+MiniDumpReadDumpStream(
+  _In_ PVOID,
+  _In_ ULONG,
+  _Outptr_result_maybenull_ PMINIDUMP_DIRECTORY*,
+  _Outptr_result_maybenull_ PVOID*,
+  _Out_opt_ ULONG*);
 
 #include <poppack.h>
 
@@ -904,23 +924,111 @@ BOOL WINAPI MiniDumpReadDumpStream(PVOID, ULONG, PMINIDUMP_DIRECTORY*, PVOID*,
 #define SLMFLAG_VIRTUAL         0x1
 #define SLMFLAG_NO_SYMBOLS      0x4
 
-typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID);
-BOOL   WINAPI EnumerateLoadedModules64(HANDLE, PENUMLOADED_MODULES_CALLBACK64, PVOID);
-typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)(PCWSTR, DWORD64, ULONG, PVOID);
-BOOL   WINAPI EnumerateLoadedModulesW64(HANDLE, PENUMLOADED_MODULES_CALLBACKW64, PVOID);
-typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(PCSTR, DWORD64, PVOID);
-BOOL    WINAPI SymEnumerateModules64(HANDLE, PSYM_ENUMMODULES_CALLBACK64, PVOID);
-typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)(PCWSTR, DWORD64, PVOID);
-BOOL    WINAPI SymEnumerateModulesW64(HANDLE, PSYM_ENUMMODULES_CALLBACKW64, PVOID);
-BOOL    WINAPI SymGetModuleInfo64(HANDLE, DWORD64, PIMAGEHLP_MODULE64);
-BOOL    WINAPI SymGetModuleInfoW64(HANDLE, DWORD64, PIMAGEHLP_MODULEW64);
-DWORD64 WINAPI SymGetModuleBase64(HANDLE, DWORD64);
-DWORD64 WINAPI SymLoadModule64(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD);
-DWORD64 WINAPI SymLoadModuleEx(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD,
-                               PMODLOAD_DATA, DWORD);
-DWORD64 WINAPI SymLoadModuleExW(HANDLE, HANDLE, PCWSTR, PCWSTR, DWORD64, DWORD,
-                                PMODLOAD_DATA, DWORD);
-BOOL    WINAPI SymUnloadModule64(HANDLE, DWORD64);
+typedef BOOL
+(CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(
+  _In_ PCSTR,
+  _In_ DWORD64,
+  _In_ ULONG,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+EnumerateLoadedModules64(
+  _In_ HANDLE,
+  _In_ PENUMLOADED_MODULES_CALLBACK64,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)(
+  _In_ PCWSTR,
+  _In_ DWORD64,
+  _In_ ULONG,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+EnumerateLoadedModulesW64(
+  _In_ HANDLE,
+  _In_ PENUMLOADED_MODULES_CALLBACKW64,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(
+  _In_ PCSTR,
+  _In_ DWORD64,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumerateModules64(
+  _In_ HANDLE,
+  _In_ PSYM_ENUMMODULES_CALLBACK64,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)(
+  _In_ PCWSTR,
+  _In_ DWORD64,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumerateModulesW64(
+  _In_ HANDLE,
+  _In_ PSYM_ENUMMODULES_CALLBACKW64,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymGetModuleInfo64(
+  _In_ HANDLE,
+  _In_ DWORD64,
+  _Out_ PIMAGEHLP_MODULE64);
+
+BOOL
+WINAPI
+SymGetModuleInfoW64(
+  _In_ HANDLE,
+  _In_ DWORD64,
+  _Out_ PIMAGEHLP_MODULEW64);
+
+DWORD64 WINAPI SymGetModuleBase64(_In_ HANDLE, _In_ DWORD64);
+
+DWORD64
+WINAPI
+SymLoadModule64(
+  _In_ HANDLE,
+  _In_opt_ HANDLE,
+  _In_opt_ PCSTR,
+  _In_opt_ PCSTR,
+  _In_ DWORD64,
+  _In_ DWORD);
+
+DWORD64
+WINAPI
+SymLoadModuleEx(
+  _In_ HANDLE,
+  _In_opt_ HANDLE,
+  _In_opt_ PCSTR,
+  _In_opt_ PCSTR,
+  _In_ DWORD64,
+  _In_ DWORD,
+  _In_opt_ PMODLOAD_DATA,
+  _In_opt_ DWORD);
+
+DWORD64
+WINAPI
+SymLoadModuleExW(
+  _In_ HANDLE,
+  _In_opt_ HANDLE,
+  _In_opt_ PCWSTR,
+  _In_opt_ PCWSTR,
+  _In_ DWORD64,
+  _In_ DWORD,
+  _In_opt_ PMODLOAD_DATA,
+  _In_opt_ DWORD);
+
+BOOL WINAPI SymUnloadModule64(_In_ HANDLE, _In_ DWORD64);
 
 /*************************
  *    Symbol Handling    *
@@ -1086,83 +1194,494 @@ typedef struct _TI_FINDCHILDREN_PARAMS
 #define SYMSEARCH_RECURSE               0x02
 #define SYMSEARCH_GLOBALSONLY           0x04
 
-BOOL WINAPI SymGetTypeInfo(HANDLE, DWORD64, ULONG, IMAGEHLP_SYMBOL_TYPE_INFO, PVOID);
-BOOL WINAPI SymGetTypeInfoEx(HANDLE, DWORD64, PIMAGEHLP_GET_TYPE_INFO_PARAMS);
-typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO, ULONG, PVOID);
-typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)(PSYMBOL_INFOW, ULONG, PVOID);
-BOOL WINAPI SymEnumTypes(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID);
-BOOL WINAPI SymEnumTypesW(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID);
-BOOL WINAPI SymFromAddr(HANDLE, DWORD64, DWORD64*, SYMBOL_INFO*);
-BOOL WINAPI SymFromAddrW(HANDLE, DWORD64, DWORD64*, SYMBOL_INFOW*);
-BOOL WINAPI SymFromToken(HANDLE, DWORD64, DWORD, PSYMBOL_INFO);
-BOOL WINAPI SymFromTokenW(HANDLE, DWORD64, DWORD, PSYMBOL_INFOW);
-BOOL WINAPI SymFromName(HANDLE, PCSTR, PSYMBOL_INFO);
-BOOL WINAPI SymFromNameW(HANDLE, PCWSTR, PSYMBOL_INFOW);
-BOOL WINAPI SymGetSymFromAddr64(HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64);
-BOOL WINAPI SymGetSymFromName64(HANDLE, PCSTR, PIMAGEHLP_SYMBOL64);
-BOOL WINAPI SymGetTypeFromName(HANDLE, ULONG64, PCSTR, PSYMBOL_INFO);
-BOOL WINAPI SymGetTypeFromNameW(HANDLE, ULONG64, PCWSTR, PSYMBOL_INFOW);
-BOOL WINAPI SymGetSymNext64(HANDLE, PIMAGEHLP_SYMBOL64);
-BOOL WINAPI SymGetSymNextW64(HANDLE, PIMAGEHLP_SYMBOLW64);
-BOOL WINAPI SymGetSymPrev64(HANDLE, PIMAGEHLP_SYMBOL64);
-BOOL WINAPI SymGetSymPrevW64(HANDLE, PIMAGEHLP_SYMBOLW64);
-BOOL WINAPI SymEnumSym(HANDLE,ULONG64,PSYM_ENUMERATESYMBOLS_CALLBACK,PVOID);
-BOOL WINAPI SymEnumSymbols(HANDLE, ULONG64, PCSTR, PSYM_ENUMERATESYMBOLS_CALLBACK,
-                           PVOID);
-BOOL WINAPI SymEnumSymbolsW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMERATESYMBOLS_CALLBACKW,
-                            PVOID);
-typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID);
-typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(PCWSTR, DWORD64, ULONG, PVOID);
-BOOL WINAPI SymEnumerateSymbols64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64, PVOID);
-BOOL WINAPI SymEnumerateSymbolsW64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64W, PVOID);
-BOOL WINAPI SymEnumSymbolsForAddr(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID);
-BOOL WINAPI SymEnumSymbolsForAddrW(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID);
-typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(HANDLE, ULONG, ULONG64, ULONG64);
-BOOL WINAPI SymRegisterCallback64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64);
-BOOL WINAPI SymRegisterCallbackW64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64);
-BOOL WINAPI SymUnDName64(PIMAGEHLP_SYMBOL64, PSTR, DWORD);
-BOOL WINAPI SymMatchString(PCSTR, PCSTR, BOOL);
-BOOL WINAPI SymMatchStringA(PCSTR, PCSTR, BOOL);
-BOOL WINAPI SymMatchStringW(PCWSTR, PCWSTR, BOOL);
-BOOL WINAPI SymSearch(HANDLE, ULONG64, DWORD, DWORD, PCSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID, DWORD);
-BOOL WINAPI SymSearchW(HANDLE, ULONG64, DWORD, DWORD, PCWSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID, DWORD);
-DWORD WINAPI UnDecorateSymbolName(PCSTR, PSTR, DWORD, DWORD);
-DWORD WINAPI UnDecorateSymbolNameW(PCWSTR, PWSTR, DWORD, DWORD);
-BOOL WINAPI SymGetScope(HANDLE, ULONG64, DWORD, PSYMBOL_INFO);
-BOOL WINAPI SymGetScopeW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW);
-BOOL WINAPI SymFromIndex(HANDLE, ULONG64, DWORD, PSYMBOL_INFO);
-BOOL WINAPI SymFromIndexW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW);
-BOOL WINAPI SymAddSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD, DWORD);
-BOOL WINAPI SymAddSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD, DWORD);
-BOOL WINAPI SymDeleteSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD);
-BOOL WINAPI SymDeleteSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD);
+BOOL
+WINAPI
+SymGetTypeInfo(
+  _In_ HANDLE,
+  _In_ DWORD64,
+  _In_ ULONG,
+  _In_ IMAGEHLP_SYMBOL_TYPE_INFO,
+  _Out_ PVOID);
+
+BOOL
+WINAPI
+SymGetTypeInfoEx(
+  _In_ HANDLE,
+  _In_ DWORD64,
+  _Inout_ PIMAGEHLP_GET_TYPE_INFO_PARAMS);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(
+  _In_ PSYMBOL_INFO,
+  _In_ ULONG,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)(
+  _In_ PSYMBOL_INFOW,
+  _In_ ULONG,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumTypes(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ PSYM_ENUMERATESYMBOLS_CALLBACK,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumTypesW(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ PSYM_ENUMERATESYMBOLS_CALLBACKW,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymFromAddr(
+  _In_ HANDLE,
+  _In_ DWORD64,
+  _Out_opt_ DWORD64*,
+  _Inout_ SYMBOL_INFO*);
+
+BOOL
+WINAPI
+SymFromAddrW(
+  _In_ HANDLE,
+  _In_ DWORD64,
+  _Out_opt_ DWORD64*,
+  _Inout_ SYMBOL_INFOW*);
+
+BOOL
+WINAPI
+SymFromToken(
+  _In_ HANDLE,
+  _In_ DWORD64,
+  _In_ DWORD,
+  _Inout_ PSYMBOL_INFO);
+
+BOOL
+WINAPI
+SymFromTokenW(
+  _In_ HANDLE,
+  _In_ DWORD64,
+  _In_ DWORD,
+  _Inout_ PSYMBOL_INFOW);
+
+BOOL WINAPI SymFromName(_In_ HANDLE, _In_ PCSTR, _Inout_ PSYMBOL_INFO);
+BOOL WINAPI SymFromNameW(_In_ HANDLE, _In_ PCWSTR, _Inout_ PSYMBOL_INFOW);
+
+BOOL
+WINAPI
+SymGetSymFromAddr64(
+  _In_ HANDLE,
+  _In_ DWORD64,
+  _Out_opt_ PDWORD64,
+  _Inout_ PIMAGEHLP_SYMBOL64);
+
+BOOL
+WINAPI
+SymGetSymFromName64(
+  _In_ HANDLE,
+  _In_ PCSTR,
+  _Inout_ PIMAGEHLP_SYMBOL64);
+
+BOOL
+WINAPI
+SymGetTypeFromName(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ PCSTR,
+  _Inout_ PSYMBOL_INFO);
+
+BOOL
+WINAPI
+SymGetTypeFromNameW(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ PCWSTR,
+  _Inout_ PSYMBOL_INFOW);
+
+BOOL WINAPI SymGetSymNext64(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOL64);
+BOOL WINAPI SymGetSymNextW64(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOLW64);
+BOOL WINAPI SymGetSymPrev64(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOL64);
+BOOL WINAPI SymGetSymPrevW64(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOLW64);
+
+BOOL
+WINAPI
+SymEnumSym(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ PSYM_ENUMERATESYMBOLS_CALLBACK,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSymbols(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_opt_ PCSTR,
+  _In_ PSYM_ENUMERATESYMBOLS_CALLBACK,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSymbolsW(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_opt_ PCWSTR,
+  _In_ PSYM_ENUMERATESYMBOLS_CALLBACKW,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(
+  _In_ PCSTR,
+  _In_ DWORD64,
+  _In_ ULONG,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(
+  _In_ PCWSTR,
+  _In_ DWORD64,
+  _In_ ULONG,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumerateSymbols64(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ PSYM_ENUMSYMBOLS_CALLBACK64,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumerateSymbolsW64(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ PSYM_ENUMSYMBOLS_CALLBACK64W,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSymbolsForAddr(
+  _In_ HANDLE,
+  _In_ DWORD64,
+  _In_ PSYM_ENUMERATESYMBOLS_CALLBACK,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSymbolsForAddrW(
+  _In_ HANDLE,
+  _In_ DWORD64,
+  _In_ PSYM_ENUMERATESYMBOLS_CALLBACKW,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(
+  _In_ HANDLE,
+  _In_ ULONG,
+  _In_opt_ ULONG64,
+  _In_opt_ ULONG64);
+
+BOOL
+WINAPI
+SymRegisterCallback64(
+  _In_ HANDLE,
+  _In_ PSYMBOL_REGISTERED_CALLBACK64,
+  _In_ ULONG64);
+
+BOOL
+WINAPI
+SymRegisterCallbackW64(
+  _In_ HANDLE,
+  _In_ PSYMBOL_REGISTERED_CALLBACK64,
+  _In_ ULONG64);
+
+BOOL
+WINAPI
+SymUnDName64(
+  _In_ PIMAGEHLP_SYMBOL64,
+  _Out_writes_(UnDecNameLength) PSTR,
+  _In_ DWORD UnDecNameLength);
+
+BOOL WINAPI SymMatchString(_In_ PCSTR, _In_ PCSTR, _In_ BOOL);
+BOOL WINAPI SymMatchStringA(_In_ PCSTR, _In_ PCSTR, _In_ BOOL);
+BOOL WINAPI SymMatchStringW(_In_ PCWSTR, _In_ PCWSTR, _In_ BOOL);
+
+BOOL
+WINAPI
+SymSearch(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_opt_ DWORD,
+  _In_opt_ DWORD,
+  _In_opt_ PCSTR,
+  _In_opt_ DWORD64,
+  _In_ PSYM_ENUMERATESYMBOLS_CALLBACK,
+  _In_opt_ PVOID,
+  _In_ DWORD);
+
+BOOL
+WINAPI
+SymSearchW(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_opt_ DWORD,
+  _In_opt_ DWORD,
+  _In_opt_ PCWSTR,
+  _In_opt_ DWORD64,
+  _In_ PSYM_ENUMERATESYMBOLS_CALLBACKW,
+  _In_opt_ PVOID,
+  _In_ DWORD);
+
+DWORD
+WINAPI
+UnDecorateSymbolName(
+  _In_ PCSTR,
+  _Out_writes_(maxStringLength) PSTR,
+  _In_ DWORD maxStringLength,
+  _In_ DWORD);
+
+DWORD
+WINAPI
+UnDecorateSymbolNameW(
+  _In_ PCWSTR,
+  _Out_writes_(maxStringLength) PWSTR,
+  _In_ DWORD maxStringLength,
+  _In_ DWORD);
+
+BOOL
+WINAPI
+SymGetScope(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ DWORD,
+  _Inout_ PSYMBOL_INFO);
+
+BOOL
+WINAPI
+SymGetScopeW(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ DWORD,
+  _Inout_ PSYMBOL_INFOW);
+
+BOOL
+WINAPI
+SymFromIndex(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ DWORD,
+  _Inout_ PSYMBOL_INFO);
+
+BOOL
+WINAPI
+SymFromIndexW(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ DWORD,
+  _Inout_ PSYMBOL_INFOW);
+
+BOOL
+WINAPI
+SymAddSymbol(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ PCSTR,
+  _In_ DWORD64,
+  _In_ DWORD,
+  _In_ DWORD);
+
+BOOL
+WINAPI
+SymAddSymbolW(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ PCWSTR,
+  _In_ DWORD64,
+  _In_ DWORD,
+  _In_ DWORD);
+
+BOOL
+WINAPI
+SymDeleteSymbol(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_opt_ PCSTR,
+  _In_ DWORD64,
+  _In_ DWORD);
+
+BOOL
+WINAPI
+SymDeleteSymbolW(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_opt_ PCWSTR,
+  _In_ DWORD64,
+  _In_ DWORD);
 
 /*************************
  *      Source Files     *
  *************************/
-typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(PSOURCEFILE, PVOID);
-typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)(PSOURCEFILEW, PVOID);
-
-BOOL WINAPI SymEnumSourceFiles(HANDLE, ULONG64, PCSTR, PSYM_ENUMSOURCEFILES_CALLBACK,
-                               PVOID);
-BOOL WINAPI SymEnumSourceFilesW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMSOURCEFILES_CALLBACKW, PVOID);
-BOOL WINAPI SymGetLineFromAddr64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINE64);
-BOOL WINAPI SymGetLineFromAddrW64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINEW64);
-BOOL WINAPI SymGetLinePrev64(HANDLE, PIMAGEHLP_LINE64);
-BOOL WINAPI SymGetLinePrevW64(HANDLE, PIMAGEHLP_LINEW64);
-BOOL WINAPI SymGetLineNext64(HANDLE, PIMAGEHLP_LINE64);
-BOOL WINAPI SymGetLineNextW64(HANDLE, PIMAGEHLP_LINEW64);
-BOOL WINAPI SymGetLineFromName64(HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE64);
-BOOL WINAPI SymGetLineFromNameW64(HANDLE, PCWSTR, PCWSTR, DWORD, PLONG, PIMAGEHLP_LINEW64);
-ULONG WINAPI SymGetFileLineOffsets64(HANDLE, PCSTR, PCSTR, PDWORD64, ULONG);
-BOOL WINAPI SymGetSourceFile(HANDLE, ULONG64, PCSTR, PCSTR, PSTR, DWORD);
-BOOL WINAPI SymGetSourceFileW(HANDLE, ULONG64, PCWSTR, PCWSTR, PWSTR, DWORD);
-BOOL WINAPI SymGetSourceFileToken(HANDLE, ULONG64, PCSTR, PVOID*, DWORD*);
-BOOL WINAPI SymGetSourceFileTokenW(HANDLE, ULONG64, PCWSTR, PVOID*, DWORD*);
-BOOL WINAPI SymGetSourceFileFromToken(HANDLE, PVOID, PCSTR, PSTR, DWORD);
-BOOL WINAPI SymGetSourceFileFromTokenW(HANDLE, PVOID, PCWSTR, PWSTR, DWORD);
-BOOL WINAPI SymGetSourceVarFromToken(HANDLE, PVOID, PCSTR, PCSTR, PSTR, DWORD);
-BOOL WINAPI SymGetSourceVarFromTokenW(HANDLE, PVOID, PCWSTR, PCWSTR, PWSTR, DWORD);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(
+  _In_ PSOURCEFILE,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)(
+  _In_ PSOURCEFILEW,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSourceFiles(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_opt_ PCSTR,
+  _In_ PSYM_ENUMSOURCEFILES_CALLBACK,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSourceFilesW(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_opt_ PCWSTR,
+  _In_ PSYM_ENUMSOURCEFILES_CALLBACKW,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymGetLineFromAddr64(
+  _In_ HANDLE,
+  _In_ DWORD64,
+  _Out_ PDWORD,
+  _Out_ PIMAGEHLP_LINE64);
+
+BOOL
+WINAPI
+SymGetLineFromAddrW64(
+  _In_ HANDLE,
+  _In_ DWORD64,
+  _Out_ PDWORD,
+  _Out_ PIMAGEHLP_LINEW64);
+
+BOOL WINAPI SymGetLinePrev64(_In_ HANDLE, _Inout_ PIMAGEHLP_LINE64);
+BOOL WINAPI SymGetLinePrevW64(_In_ HANDLE, _Inout_ PIMAGEHLP_LINEW64);
+BOOL WINAPI SymGetLineNext64(_In_ HANDLE, _Inout_ PIMAGEHLP_LINE64);
+BOOL WINAPI SymGetLineNextW64(_In_ HANDLE, _Inout_ PIMAGEHLP_LINEW64);
+
+BOOL
+WINAPI
+SymGetLineFromName64(
+  _In_ HANDLE,
+  _In_opt_ PCSTR,
+  _In_opt_ PCSTR,
+  _In_ DWORD,
+  _Out_ PLONG,
+  _Inout_ PIMAGEHLP_LINE64);
+
+BOOL
+WINAPI
+SymGetLineFromNameW64(
+  _In_ HANDLE,
+  _In_opt_ PCWSTR,
+  _In_opt_ PCWSTR,
+  _In_ DWORD,
+  _Out_ PLONG,
+  _Inout_ PIMAGEHLP_LINEW64);
+
+ULONG
+WINAPI
+SymGetFileLineOffsets64(
+  _In_ HANDLE,
+  _In_opt_ PCSTR,
+  _In_ PCSTR,
+  _Out_writes_(BufferLines) PDWORD64,
+  _In_ ULONG BufferLines);
+
+BOOL
+WINAPI
+SymGetSourceFile(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_opt_ PCSTR,
+  _In_ PCSTR,
+  _Out_writes_(Size) PSTR,
+  _In_ DWORD Size);
+
+BOOL
+WINAPI
+SymGetSourceFileW(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_opt_ PCWSTR,
+  _In_ PCWSTR,
+  _Out_writes_(Size) PWSTR,
+  _In_ DWORD Size);
+
+BOOL
+WINAPI
+SymGetSourceFileToken(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ PCSTR,
+  _Outptr_ PVOID*,
+  _Out_ DWORD*);
+
+BOOL
+WINAPI
+SymGetSourceFileTokenW(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ PCWSTR,
+  _Outptr_ PVOID*,
+  _Out_ DWORD*);
+
+BOOL
+WINAPI
+SymGetSourceFileFromToken(
+  _In_ HANDLE,
+  _In_ PVOID,
+  _In_opt_ PCSTR,
+  _Out_writes_(Size) PSTR,
+  _In_ DWORD Size);
+
+BOOL
+WINAPI
+SymGetSourceFileFromTokenW(
+  _In_ HANDLE,
+  _In_ PVOID,
+  _In_opt_ PCWSTR,
+  _Out_writes_(Size) PWSTR,
+  _In_ DWORD Size);
+
+BOOL
+WINAPI
+SymGetSourceVarFromToken(
+  _In_ HANDLE,
+  _In_ PVOID,
+  _In_opt_ PCSTR,
+  _In_ PCSTR,
+  _Out_writes_(Size) PSTR,
+  _In_ DWORD Size);
+
+BOOL
+WINAPI
+SymGetSourceVarFromTokenW(
+  _In_ HANDLE,
+  _In_ PVOID,
+  _In_opt_ PCWSTR,
+  _In_ PCWSTR,
+  _Out_writes_(Size) PWSTR,
+  _In_ DWORD Size);
 
 typedef struct _SRCCODEINFO
 {
@@ -1186,66 +1705,349 @@ typedef struct _SRCCODEINFOW
     DWORD64     Address;
 } SRCCODEINFOW, *PSRCCODEINFOW;
 
-typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACK)(PSRCCODEINFO, PVOID);
-typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACKW)(PSRCCODEINFOW, PVOID);
-BOOL WINAPI SymEnumLines(HANDLE, ULONG64, PCSTR, PCSTR, PSYM_ENUMLINES_CALLBACK, PVOID);
-BOOL WINAPI SymEnumLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, PSYM_ENUMLINES_CALLBACKW, PVOID);
-BOOL WINAPI SymEnumSourceLines(HANDLE, ULONG64, PCSTR, PCSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACK, PVOID);
-BOOL WINAPI SymEnumSourceLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACKW, PVOID);
+typedef BOOL
+(CALLBACK* PSYM_ENUMLINES_CALLBACK)(
+  _In_ PSRCCODEINFO,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK* PSYM_ENUMLINES_CALLBACKW)(
+  _In_ PSRCCODEINFOW,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumLines(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_opt_ PCSTR,
+  _In_opt_ PCSTR,
+  _In_ PSYM_ENUMLINES_CALLBACK,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumLinesW(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_opt_ PCWSTR,
+  _In_opt_ PCWSTR,
+  _In_ PSYM_ENUMLINES_CALLBACKW,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSourceLines(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_opt_ PCSTR,
+  _In_opt_ PCSTR,
+  _In_opt_ DWORD,
+  _In_ DWORD,
+  _In_ PSYM_ENUMLINES_CALLBACK,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumSourceLinesW(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_opt_ PCWSTR,
+  _In_opt_ PCWSTR,
+  _In_opt_ DWORD,
+  _In_ DWORD,
+  _In_ PSYM_ENUMLINES_CALLBACKW,
+  _In_opt_ PVOID);
 
 /*************************
  * File & image handling *
  *************************/
-BOOL WINAPI SymInitialize(HANDLE, PCSTR, BOOL);
-BOOL WINAPI SymInitializeW(HANDLE, PCWSTR, BOOL);
-BOOL WINAPI SymCleanup(HANDLE);
-
-HANDLE WINAPI FindDebugInfoFile(PCSTR, PCSTR, PSTR);
-typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(HANDLE, PCSTR, PVOID);
-typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)(HANDLE, PCWSTR, PVOID);
-HANDLE WINAPI FindDebugInfoFileEx(PCSTR, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID);
-HANDLE WINAPI FindDebugInfoFileExW(PCWSTR, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID);
-HANDLE WINAPI SymFindDebugInfoFile(HANDLE, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID);
-HANDLE WINAPI SymFindDebugInfoFileW(HANDLE, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID);
-typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(PCSTR, PVOID);
-typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACKW)(PCWSTR, PVOID);
+
+BOOL WINAPI SymInitialize(_In_ HANDLE, _In_opt_ PCSTR, _In_ BOOL);
+BOOL WINAPI SymInitializeW(_In_ HANDLE, _In_opt_ PCWSTR, _In_ BOOL);
+BOOL WINAPI SymCleanup(_In_ HANDLE);
+
+HANDLE
+WINAPI
+FindDebugInfoFile(
+  _In_ PCSTR,
+  _In_ PCSTR,
+  _Out_writes_(MAX_PATH + 1) PSTR);
+
+typedef BOOL
+(CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(
+  _In_ HANDLE,
+  _In_ PCSTR,
+  _In_ PVOID);
+
+typedef BOOL
+(CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)(
+  _In_ HANDLE,
+  _In_ PCWSTR,
+  _In_ PVOID);
+
+HANDLE
+WINAPI
+FindDebugInfoFileEx(
+  _In_ PCSTR,
+  _In_ PCSTR,
+  _Out_writes_(MAX_PATH + 1) PSTR,
+  _In_opt_ PFIND_DEBUG_FILE_CALLBACK,
+  _In_opt_ PVOID);
+
+HANDLE
+WINAPI
+FindDebugInfoFileExW(
+  _In_ PCWSTR,
+  _In_ PCWSTR,
+  _Out_writes_(MAX_PATH + 1) PWSTR,
+  _In_opt_ PFIND_DEBUG_FILE_CALLBACKW,
+  _In_opt_ PVOID);
+
+HANDLE
+WINAPI
+SymFindDebugInfoFile(
+  _In_ HANDLE,
+  _In_ PCSTR,
+  _Out_writes_(MAX_PATH + 1) PSTR,
+  _In_opt_ PFIND_DEBUG_FILE_CALLBACK,
+  _In_opt_ PVOID);
+
+HANDLE
+WINAPI
+SymFindDebugInfoFileW(
+  _In_ HANDLE,
+  _In_ PCWSTR,
+  _Out_writes_(MAX_PATH + 1) PWSTR,
+  _In_opt_ PFIND_DEBUG_FILE_CALLBACKW,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PFINDFILEINPATHCALLBACK)(
+  _In_ PCSTR,
+  _In_ PVOID);
+
+typedef BOOL
+(CALLBACK *PFINDFILEINPATHCALLBACKW)(
+  _In_ PCWSTR,
+  _In_ PVOID);
+
 BOOL WINAPI FindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD,
                            PSTR, PFINDFILEINPATHCALLBACK, PVOID);
-BOOL WINAPI SymFindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD,
-                              PSTR, PFINDFILEINPATHCALLBACK, PVOID);
-BOOL WINAPI SymFindFileInPathW(HANDLE, PCWSTR, PCWSTR, PVOID, DWORD, DWORD, DWORD,
-                              PWSTR, PFINDFILEINPATHCALLBACKW, PVOID);
-HANDLE WINAPI FindExecutableImage(PCSTR, PCSTR, PSTR);
-typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(HANDLE, PCSTR, PVOID);
-typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACKW)(HANDLE, PCWSTR, PVOID);
-HANDLE WINAPI FindExecutableImageEx(PCSTR, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID);
-HANDLE WINAPI FindExecutableImageExW(PCWSTR, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID);
-HANDLE WINAPI SymFindExecutableImage(HANDLE, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID);
-HANDLE WINAPI SymFindExecutableImageW(HANDLE, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID);
-PIMAGE_NT_HEADERS WINAPI ImageNtHeader(PVOID);
-PVOID WINAPI ImageDirectoryEntryToDataEx(PVOID, BOOLEAN, USHORT, PULONG,
-                                         PIMAGE_SECTION_HEADER *);
-PVOID WINAPI ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG);
-PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID, ULONG);
-PVOID WINAPI ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG, PIMAGE_SECTION_HEADER*);
-BOOL WINAPI SymGetSearchPath(HANDLE, PSTR, DWORD);
-BOOL WINAPI SymGetSearchPathW(HANDLE, PWSTR, DWORD);
-BOOL WINAPI SymSetSearchPath(HANDLE, PCSTR);
-BOOL WINAPI SymSetSearchPathW(HANDLE, PCWSTR);
-DWORD WINAPI GetTimestampForLoadedLibrary(HMODULE);
-BOOL WINAPI MakeSureDirectoryPathExists(PCSTR);
-BOOL WINAPI SearchTreeForFile(PCSTR, PCSTR, PSTR);
-BOOL WINAPI SearchTreeForFileW(PCWSTR, PCWSTR, PWSTR);
-typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(PCSTR, PVOID);
-typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACKW)(PCWSTR, PVOID);
-BOOL WINAPI EnumDirTree(HANDLE, PCSTR, PCSTR, PSTR, PENUMDIRTREE_CALLBACK, PVOID);
-BOOL WINAPI EnumDirTreeW(HANDLE, PCWSTR, PCWSTR, PWSTR, PENUMDIRTREE_CALLBACKW, PVOID);
-BOOL WINAPI SymMatchFileName(PCSTR, PCSTR, PSTR*, PSTR*);
-BOOL WINAPI SymMatchFileNameW(PCWSTR, PCWSTR, PWSTR*, PWSTR*);
-PCHAR WINAPI SymSetHomeDirectory(HANDLE, PCSTR);
-PWSTR WINAPI SymSetHomeDirectoryW(HANDLE, PCWSTR);
-PCHAR WINAPI SymGetHomeDirectory(DWORD, PSTR, size_t);
-PWSTR WINAPI SymGetHomeDirectoryW(DWORD, PWSTR, size_t);
+
+BOOL
+WINAPI
+SymFindFileInPath(
+  _In_ HANDLE,
+  _In_opt_ PCSTR,
+  _In_ PCSTR,
+  _In_opt_ PVOID,
+  _In_ DWORD,
+  _In_ DWORD,
+  _In_ DWORD,
+  _Out_writes_(MAX_PATH + 1) PSTR,
+  _In_opt_ PFINDFILEINPATHCALLBACK,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymFindFileInPathW(
+  _In_ HANDLE,
+  _In_opt_ PCWSTR,
+  _In_ PCWSTR,
+  _In_opt_ PVOID,
+  _In_ DWORD,
+  _In_ DWORD,
+  _In_ DWORD,
+  _Out_writes_(MAX_PATH + 1) PWSTR,
+  _In_opt_ PFINDFILEINPATHCALLBACKW,
+  _In_opt_ PVOID);
+
+HANDLE
+WINAPI
+FindExecutableImage(
+  _In_ PCSTR,
+  _In_ PCSTR,
+  _Out_writes_(MAX_PATH + 1) PSTR);
+
+typedef BOOL
+(CALLBACK *PFIND_EXE_FILE_CALLBACK)(
+  _In_ HANDLE,
+  _In_ PCSTR,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PFIND_EXE_FILE_CALLBACKW)(
+  _In_ HANDLE,
+  _In_ PCWSTR,
+  _In_opt_ PVOID);
+
+HANDLE
+WINAPI
+FindExecutableImageEx(
+  _In_ PCSTR,
+  _In_ PCSTR,
+  _Out_writes_(MAX_PATH + 1) PSTR,
+  _In_opt_ PFIND_EXE_FILE_CALLBACK,
+  _In_opt_ PVOID);
+
+HANDLE
+WINAPI
+FindExecutableImageExW(
+  _In_ PCWSTR,
+  _In_ PCWSTR,
+  _Out_writes_(MAX_PATH + 1) PWSTR,
+  _In_opt_ PFIND_EXE_FILE_CALLBACKW,
+  _In_opt_ PVOID);
+
+HANDLE
+WINAPI
+SymFindExecutableImage(
+  _In_ HANDLE,
+  _In_ PCSTR,
+  _Out_writes_(MAX_PATH + 1) PSTR,
+  _In_ PFIND_EXE_FILE_CALLBACK,
+  _In_ PVOID);
+
+HANDLE
+WINAPI
+SymFindExecutableImageW(
+  _In_ HANDLE,
+  _In_ PCWSTR,
+  _Out_writes_(MAX_PATH + 1) PWSTR,
+  _In_ PFIND_EXE_FILE_CALLBACKW,
+  _In_ PVOID);
+
+PIMAGE_NT_HEADERS WINAPI ImageNtHeader(_In_ PVOID);
+
+PVOID
+WINAPI
+ImageDirectoryEntryToDataEx(
+  _In_ PVOID,
+  _In_ BOOLEAN,
+  _In_ USHORT,
+  _Out_ PULONG,
+  _Out_opt_ PIMAGE_SECTION_HEADER *);
+
+PVOID
+WINAPI
+ImageDirectoryEntryToData(
+  _In_ PVOID,
+  _In_ BOOLEAN,
+  _In_ USHORT,
+  _Out_ PULONG);
+
+PIMAGE_SECTION_HEADER
+WINAPI
+ImageRvaToSection(
+  _In_ PIMAGE_NT_HEADERS,
+  _In_ PVOID,
+  _In_ ULONG);
+
+PVOID
+WINAPI
+ImageRvaToVa(
+  _In_ PIMAGE_NT_HEADERS,
+  _In_ PVOID,
+  _In_ ULONG,
+  _In_opt_ PIMAGE_SECTION_HEADER*);
+
+BOOL
+WINAPI
+SymGetSearchPath(
+  _In_ HANDLE,
+  _Out_writes_(SearchPathLength) PSTR,
+  _In_ DWORD SearchPathLength);
+
+BOOL
+WINAPI
+SymGetSearchPathW(
+  _In_ HANDLE,
+  _Out_writes_(SearchPathLength) PWSTR,
+  _In_ DWORD SearchPathLength);
+
+BOOL WINAPI SymSetSearchPath(_In_ HANDLE, _In_opt_ PCSTR);
+BOOL WINAPI SymSetSearchPathW(_In_ HANDLE, _In_opt_ PCWSTR);
+DWORD WINAPI GetTimestampForLoadedLibrary(_In_ HMODULE);
+BOOL WINAPI MakeSureDirectoryPathExists(_In_ PCSTR);
+
+BOOL
+WINAPI
+SearchTreeForFile(
+  _In_ PCSTR,
+  _In_ PCSTR,
+  _Out_writes_(MAX_PATH + 1) PSTR);
+
+BOOL
+WINAPI
+SearchTreeForFileW(
+  _In_ PCWSTR,
+  _In_ PCWSTR,
+  _Out_writes_(MAX_PATH + 1) PWSTR);
+
+typedef BOOL
+(CALLBACK *PENUMDIRTREE_CALLBACK)(
+  _In_ PCSTR,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PENUMDIRTREE_CALLBACKW)(
+  _In_ PCWSTR,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+EnumDirTree(
+  _In_opt_ HANDLE,
+  _In_ PCSTR,
+  _In_ PCSTR,
+  _Out_writes_opt_(MAX_PATH + 1) PSTR,
+  _In_opt_ PENUMDIRTREE_CALLBACK,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+EnumDirTreeW(
+  _In_opt_ HANDLE,
+  _In_ PCWSTR,
+  _In_ PCWSTR,
+  _Out_writes_opt_(MAX_PATH + 1) PWSTR,
+  _In_opt_ PENUMDIRTREE_CALLBACKW,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymMatchFileName(
+  _In_ PCSTR,
+  _In_ PCSTR,
+  _Outptr_opt_ PSTR*,
+  _Outptr_opt_ PSTR*);
+
+BOOL
+WINAPI
+SymMatchFileNameW(
+  _In_ PCWSTR,
+  _In_ PCWSTR,
+  _Outptr_opt_ PWSTR*,
+  _Outptr_opt_ PWSTR*);
+
+PCHAR WINAPI SymSetHomeDirectory(_In_opt_ HANDLE, _In_opt_ PCSTR);
+PWSTR WINAPI SymSetHomeDirectoryW(_In_opt_ HANDLE, _In_opt_ PCWSTR);
+
+PCHAR
+WINAPI
+SymGetHomeDirectory(
+  _In_ DWORD,
+  _Out_writes_(size) PSTR,
+  _In_ size_t size);
+
+PWSTR
+WINAPI
+SymGetHomeDirectoryW(
+  _In_ DWORD,
+  _Out_writes_(size) PWSTR,
+  _In_ size_t size);
+
 #define hdBase  0
 #define hdSym   1
 #define hdSrc   2
@@ -1254,7 +2056,13 @@ PWSTR WINAPI SymGetHomeDirectoryW(DWORD, PWSTR, size_t);
 /*************************
  *   Context management  *
  *************************/
-BOOL WINAPI SymSetContext(HANDLE, PIMAGEHLP_STACK_FRAME, PIMAGEHLP_CONTEXT);
+
+BOOL
+WINAPI
+SymSetContext(
+  _In_ HANDLE,
+  _In_ PIMAGEHLP_STACK_FRAME,
+  _In_opt_ PIMAGEHLP_CONTEXT);
 
 
 /*************************
@@ -1325,22 +2133,57 @@ typedef struct _STACKFRAME64
     KDHELP64    KdHelp;
 } STACKFRAME64, *LPSTACKFRAME64;
 
-typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64)
-    (HANDLE, DWORD64, PVOID, DWORD, PDWORD);
-typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE64)(HANDLE, DWORD64);
-typedef DWORD64 (CALLBACK *PGET_MODULE_BASE_ROUTINE64)(HANDLE, DWORD64);
-typedef DWORD64 (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)(HANDLE, HANDLE, LPADDRESS64);
-BOOL WINAPI StackWalk64(DWORD, HANDLE, HANDLE, LPSTACKFRAME64, PVOID,
-                        PREAD_PROCESS_MEMORY_ROUTINE64,
-                        PFUNCTION_TABLE_ACCESS_ROUTINE64,
-                        PGET_MODULE_BASE_ROUTINE64,
-                        PTRANSLATE_ADDRESS_ROUTINE64);
-
-PVOID WINAPI SymFunctionTableAccess64(HANDLE, DWORD64);
-
-typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(HANDLE, ULONG64, ULONG64);
-
-BOOL WINAPI SymRegisterFunctionEntryCallback64(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK64, ULONG64);
+typedef BOOL
+(CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64)(
+  _In_ HANDLE,
+  _In_ DWORD64,
+  _Out_writes_bytes_(nSize) PVOID,
+  _In_ DWORD nSize,
+  _Out_ PDWORD);
+
+typedef PVOID
+(CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE64)(
+  _In_ HANDLE,
+  _In_ DWORD64);
+
+typedef DWORD64
+(CALLBACK *PGET_MODULE_BASE_ROUTINE64)(
+  _In_ HANDLE,
+  _In_ DWORD64);
+
+typedef DWORD64
+(CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)(
+  _In_ HANDLE,
+  _In_ HANDLE,
+  _In_ LPADDRESS64);
+
+BOOL
+WINAPI
+StackWalk64(
+  _In_ DWORD,
+  _In_ HANDLE,
+  _In_ HANDLE,
+  _Inout_ LPSTACKFRAME64,
+  _Inout_ PVOID,
+  _In_opt_ PREAD_PROCESS_MEMORY_ROUTINE64,
+  _In_opt_ PFUNCTION_TABLE_ACCESS_ROUTINE64,
+  _In_opt_ PGET_MODULE_BASE_ROUTINE64,
+  _In_opt_ PTRANSLATE_ADDRESS_ROUTINE64);
+
+PVOID WINAPI SymFunctionTableAccess64(_In_ HANDLE, _In_ DWORD64);
+
+typedef PVOID
+(CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(
+  _In_ HANDLE,
+  _In_ ULONG64,
+  _In_ ULONG64);
+
+BOOL
+WINAPI
+SymRegisterFunctionEntryCallback64(
+  _In_ HANDLE,
+  _In_ PSYMBOL_FUNCENTRY_CALLBACK64,
+  _In_ ULONG64);
 
 /*************************
  * Version, global stuff *
@@ -1357,7 +2200,7 @@ typedef struct API_VERSION
 } API_VERSION, *LPAPI_VERSION;
 
 LPAPI_VERSION WINAPI ImagehlpApiVersion(void);
-LPAPI_VERSION WINAPI ImagehlpApiVersionEx(LPAPI_VERSION);
+LPAPI_VERSION WINAPI ImagehlpApiVersionEx(_In_ LPAPI_VERSION);
 
 typedef struct _IMAGE_DEBUG_INFORMATION
 {
@@ -1395,14 +2238,20 @@ typedef struct _IMAGE_DEBUG_INFORMATION
 } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
 
 
-PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(HANDLE, PCSTR, PCSTR, ULONG);
+PIMAGE_DEBUG_INFORMATION
+WINAPI
+MapDebugInformation(
+  _In_opt_ HANDLE,
+  _In_ PCSTR,
+  _In_opt_ PCSTR,
+  _In_ ULONG);
 
-BOOL WINAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION);
+BOOL WINAPI UnmapDebugInformation(_Out_ PIMAGE_DEBUG_INFORMATION);
 
-DWORD   WINAPI  SymGetOptions(void);
-DWORD   WINAPI  SymSetOptions(DWORD);
+DWORD WINAPI SymGetOptions(void);
+DWORD WINAPI SymSetOptions(_In_ DWORD);
 
-BOOL WINAPI SymSetParentWindow(HWND);
+BOOL WINAPI SymSetParentWindow(_In_ HWND);
 
 /*************************
  * Version, global stuff *
@@ -1485,45 +2334,221 @@ typedef BOOL     (WINAPI* PSYMBOLSERVERPINGPROCW)(PCWSTR);
 
 #else
 
-typedef BOOL  (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(PCSTR, ULONG, ULONG, PVOID);
-typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE, DWORD);
-typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(HANDLE, DWORD);
-typedef BOOL  (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE, DWORD, PVOID, DWORD, PDWORD);
-typedef BOOL  (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(PCSTR, ULONG, PVOID);
-typedef BOOL  (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PCSTR, ULONG, ULONG, PVOID);
-typedef BOOL  (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(PCWSTR, ULONG, ULONG, PVOID);
-typedef BOOL  (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE, ULONG, PVOID, PVOID);
-typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(HANDLE, DWORD, PVOID);
-typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(HANDLE, HANDLE, LPADDRESS);
-
-BOOL    WINAPI EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID);
-BOOL    WINAPI StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, PVOID, PREAD_PROCESS_MEMORY_ROUTINE, PFUNCTION_TABLE_ACCESS_ROUTINE, PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE);
-BOOL    WINAPI SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID);
-BOOL    WINAPI SymEnumerateSymbols(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACK, PVOID);
-BOOL    WINAPI SymEnumerateSymbolsW(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACKW, PVOID);
-PVOID   WINAPI SymFunctionTableAccess(HANDLE, DWORD);
-BOOL    WINAPI SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE);
-BOOL    WINAPI SymGetLineFromAddrW(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINEW);
-BOOL    WINAPI SymGetLineFromName(HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE);
-BOOL    WINAPI SymGetLineNext(HANDLE, PIMAGEHLP_LINE);
-BOOL    WINAPI SymGetLineNextW(HANDLE, PIMAGEHLP_LINEW);
-BOOL    WINAPI SymGetLinePrev(HANDLE, PIMAGEHLP_LINE);
-BOOL    WINAPI SymGetLinePrevW(HANDLE, PIMAGEHLP_LINEW);
-DWORD   WINAPI SymGetModuleBase(HANDLE, DWORD);
-BOOL    WINAPI SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE);
-BOOL    WINAPI SymGetModuleInfoW(HANDLE, DWORD, PIMAGEHLP_MODULEW);
-BOOL    WINAPI SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL);
-BOOL    WINAPI SymGetSymFromName(HANDLE, PCSTR, PIMAGEHLP_SYMBOL);
-BOOL    WINAPI SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL);
-BOOL    WINAPI SymGetSymNextW(HANDLE, PIMAGEHLP_SYMBOLW);
-BOOL    WINAPI SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL);
-BOOL    WINAPI SymGetSymPrevW(HANDLE, PIMAGEHLP_SYMBOLW);
-DWORD   WINAPI SymLoadModule(HANDLE, HANDLE, PCSTR, PCSTR, DWORD, DWORD);
-BOOL    WINAPI SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID);
-BOOL    WINAPI SymRegisterFunctionEntryCallback(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK, PVOID);
-BOOL    WINAPI SymRefreshModuleList(HANDLE);
-BOOL    WINAPI SymUnDName(PIMAGEHLP_SYMBOL, PSTR, DWORD);
-BOOL    WINAPI SymUnloadModule(HANDLE, DWORD);
+typedef BOOL
+(CALLBACK *PENUMLOADED_MODULES_CALLBACK)(
+  _In_ PCSTR,
+  _In_ ULONG,
+  _In_ ULONG,
+  _In_opt_ PVOID);
+
+typedef PVOID
+(CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(
+  _In_ HANDLE,
+  _In_ DWORD);
+
+typedef DWORD
+(CALLBACK *PGET_MODULE_BASE_ROUTINE)(
+  _In_ HANDLE,
+  _In_ DWORD);
+
+typedef BOOL
+(CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)(
+  _In_ HANDLE,
+  _In_ DWORD,
+  _Out_writes_bytes_(nSize) PVOID,
+  _In_ DWORD nSize,
+  _Out_ PDWORD);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMMODULES_CALLBACK)(
+  _In_ PCSTR,
+  _In_ ULONG,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(
+  _In_ PCSTR,
+  _In_ ULONG,
+  _In_ ULONG,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(
+  _In_ PCWSTR,
+  _In_ ULONG,
+  _In_ ULONG,
+  _In_opt_ PVOID);
+
+typedef BOOL
+(CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(
+  _In_ HANDLE,
+  _In_ ULONG,
+  _In_opt_ PVOID,
+  _In_opt_ PVOID);
+
+typedef PVOID
+(CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(
+  _In_ HANDLE,
+  _In_ DWORD,
+  _In_opt_ PVOID);
+
+typedef DWORD
+(CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(
+  _In_ HANDLE,
+  _In_ HANDLE,
+  _Out_ LPADDRESS);
+
+BOOL
+WINAPI
+EnumerateLoadedModules(
+  _In_ HANDLE,
+  _In_ PENUMLOADED_MODULES_CALLBACK,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+StackWalk(
+  _In_ DWORD,
+  _In_ HANDLE,
+  _In_ HANDLE,
+  _Inout_ LPSTACKFRAME,
+  _Inout_ PVOID,
+  _In_opt_ PREAD_PROCESS_MEMORY_ROUTINE,
+  _In_opt_ PFUNCTION_TABLE_ACCESS_ROUTINE,
+  _In_opt_ PGET_MODULE_BASE_ROUTINE,
+  _In_opt_ PTRANSLATE_ADDRESS_ROUTINE);
+
+BOOL
+WINAPI
+SymEnumerateModules(
+  _In_ HANDLE,
+  _In_ PSYM_ENUMMODULES_CALLBACK,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumerateSymbols(
+  _In_ HANDLE,
+  _In_ ULONG,
+  _In_ PSYM_ENUMSYMBOLS_CALLBACK,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymEnumerateSymbolsW(
+  _In_ HANDLE,
+  _In_ ULONG,
+  _In_ PSYM_ENUMSYMBOLS_CALLBACKW,
+  _In_opt_ PVOID);
+
+PVOID WINAPI SymFunctionTableAccess(_In_ HANDLE, _In_ DWORD);
+
+BOOL
+WINAPI
+SymGetLineFromAddr(
+  _In_ HANDLE,
+  _In_ DWORD,
+  _Out_ PDWORD,
+  _Out_ PIMAGEHLP_LINE);
+
+BOOL
+WINAPI
+SymGetLineFromAddrW(
+  _In_ HANDLE,
+  _In_ DWORD,
+  _Out_ PDWORD,
+  _Out_ PIMAGEHLP_LINEW);
+
+BOOL
+WINAPI
+SymGetLineFromName(
+  _In_ HANDLE,
+  _In_opt_ PCSTR,
+  _In_opt_ PCSTR,
+  _In_ DWORD,
+  _Out_ PLONG,
+  _Inout_ PIMAGEHLP_LINE);
+
+BOOL WINAPI SymGetLineNext(_In_ HANDLE, _Inout_ PIMAGEHLP_LINE);
+BOOL WINAPI SymGetLineNextW(_In_ HANDLE, _Inout_ PIMAGEHLP_LINEW);
+BOOL WINAPI SymGetLinePrev(_In_ HANDLE, _Inout_ PIMAGEHLP_LINE);
+BOOL WINAPI SymGetLinePrevW(_In_ HANDLE, _Inout_ PIMAGEHLP_LINEW);
+DWORD WINAPI SymGetModuleBase(_In_ HANDLE, _In_ DWORD);
+
+BOOL
+WINAPI
+SymGetModuleInfo(
+  _In_ HANDLE,
+  _In_ DWORD,
+  _Out_ PIMAGEHLP_MODULE);
+
+BOOL
+WINAPI
+SymGetModuleInfoW(
+  _In_ HANDLE,
+  _In_ DWORD,
+  _Out_ PIMAGEHLP_MODULEW);
+
+BOOL
+WINAPI
+SymGetSymFromAddr(
+  _In_ HANDLE,
+  _In_ DWORD,
+  _Out_opt_ PDWORD,
+  _Inout_ PIMAGEHLP_SYMBOL);
+
+BOOL
+WINAPI
+SymGetSymFromName(
+  _In_ HANDLE,
+  _In_ PCSTR,
+  _Inout_ PIMAGEHLP_SYMBOL);
+
+BOOL WINAPI SymGetSymNext(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOL);
+BOOL WINAPI SymGetSymNextW(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOLW);
+BOOL WINAPI SymGetSymPrev(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOL);
+BOOL WINAPI SymGetSymPrevW(_In_ HANDLE, _Inout_ PIMAGEHLP_SYMBOLW);
+
+DWORD
+WINAPI
+SymLoadModule(
+  _In_ HANDLE,
+  _In_opt_ HANDLE,
+  _In_opt_ PCSTR,
+  _In_opt_ PCSTR,
+  _In_ DWORD,
+  _In_ DWORD);
+
+BOOL
+WINAPI
+SymRegisterCallback(
+  _In_ HANDLE,
+  _In_ PSYMBOL_REGISTERED_CALLBACK,
+  _In_opt_ PVOID);
+
+BOOL
+WINAPI
+SymRegisterFunctionEntryCallback(
+  _In_ HANDLE,
+  _In_ PSYMBOL_FUNCENTRY_CALLBACK,
+  _In_opt_ PVOID);
+
+BOOL WINAPI SymRefreshModuleList(_In_ HANDLE);
+
+BOOL
+WINAPI
+SymUnDName(
+  _In_ PIMAGEHLP_SYMBOL,
+  _Out_writes_(UnDecNameLength) PSTR,
+  _In_ DWORD UnDecNameLength);
+
+BOOL WINAPI SymUnloadModule(_In_ HANDLE, _In_ DWORD);
+
+BOOL
+IMAGEAPI
+SymSrvIsStore(
+  _In_opt_ HANDLE hProcess,
+  _In_ PCSTR path);
 
 #endif