1
0
Fork 0

Update DIA to 14.13.26128.0 + XP support

This commit is contained in:
Duncan Ogilvie 2018-03-11 20:35:59 +01:00
parent aa8a215895
commit 4e88b399fe
No known key found for this signature in database
GPG Key ID: FC89E0AAA0C1AAD8
6 changed files with 946 additions and 129 deletions

View File

@ -39,7 +39,8 @@ typedef enum CV_call_e
CV_CALL_CLRCALL = 0x16, // clr call CV_CALL_CLRCALL = 0x16, // clr call
CV_CALL_INLINE = 0x17, // Marker for routines always inlined and thus lacking a convention CV_CALL_INLINE = 0x17, // Marker for routines always inlined and thus lacking a convention
CV_CALL_NEAR_VECTOR = 0x18, // near left to right push with regs, callee pops stack CV_CALL_NEAR_VECTOR = 0x18, // near left to right push with regs, callee pops stack
CV_CALL_RESERVED = 0x19 // first unused call enumeration CV_CALL_SWIFT = 0x19, // Swift calling convention
CV_CALL_RESERVED = 0x20 // first unused call enumeration
// Do NOT add any more machine specific conventions. This is to be used for // Do NOT add any more machine specific conventions. This is to be used for
// calling conventions in the source only (e.g. __cdecl, __stdcall). // calling conventions in the source only (e.g. __cdecl, __stdcall).
@ -56,6 +57,7 @@ typedef enum CV_access_e
CV_public = 3 CV_public = 3
} CV_access_e; } CV_access_e;
typedef enum THUNK_ORDINAL typedef enum THUNK_ORDINAL
{ {
THUNK_ORDINAL_NOTYPE, // standard thunk THUNK_ORDINAL_NOTYPE, // standard thunk
@ -66,9 +68,9 @@ typedef enum THUNK_ORDINAL
// via unknown means... // via unknown means...
// trampoline thunk ordinals - only for use in Trampoline thunk symbols // trampoline thunk ordinals - only for use in Trampoline thunk symbols
THUNK_ORDINAL_TRAMP_INCREMENTAL, THUNK_ORDINAL_TRAMP_INCREMENTAL,
THUNK_ORDINAL_TRAMP_BRANCHISLAND, THUNK_ORDINAL_TRAMP_BRANCHISLAND,
} THUNK_ORDINAL; } THUNK_ORDINAL;
@ -76,7 +78,8 @@ enum CV_SourceChksum_t
{ {
CHKSUM_TYPE_NONE = 0, // indicates no checksum is available CHKSUM_TYPE_NONE = 0, // indicates no checksum is available
CHKSUM_TYPE_MD5, CHKSUM_TYPE_MD5,
CHKSUM_TYPE_SHA1 CHKSUM_TYPE_SHA1,
CHKSUM_TYPE_SHA_256,
}; };
// //
@ -124,6 +127,10 @@ enum SymTagEnum
SymTagHLSLType, SymTagHLSLType,
SymTagCaller, SymTagCaller,
SymTagCallee, SymTagCallee,
SymTagExport,
SymTagHeapAllocationSite,
SymTagCoffGroup,
SymTagInlinee,
SymTagMax SymTagMax
}; };
@ -140,6 +147,7 @@ enum LocationType
LocIsIlRel, LocIsIlRel,
LocInMetaData, LocInMetaData,
LocIsConstant, LocIsConstant,
LocIsRegRelAliasIndir,
LocTypeMax LocTypeMax
}; };
@ -184,7 +192,9 @@ enum BasicType
btComplex = 28, btComplex = 28,
btBit = 29, btBit = 29,
btBSTR = 30, btBSTR = 30,
btHresult = 31 btHresult = 31,
btChar16 = 32, // char16_t
btChar32 = 33, // char32_t
}; };
@ -230,7 +240,6 @@ typedef enum CV_modifier_e
typedef enum CV_builtin_e typedef enum CV_builtin_e
{ {
// 0x0000 - 0x01ff - Reserved. // 0x0000 - 0x01ff - Reserved.
CV_BI_INVALID = 0x0000, CV_BI_INVALID = 0x0000,
@ -272,6 +281,7 @@ typedef enum CV_builtin_e
CV_BI_HLSL_MIN12INT = 0x0221, CV_BI_HLSL_MIN12INT = 0x0221,
CV_BI_HLSL_MIN16INT = 0x0222, CV_BI_HLSL_MIN16INT = 0x0222,
CV_BI_HLSL_MIN16UINT = 0x0223, CV_BI_HLSL_MIN16UINT = 0x0223,
CV_BI_HLSL_CONSTANT_BUFFER = 0x0224,
// 0x0400 - 0xffff - Unused. // 0x0400 - 0xffff - Unused.
@ -300,6 +310,9 @@ typedef enum CV_CFL_LANG
CV_CFL_JSCRIPT = 0x0E, CV_CFL_JSCRIPT = 0x0E,
CV_CFL_MSIL = 0x0F, // Unknown MSIL (LTCG of .NETMODULE) CV_CFL_MSIL = 0x0F, // Unknown MSIL (LTCG of .NETMODULE)
CV_CFL_HLSL = 0x10, // High Level Shader Language CV_CFL_HLSL = 0x10, // High Level Shader Language
CV_CFL_OBJC = 0x11, // Objective-C
CV_CFL_OBJCXX = 0x12, // Objective-C++
CV_CFL_SWIFT = 0x13, // Swift
} CV_CFL_LANG; } CV_CFL_LANG;
@ -372,6 +385,7 @@ typedef enum CV_CPU_TYPE_e
CV_CFL_THUMB = 0xF0, CV_CFL_THUMB = 0xF0,
CV_CFL_ARMNT = 0xF4, CV_CFL_ARMNT = 0xF4,
CV_CFL_ARM64 = 0xF6, CV_CFL_ARM64 = 0xF6,
CV_CFL_HYBRID_X86_ARM64 = 0xF7,
CV_CFL_D3D11_SHADER = 0x100, CV_CFL_D3D11_SHADER = 0x100,
} CV_CPU_TYPE_e; } CV_CPU_TYPE_e;
@ -748,6 +762,40 @@ typedef enum CV_HREG_e
CV_REG_YMM7D2 = 394, CV_REG_YMM7D2 = 394,
CV_REG_YMM7D3 = 395, CV_REG_YMM7D3 = 395,
CV_REG_BND0 = 396, // x86 MPX bounds registers
CV_REG_BND1 = 397,
CV_REG_BND2 = 398,
CV_REG_BND3 = 399,
CV_REG_BNDCFGU = 400,
CV_REG_BNDSTATUS = 401,
CV_REG_ZMM0 = 402, // AVX-512 registers
CV_REG_ZMM1 = 403,
CV_REG_ZMM2 = 404,
CV_REG_ZMM3 = 405,
CV_REG_ZMM4 = 406,
CV_REG_ZMM5 = 407,
CV_REG_ZMM6 = 408,
CV_REG_ZMM7 = 409,
CV_REG_ZMM0H = 410,
CV_REG_ZMM1H = 411,
CV_REG_ZMM2H = 412,
CV_REG_ZMM3H = 413,
CV_REG_ZMM4H = 414,
CV_REG_ZMM5H = 415,
CV_REG_ZMM6H = 416,
CV_REG_ZMM7H = 417,
CV_REG_K0 = 418,
CV_REG_K1 = 419,
CV_REG_K2 = 420,
CV_REG_K3 = 421,
CV_REG_K4 = 422,
CV_REG_K5 = 423,
CV_REG_K6 = 424,
CV_REG_K7 = 425,
// registers for the 68K processors // registers for the 68K processors
CV_R68_D0 = 0, CV_R68_D0 = 0,
@ -1575,10 +1623,12 @@ typedef enum CV_HREG_e
CV_ARM64_LR = 80, CV_ARM64_LR = 80,
CV_ARM64_SP = 81, CV_ARM64_SP = 81,
CV_ARM64_ZR = 82, CV_ARM64_ZR = 82,
CV_ARM64_PC = 83,
// statue register // status registers
CV_ARM64_NZCV = 90, CV_ARM64_NZCV = 90,
CV_ARM64_CPSR = 91,
// 32-bit floating point registers // 32-bit floating point registers
@ -1688,6 +1738,147 @@ typedef enum CV_HREG_e
// Floating point status register // Floating point status register
CV_ARM64_FPSR = 220, CV_ARM64_FPSR = 220,
CV_ARM64_FPCR = 221,
// 8-bit floating point registers
CV_ARM64_B0 = 230,
CV_ARM64_B1 = 231,
CV_ARM64_B2 = 232,
CV_ARM64_B3 = 233,
CV_ARM64_B4 = 234,
CV_ARM64_B5 = 235,
CV_ARM64_B6 = 236,
CV_ARM64_B7 = 237,
CV_ARM64_B8 = 238,
CV_ARM64_B9 = 239,
CV_ARM64_B10 = 240,
CV_ARM64_B11 = 241,
CV_ARM64_B12 = 242,
CV_ARM64_B13 = 243,
CV_ARM64_B14 = 244,
CV_ARM64_B15 = 245,
CV_ARM64_B16 = 246,
CV_ARM64_B17 = 247,
CV_ARM64_B18 = 248,
CV_ARM64_B19 = 249,
CV_ARM64_B20 = 250,
CV_ARM64_B21 = 251,
CV_ARM64_B22 = 252,
CV_ARM64_B23 = 253,
CV_ARM64_B24 = 254,
CV_ARM64_B25 = 255,
CV_ARM64_B26 = 256,
CV_ARM64_B27 = 257,
CV_ARM64_B28 = 258,
CV_ARM64_B29 = 259,
CV_ARM64_B30 = 260,
CV_ARM64_B31 = 261,
// 16-bit floating point registers
CV_ARM64_H0 = 270,
CV_ARM64_H1 = 271,
CV_ARM64_H2 = 272,
CV_ARM64_H3 = 273,
CV_ARM64_H4 = 274,
CV_ARM64_H5 = 275,
CV_ARM64_H6 = 276,
CV_ARM64_H7 = 277,
CV_ARM64_H8 = 278,
CV_ARM64_H9 = 279,
CV_ARM64_H10 = 280,
CV_ARM64_H11 = 281,
CV_ARM64_H12 = 282,
CV_ARM64_H13 = 283,
CV_ARM64_H14 = 284,
CV_ARM64_H15 = 285,
CV_ARM64_H16 = 286,
CV_ARM64_H17 = 287,
CV_ARM64_H18 = 288,
CV_ARM64_H19 = 289,
CV_ARM64_H20 = 290,
CV_ARM64_H21 = 291,
CV_ARM64_H22 = 292,
CV_ARM64_H23 = 293,
CV_ARM64_H24 = 294,
CV_ARM64_H25 = 295,
CV_ARM64_H26 = 296,
CV_ARM64_H27 = 297,
CV_ARM64_H28 = 298,
CV_ARM64_H29 = 299,
CV_ARM64_H30 = 300,
CV_ARM64_H31 = 301,
// 128-bit vector registers
CV_ARM64_V0 = 310,
CV_ARM64_V1 = 311,
CV_ARM64_V2 = 312,
CV_ARM64_V3 = 313,
CV_ARM64_V4 = 314,
CV_ARM64_V5 = 315,
CV_ARM64_V6 = 316,
CV_ARM64_V7 = 317,
CV_ARM64_V8 = 318,
CV_ARM64_V9 = 319,
CV_ARM64_V10 = 320,
CV_ARM64_V11 = 321,
CV_ARM64_V12 = 322,
CV_ARM64_V13 = 323,
CV_ARM64_V14 = 324,
CV_ARM64_V15 = 325,
CV_ARM64_V16 = 326,
CV_ARM64_V17 = 327,
CV_ARM64_V18 = 328,
CV_ARM64_V19 = 329,
CV_ARM64_V20 = 330,
CV_ARM64_V21 = 331,
CV_ARM64_V22 = 332,
CV_ARM64_V23 = 333,
CV_ARM64_V24 = 334,
CV_ARM64_V25 = 335,
CV_ARM64_V26 = 336,
CV_ARM64_V27 = 337,
CV_ARM64_V28 = 338,
CV_ARM64_V29 = 339,
CV_ARM64_V30 = 340,
CV_ARM64_V31 = 341,
// 128-bit SIMD registers upper 64 bits
CV_ARM64_Q0H = 350,
CV_ARM64_Q1H = 351,
CV_ARM64_Q2H = 352,
CV_ARM64_Q3H = 353,
CV_ARM64_Q4H = 354,
CV_ARM64_Q5H = 355,
CV_ARM64_Q6H = 356,
CV_ARM64_Q7H = 357,
CV_ARM64_Q8H = 358,
CV_ARM64_Q9H = 359,
CV_ARM64_Q10H = 360,
CV_ARM64_Q11H = 361,
CV_ARM64_Q12H = 362,
CV_ARM64_Q13H = 363,
CV_ARM64_Q14H = 364,
CV_ARM64_Q15H = 365,
CV_ARM64_Q16H = 366,
CV_ARM64_Q17H = 367,
CV_ARM64_Q18H = 368,
CV_ARM64_Q19H = 369,
CV_ARM64_Q20H = 370,
CV_ARM64_Q21H = 371,
CV_ARM64_Q22H = 372,
CV_ARM64_Q23H = 373,
CV_ARM64_Q24H = 374,
CV_ARM64_Q25H = 375,
CV_ARM64_Q26H = 376,
CV_ARM64_Q27H = 377,
CV_ARM64_Q28H = 378,
CV_ARM64_Q29H = 379,
CV_ARM64_Q30H = 380,
CV_ARM64_Q31H = 381,
// //
// Register set for Intel IA64 // Register set for Intel IA64
@ -3634,8 +3825,107 @@ typedef enum CV_HREG_e
CV_AMD64_YMM15D0 = 684, CV_AMD64_YMM15D0 = 684,
CV_AMD64_YMM15D1 = 685, CV_AMD64_YMM15D1 = 685,
CV_AMD64_YMM15D2 = 686, CV_AMD64_YMM15D2 = 686,
CV_AMD64_YMM15D3 = 687 CV_AMD64_YMM15D3 = 687,
CV_AMD64_BND0 = 688, // AMD64 MPX bounds registers
CV_AMD64_BND1 = 689,
CV_AMD64_BND2 = 690,
CV_AMD64_BND3 = 691,
CV_AMD64_BNDCFGU = 692,
CV_AMD64_BNDSTATUS = 693,
CV_AMD64_XMM16 = 694, // AVX-512 registers
CV_AMD64_XMM17 = 695,
CV_AMD64_XMM18 = 696,
CV_AMD64_XMM19 = 697,
CV_AMD64_XMM20 = 698,
CV_AMD64_XMM21 = 699,
CV_AMD64_XMM22 = 700,
CV_AMD64_XMM23 = 701,
CV_AMD64_XMM24 = 702,
CV_AMD64_XMM25 = 703,
CV_AMD64_XMM26 = 704,
CV_AMD64_XMM27 = 705,
CV_AMD64_XMM28 = 706,
CV_AMD64_XMM29 = 707,
CV_AMD64_XMM30 = 708,
CV_AMD64_XMM31 = 709,
CV_AMD64_YMM16 = 710,
CV_AMD64_YMM17 = 711,
CV_AMD64_YMM18 = 712,
CV_AMD64_YMM19 = 713,
CV_AMD64_YMM20 = 714,
CV_AMD64_YMM21 = 715,
CV_AMD64_YMM22 = 716,
CV_AMD64_YMM23 = 717,
CV_AMD64_YMM24 = 718,
CV_AMD64_YMM25 = 719,
CV_AMD64_YMM26 = 720,
CV_AMD64_YMM27 = 721,
CV_AMD64_YMM28 = 722,
CV_AMD64_YMM29 = 723,
CV_AMD64_YMM30 = 724,
CV_AMD64_YMM31 = 725,
CV_AMD64_ZMM0 = 726,
CV_AMD64_ZMM1 = 727,
CV_AMD64_ZMM2 = 728,
CV_AMD64_ZMM3 = 729,
CV_AMD64_ZMM4 = 730,
CV_AMD64_ZMM5 = 731,
CV_AMD64_ZMM6 = 732,
CV_AMD64_ZMM7 = 733,
CV_AMD64_ZMM8 = 734,
CV_AMD64_ZMM9 = 735,
CV_AMD64_ZMM10 = 736,
CV_AMD64_ZMM11 = 737,
CV_AMD64_ZMM12 = 738,
CV_AMD64_ZMM13 = 739,
CV_AMD64_ZMM14 = 740,
CV_AMD64_ZMM15 = 741,
CV_AMD64_ZMM16 = 742,
CV_AMD64_ZMM17 = 743,
CV_AMD64_ZMM18 = 744,
CV_AMD64_ZMM19 = 745,
CV_AMD64_ZMM20 = 746,
CV_AMD64_ZMM21 = 747,
CV_AMD64_ZMM22 = 748,
CV_AMD64_ZMM23 = 749,
CV_AMD64_ZMM24 = 750,
CV_AMD64_ZMM25 = 751,
CV_AMD64_ZMM26 = 752,
CV_AMD64_ZMM27 = 753,
CV_AMD64_ZMM28 = 754,
CV_AMD64_ZMM29 = 755,
CV_AMD64_ZMM30 = 756,
CV_AMD64_ZMM31 = 757,
CV_AMD64_K0 = 758,
CV_AMD64_K1 = 759,
CV_AMD64_K2 = 760,
CV_AMD64_K3 = 761,
CV_AMD64_K4 = 762,
CV_AMD64_K5 = 763,
CV_AMD64_K6 = 764,
CV_AMD64_K7 = 765,
CV_AMD64_ZMM0H = 766, // upper 256 bits of the first 16 AMD64 AVX-512 registers
CV_AMD64_ZMM1H = 767,
CV_AMD64_ZMM2H = 768,
CV_AMD64_ZMM3H = 769,
CV_AMD64_ZMM4H = 770,
CV_AMD64_ZMM5H = 771,
CV_AMD64_ZMM6H = 772,
CV_AMD64_ZMM7H = 773,
CV_AMD64_ZMM8H = 774,
CV_AMD64_ZMM9H = 775,
CV_AMD64_ZMM10H = 776,
CV_AMD64_ZMM11H = 777,
CV_AMD64_ZMM12H = 778,
CV_AMD64_ZMM13H = 779,
CV_AMD64_ZMM14H = 780,
CV_AMD64_ZMM15H = 781,
// Note: Next set of platform registers need to go into a new enum... // Note: Next set of platform registers need to go into a new enum...
// this one is above 44K now. // this one is above 44K now.
@ -3720,4 +4010,15 @@ typedef enum CV_HLSLMemorySpace_e
CV_HLSL_MEMSPACE_MAX = 0x0F, CV_HLSL_MEMSPACE_MAX = 0x0F,
} CV_HLSLMemorySpace_e; } CV_HLSLMemorySpace_e;
enum
{
NAMEHASH_BUILD_START,
NAMEHASH_BUILD_PAUSE,
NAMEHASH_BUILD_RESUME,
NAMEHASH_BUILD_COMPLETE,
NAMEHASH_BUILD_ERROR,
NAMEHASH_BUILD_OOM = NAMEHASH_BUILD_ERROR,
NAMEHASH_BUILD_FAIL_TO_OPEN_MOD,
};
#endif #endif

View File

@ -3,7 +3,7 @@
/* this ALWAYS GENERATED file contains the definitions for the interfaces */ /* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 8.00.0603 */ /* File created by MIDL compiler version 8.01.0622 */
/* @@MIDL_FILE_HEADING( ) */ /* @@MIDL_FILE_HEADING( ) */
#pragma warning( disable: 4049 ) /* more than 64k source lines */ #pragma warning( disable: 4049 ) /* more than 64k source lines */
@ -24,7 +24,7 @@
#ifndef __RPCNDR_H_VERSION__ #ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h> #error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__ #endif /* __RPCNDR_H_VERSION__ */
#ifndef COM_NO_WINDOWS_H #ifndef COM_NO_WINDOWS_H
#include "windows.h" #include "windows.h"
@ -392,7 +392,8 @@ enum __MIDL___MIDL_itf_dia2_0000_0000_0001
E_PDB_DEBUG_INFO_NOT_IN_PDB = (E_PDB_RESERVED + 1), E_PDB_DEBUG_INFO_NOT_IN_PDB = (E_PDB_RESERVED + 1),
E_PDB_SYMSRV_BAD_CACHE_PATH = (E_PDB_DEBUG_INFO_NOT_IN_PDB + 1), E_PDB_SYMSRV_BAD_CACHE_PATH = (E_PDB_DEBUG_INFO_NOT_IN_PDB + 1),
E_PDB_SYMSRV_CACHE_FULL = (E_PDB_SYMSRV_BAD_CACHE_PATH + 1), E_PDB_SYMSRV_CACHE_FULL = (E_PDB_SYMSRV_BAD_CACHE_PATH + 1),
E_PDB_MAX = (E_PDB_SYMSRV_CACHE_FULL + 1) E_PDB_OBJECT_DISPOSED = (E_PDB_SYMSRV_CACHE_FULL + 1),
E_PDB_MAX = (E_PDB_OBJECT_DISPOSED + 1)
} ; } ;
typedef void (__cdecl* PfnPDBDebugDirV)( typedef void (__cdecl* PfnPDBDebugDirV)(
BOOL __MIDL____MIDL_itf_dia2_0000_00000000, BOOL __MIDL____MIDL_itf_dia2_0000_00000000,
@ -2865,7 +2866,7 @@ EXTERN_C const IID IID_IDiaSession;
#if defined(__cplusplus) && !defined(CINTERFACE) #if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6FC5D63F-011E-40C2-8DD2-E6486E9D6B68") MIDL_INTERFACE("2F609EE1-D1C8-4E24-8288-3326BADCD211")
IDiaSession : IDiaSession :
public IUnknown public IUnknown
{ {
@ -3137,6 +3138,40 @@ public:
/* [out] */ DWORD * pcb, /* [out] */ DWORD * pcb,
/* [size_is][out] */ BYTE * pb) = 0; /* [size_is][out] */ BYTE * pb) = 0;
virtual HRESULT STDMETHODCALLTYPE getNumberOfFunctionFragments_VA(
/* [in] */ ULONGLONG vaFunc,
/* [in] */ DWORD cbFunc,
/* [out] */ DWORD * pNumFragments) = 0;
virtual HRESULT STDMETHODCALLTYPE getNumberOfFunctionFragments_RVA(
/* [in] */ DWORD rvaFunc,
/* [in] */ DWORD cbFunc,
/* [out] */ DWORD * pNumFragments) = 0;
virtual HRESULT STDMETHODCALLTYPE getFunctionFragments_VA(
/* [in] */ ULONGLONG vaFunc,
/* [in] */ DWORD cbFunc,
/* [in] */ DWORD cFragments,
/* [size_is][out] */ ULONGLONG * pVaFragment,
/* [size_is][out] */ DWORD * pLenFragment) = 0;
virtual HRESULT STDMETHODCALLTYPE getFunctionFragments_RVA(
/* [in] */ DWORD rvaFunc,
/* [in] */ DWORD cbFunc,
/* [in] */ DWORD cFragments,
/* [size_is][out] */ DWORD * pRvaFragment,
/* [size_is][out] */ DWORD * pLenFragment) = 0;
virtual HRESULT STDMETHODCALLTYPE getExports(
/* [out] */ IDiaEnumSymbols** ppResult) = 0;
virtual HRESULT STDMETHODCALLTYPE getHeapAllocationSites(
/* [out] */ IDiaEnumSymbols** ppResult) = 0;
virtual HRESULT STDMETHODCALLTYPE findInputAssemblyFile(
/* [in] */ IDiaSymbol * pSymbol,
/* [out] */ IDiaInputAssemblyFile** ppResult) = 0;
}; };
@ -3477,6 +3512,47 @@ typedef struct IDiaSessionVtbl
/* [out] */ DWORD* pcb, /* [out] */ DWORD* pcb,
/* [size_is][out] */ BYTE* pb); /* [size_is][out] */ BYTE* pb);
HRESULT(STDMETHODCALLTYPE* getNumberOfFunctionFragments_VA)(
IDiaSession* This,
/* [in] */ ULONGLONG vaFunc,
/* [in] */ DWORD cbFunc,
/* [out] */ DWORD* pNumFragments);
HRESULT(STDMETHODCALLTYPE* getNumberOfFunctionFragments_RVA)(
IDiaSession* This,
/* [in] */ DWORD rvaFunc,
/* [in] */ DWORD cbFunc,
/* [out] */ DWORD* pNumFragments);
HRESULT(STDMETHODCALLTYPE* getFunctionFragments_VA)(
IDiaSession* This,
/* [in] */ ULONGLONG vaFunc,
/* [in] */ DWORD cbFunc,
/* [in] */ DWORD cFragments,
/* [size_is][out] */ ULONGLONG* pVaFragment,
/* [size_is][out] */ DWORD* pLenFragment);
HRESULT(STDMETHODCALLTYPE* getFunctionFragments_RVA)(
IDiaSession* This,
/* [in] */ DWORD rvaFunc,
/* [in] */ DWORD cbFunc,
/* [in] */ DWORD cFragments,
/* [size_is][out] */ DWORD* pRvaFragment,
/* [size_is][out] */ DWORD* pLenFragment);
HRESULT(STDMETHODCALLTYPE* getExports)(
IDiaSession* This,
/* [out] */ IDiaEnumSymbols** ppResult);
HRESULT(STDMETHODCALLTYPE* getHeapAllocationSites)(
IDiaSession* This,
/* [out] */ IDiaEnumSymbols** ppResult);
HRESULT(STDMETHODCALLTYPE* findInputAssemblyFile)(
IDiaSession* This,
/* [in] */ IDiaSymbol* pSymbol,
/* [out] */ IDiaInputAssemblyFile** ppResult);
END_INTERFACE END_INTERFACE
} IDiaSessionVtbl; } IDiaSessionVtbl;
@ -3656,6 +3732,27 @@ interface IDiaSession
#define IDiaSession_getTypeMDTokenMap(This,cb,pcb,pb) \ #define IDiaSession_getTypeMDTokenMap(This,cb,pcb,pb) \
( (This)->lpVtbl -> getTypeMDTokenMap(This,cb,pcb,pb) ) ( (This)->lpVtbl -> getTypeMDTokenMap(This,cb,pcb,pb) )
#define IDiaSession_getNumberOfFunctionFragments_VA(This,vaFunc,cbFunc,pNumFragments) \
( (This)->lpVtbl -> getNumberOfFunctionFragments_VA(This,vaFunc,cbFunc,pNumFragments) )
#define IDiaSession_getNumberOfFunctionFragments_RVA(This,rvaFunc,cbFunc,pNumFragments) \
( (This)->lpVtbl -> getNumberOfFunctionFragments_RVA(This,rvaFunc,cbFunc,pNumFragments) )
#define IDiaSession_getFunctionFragments_VA(This,vaFunc,cbFunc,cFragments,pVaFragment,pLenFragment) \
( (This)->lpVtbl -> getFunctionFragments_VA(This,vaFunc,cbFunc,cFragments,pVaFragment,pLenFragment) )
#define IDiaSession_getFunctionFragments_RVA(This,rvaFunc,cbFunc,cFragments,pRvaFragment,pLenFragment) \
( (This)->lpVtbl -> getFunctionFragments_RVA(This,rvaFunc,cbFunc,cFragments,pRvaFragment,pLenFragment) )
#define IDiaSession_getExports(This,ppResult) \
( (This)->lpVtbl -> getExports(This,ppResult) )
#define IDiaSession_getHeapAllocationSites(This,ppResult) \
( (This)->lpVtbl -> getHeapAllocationSites(This,ppResult) )
#define IDiaSession_findInputAssemblyFile(This,pSymbol,ppResult) \
( (This)->lpVtbl -> findInputAssemblyFile(This,pSymbol,ppResult) )
#endif /* COBJMACROS */ #endif /* COBJMACROS */
@ -4383,6 +4480,60 @@ public:
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasControlFlowCheck( virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_hasControlFlowCheck(
/* [retval][out] */ BOOL * pRetVal) = 0; /* [retval][out] */ BOOL * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_constantExport(
/* [retval][out] */ BOOL * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_dataExport(
/* [retval][out] */ BOOL * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_privateExport(
/* [retval][out] */ BOOL * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_noNameExport(
/* [retval][out] */ BOOL * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_exportHasExplicitlyAssignedOrdinal(
/* [retval][out] */ BOOL * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_exportIsForwarder(
/* [retval][out] */ BOOL * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_ordinal(
/* [retval][out] */ DWORD * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_frameSize(
/* [retval][out] */ DWORD * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_exceptionHandlerAddressSection(
/* [retval][out] */ DWORD * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_exceptionHandlerAddressOffset(
/* [retval][out] */ DWORD * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_exceptionHandlerRelativeVirtualAddress(
/* [retval][out] */ DWORD * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_exceptionHandlerVirtualAddress(
/* [retval][out] */ ULONGLONG * pRetVal) = 0;
virtual HRESULT STDMETHODCALLTYPE findInputAssemblyFile(
/* [out] */ IDiaInputAssemblyFile** ppResult) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_characteristics(
/* [retval][out] */ DWORD * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_coffGroup(
/* [retval][out] */ IDiaSymbol** pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_bindID(
/* [retval][out] */ DWORD * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_bindSpace(
/* [retval][out] */ DWORD * pRetVal) = 0;
virtual /* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_bindSlot(
/* [retval][out] */ DWORD * pRetVal) = 0;
}; };
@ -5322,6 +5473,78 @@ typedef struct IDiaSymbolVtbl
IDiaSymbol* This, IDiaSymbol* This,
/* [retval][out] */ BOOL* pRetVal); /* [retval][out] */ BOOL* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_constantExport)(
IDiaSymbol* This,
/* [retval][out] */ BOOL* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_dataExport)(
IDiaSymbol* This,
/* [retval][out] */ BOOL* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_privateExport)(
IDiaSymbol* This,
/* [retval][out] */ BOOL* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_noNameExport)(
IDiaSymbol* This,
/* [retval][out] */ BOOL* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_exportHasExplicitlyAssignedOrdinal)(
IDiaSymbol* This,
/* [retval][out] */ BOOL* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_exportIsForwarder)(
IDiaSymbol* This,
/* [retval][out] */ BOOL* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_ordinal)(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_frameSize)(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_exceptionHandlerAddressSection)(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_exceptionHandlerAddressOffset)(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_exceptionHandlerRelativeVirtualAddress)(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_exceptionHandlerVirtualAddress)(
IDiaSymbol* This,
/* [retval][out] */ ULONGLONG* pRetVal);
HRESULT(STDMETHODCALLTYPE* findInputAssemblyFile)(
IDiaSymbol* This,
/* [out] */ IDiaInputAssemblyFile** ppResult);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_characteristics)(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_coffGroup)(
IDiaSymbol* This,
/* [retval][out] */ IDiaSymbol** pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_bindID)(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_bindSpace)(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
/* [id][helpstring][propget] */ HRESULT(STDMETHODCALLTYPE* get_bindSlot)(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
END_INTERFACE END_INTERFACE
} IDiaSymbolVtbl; } IDiaSymbolVtbl;
@ -5999,6 +6222,60 @@ interface IDiaSymbol
#define IDiaSymbol_get_hasControlFlowCheck(This,pRetVal) \ #define IDiaSymbol_get_hasControlFlowCheck(This,pRetVal) \
( (This)->lpVtbl -> get_hasControlFlowCheck(This,pRetVal) ) ( (This)->lpVtbl -> get_hasControlFlowCheck(This,pRetVal) )
#define IDiaSymbol_get_constantExport(This,pRetVal) \
( (This)->lpVtbl -> get_constantExport(This,pRetVal) )
#define IDiaSymbol_get_dataExport(This,pRetVal) \
( (This)->lpVtbl -> get_dataExport(This,pRetVal) )
#define IDiaSymbol_get_privateExport(This,pRetVal) \
( (This)->lpVtbl -> get_privateExport(This,pRetVal) )
#define IDiaSymbol_get_noNameExport(This,pRetVal) \
( (This)->lpVtbl -> get_noNameExport(This,pRetVal) )
#define IDiaSymbol_get_exportHasExplicitlyAssignedOrdinal(This,pRetVal) \
( (This)->lpVtbl -> get_exportHasExplicitlyAssignedOrdinal(This,pRetVal) )
#define IDiaSymbol_get_exportIsForwarder(This,pRetVal) \
( (This)->lpVtbl -> get_exportIsForwarder(This,pRetVal) )
#define IDiaSymbol_get_ordinal(This,pRetVal) \
( (This)->lpVtbl -> get_ordinal(This,pRetVal) )
#define IDiaSymbol_get_frameSize(This,pRetVal) \
( (This)->lpVtbl -> get_frameSize(This,pRetVal) )
#define IDiaSymbol_get_exceptionHandlerAddressSection(This,pRetVal) \
( (This)->lpVtbl -> get_exceptionHandlerAddressSection(This,pRetVal) )
#define IDiaSymbol_get_exceptionHandlerAddressOffset(This,pRetVal) \
( (This)->lpVtbl -> get_exceptionHandlerAddressOffset(This,pRetVal) )
#define IDiaSymbol_get_exceptionHandlerRelativeVirtualAddress(This,pRetVal) \
( (This)->lpVtbl -> get_exceptionHandlerRelativeVirtualAddress(This,pRetVal) )
#define IDiaSymbol_get_exceptionHandlerVirtualAddress(This,pRetVal) \
( (This)->lpVtbl -> get_exceptionHandlerVirtualAddress(This,pRetVal) )
#define IDiaSymbol_findInputAssemblyFile(This,ppResult) \
( (This)->lpVtbl -> findInputAssemblyFile(This,ppResult) )
#define IDiaSymbol_get_characteristics(This,pRetVal) \
( (This)->lpVtbl -> get_characteristics(This,pRetVal) )
#define IDiaSymbol_get_coffGroup(This,pRetVal) \
( (This)->lpVtbl -> get_coffGroup(This,pRetVal) )
#define IDiaSymbol_get_bindID(This,pRetVal) \
( (This)->lpVtbl -> get_bindID(This,pRetVal) )
#define IDiaSymbol_get_bindSpace(This,pRetVal) \
( (This)->lpVtbl -> get_bindSpace(This,pRetVal) )
#define IDiaSymbol_get_bindSlot(This,pRetVal) \
( (This)->lpVtbl -> get_bindSlot(This,pRetVal) )
#endif /* COBJMACROS */ #endif /* COBJMACROS */
@ -7142,6 +7419,222 @@ void __RPC_STUB IDiaSymbol_get_hasControlFlowCheck_Stub(
DWORD* _pdwStubPhase); DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_constantExport_Proxy(
IDiaSymbol* This,
/* [retval][out] */ BOOL* pRetVal);
void __RPC_STUB IDiaSymbol_get_constantExport_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_dataExport_Proxy(
IDiaSymbol* This,
/* [retval][out] */ BOOL* pRetVal);
void __RPC_STUB IDiaSymbol_get_dataExport_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_privateExport_Proxy(
IDiaSymbol* This,
/* [retval][out] */ BOOL* pRetVal);
void __RPC_STUB IDiaSymbol_get_privateExport_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_noNameExport_Proxy(
IDiaSymbol* This,
/* [retval][out] */ BOOL* pRetVal);
void __RPC_STUB IDiaSymbol_get_noNameExport_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_exportHasExplicitlyAssignedOrdinal_Proxy(
IDiaSymbol* This,
/* [retval][out] */ BOOL* pRetVal);
void __RPC_STUB IDiaSymbol_get_exportHasExplicitlyAssignedOrdinal_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_exportIsForwarder_Proxy(
IDiaSymbol* This,
/* [retval][out] */ BOOL* pRetVal);
void __RPC_STUB IDiaSymbol_get_exportIsForwarder_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_ordinal_Proxy(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
void __RPC_STUB IDiaSymbol_get_ordinal_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_frameSize_Proxy(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
void __RPC_STUB IDiaSymbol_get_frameSize_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_exceptionHandlerAddressSection_Proxy(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
void __RPC_STUB IDiaSymbol_get_exceptionHandlerAddressSection_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_exceptionHandlerAddressOffset_Proxy(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
void __RPC_STUB IDiaSymbol_get_exceptionHandlerAddressOffset_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_exceptionHandlerRelativeVirtualAddress_Proxy(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
void __RPC_STUB IDiaSymbol_get_exceptionHandlerRelativeVirtualAddress_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_exceptionHandlerVirtualAddress_Proxy(
IDiaSymbol* This,
/* [retval][out] */ ULONGLONG* pRetVal);
void __RPC_STUB IDiaSymbol_get_exceptionHandlerVirtualAddress_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
HRESULT STDMETHODCALLTYPE IDiaSymbol_findInputAssemblyFile_Proxy(
IDiaSymbol* This,
/* [out] */ IDiaInputAssemblyFile** ppResult);
void __RPC_STUB IDiaSymbol_findInputAssemblyFile_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_characteristics_Proxy(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
void __RPC_STUB IDiaSymbol_get_characteristics_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_coffGroup_Proxy(
IDiaSymbol* This,
/* [retval][out] */ IDiaSymbol** pRetVal);
void __RPC_STUB IDiaSymbol_get_coffGroup_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_bindID_Proxy(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
void __RPC_STUB IDiaSymbol_get_bindID_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_bindSpace_Proxy(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
void __RPC_STUB IDiaSymbol_get_bindSpace_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
/* [id][helpstring][propget] */ HRESULT STDMETHODCALLTYPE IDiaSymbol_get_bindSlot_Proxy(
IDiaSymbol* This,
/* [retval][out] */ DWORD* pRetVal);
void __RPC_STUB IDiaSymbol_get_bindSlot_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* _pRpcChannelBuffer,
PRPC_MESSAGE _pRpcMessage,
DWORD* _pdwStubPhase);
#endif /* __IDiaSymbol_INTERFACE_DEFINED__ */ #endif /* __IDiaSymbol_INTERFACE_DEFINED__ */
@ -9026,7 +9519,7 @@ EXTERN_C const CLSID CLSID_DiaSource;
#ifdef __cplusplus #ifdef __cplusplus
class DECLSPEC_UUID("3bfcea48-620f-4b6b-81f7-b9af75454c7d") class DECLSPEC_UUID("e6756135-1e65-4d17-8576-610761398c3c")
DiaSource; DiaSource;
#endif #endif
@ -9034,7 +9527,7 @@ EXTERN_C const CLSID CLSID_DiaSourceAlt;
#ifdef __cplusplus #ifdef __cplusplus
class DECLSPEC_UUID("83ab22c8-993a-4d14-a0e0-37bc0aaea793") class DECLSPEC_UUID("91904831-49ca-4766-b95c-25397e2dd6dc")
DiaSourceAlt; DiaSourceAlt;
#endif #endif
@ -9042,7 +9535,7 @@ EXTERN_C const CLSID CLSID_DiaStackWalker;
#ifdef __cplusplus #ifdef __cplusplus
class DECLSPEC_UUID("20cea761-83c2-44f4-a6f7-5cc4577198ca") class DECLSPEC_UUID("ce4a85db-5768-475b-a4e1-c0bca2112a6b")
DiaStackWalker; DiaStackWalker;
#endif #endif
#endif /* __Dia2Lib_LIBRARY_DEFINED__ */ #endif /* __Dia2Lib_LIBRARY_DEFINED__ */
@ -9638,6 +10131,18 @@ public:
/* [out] */ DWORD * pISect, /* [out] */ DWORD * pISect,
/* [out] */ DWORD * pOffset) = 0; /* [out] */ DWORD * pOffset) = 0;
virtual HRESULT STDMETHODCALLTYPE numberOfFunctionFragmentsForVA(
/* [in] */ ULONGLONG vaFunc,
/* [in] */ DWORD cbFunc,
/* [out] */ DWORD * pNumFragments) = 0;
virtual HRESULT STDMETHODCALLTYPE functionFragmentsForVA(
/* [in] */ ULONGLONG vaFunc,
/* [in] */ DWORD cbFunc,
/* [in] */ DWORD cFragments,
/* [out] */ ULONGLONG * pVaFragment,
/* [out] */ DWORD * pLenFragment) = 0;
}; };
@ -9716,6 +10221,20 @@ typedef struct IDiaStackWalkHelperVtbl
/* [out] */ DWORD* pISect, /* [out] */ DWORD* pISect,
/* [out] */ DWORD* pOffset); /* [out] */ DWORD* pOffset);
HRESULT(STDMETHODCALLTYPE* numberOfFunctionFragmentsForVA)(
IDiaStackWalkHelper* This,
/* [in] */ ULONGLONG vaFunc,
/* [in] */ DWORD cbFunc,
/* [out] */ DWORD* pNumFragments);
HRESULT(STDMETHODCALLTYPE* functionFragmentsForVA)(
IDiaStackWalkHelper* This,
/* [in] */ ULONGLONG vaFunc,
/* [in] */ DWORD cbFunc,
/* [in] */ DWORD cFragments,
/* [out] */ ULONGLONG* pVaFragment,
/* [out] */ DWORD* pLenFragment);
END_INTERFACE END_INTERFACE
} IDiaStackWalkHelperVtbl; } IDiaStackWalkHelperVtbl;
@ -9769,6 +10288,12 @@ interface IDiaStackWalkHelper
#define IDiaStackWalkHelper_addressForVA(This,va,pISect,pOffset) \ #define IDiaStackWalkHelper_addressForVA(This,va,pISect,pOffset) \
( (This)->lpVtbl -> addressForVA(This,va,pISect,pOffset) ) ( (This)->lpVtbl -> addressForVA(This,va,pISect,pOffset) )
#define IDiaStackWalkHelper_numberOfFunctionFragmentsForVA(This,vaFunc,cbFunc,pNumFragments) \
( (This)->lpVtbl -> numberOfFunctionFragmentsForVA(This,vaFunc,cbFunc,pNumFragments) )
#define IDiaStackWalkHelper_functionFragmentsForVA(This,vaFunc,cbFunc,cFragments,pVaFragment,pLenFragment) \
( (This)->lpVtbl -> functionFragmentsForVA(This,vaFunc,cbFunc,cFragments,pVaFragment,pLenFragment) )
#endif /* COBJMACROS */ #endif /* COBJMACROS */
@ -9971,6 +10496,20 @@ typedef struct IDiaStackWalkHelper2Vtbl
/* [out] */ DWORD* pISect, /* [out] */ DWORD* pISect,
/* [out] */ DWORD* pOffset); /* [out] */ DWORD* pOffset);
HRESULT(STDMETHODCALLTYPE* numberOfFunctionFragmentsForVA)(
IDiaStackWalkHelper2* This,
/* [in] */ ULONGLONG vaFunc,
/* [in] */ DWORD cbFunc,
/* [out] */ DWORD* pNumFragments);
HRESULT(STDMETHODCALLTYPE* functionFragmentsForVA)(
IDiaStackWalkHelper2* This,
/* [in] */ ULONGLONG vaFunc,
/* [in] */ DWORD cbFunc,
/* [in] */ DWORD cFragments,
/* [out] */ ULONGLONG* pVaFragment,
/* [out] */ DWORD* pLenFragment);
END_INTERFACE END_INTERFACE
} IDiaStackWalkHelper2Vtbl; } IDiaStackWalkHelper2Vtbl;
@ -10024,6 +10563,12 @@ interface IDiaStackWalkHelper2
#define IDiaStackWalkHelper2_addressForVA(This,va,pISect,pOffset) \ #define IDiaStackWalkHelper2_addressForVA(This,va,pISect,pOffset) \
( (This)->lpVtbl -> addressForVA(This,va,pISect,pOffset) ) ( (This)->lpVtbl -> addressForVA(This,va,pISect,pOffset) )
#define IDiaStackWalkHelper2_numberOfFunctionFragmentsForVA(This,vaFunc,cbFunc,pNumFragments) \
( (This)->lpVtbl -> numberOfFunctionFragmentsForVA(This,vaFunc,cbFunc,pNumFragments) )
#define IDiaStackWalkHelper2_functionFragmentsForVA(This,vaFunc,cbFunc,cFragments,pVaFragment,pLenFragment) \
( (This)->lpVtbl -> functionFragmentsForVA(This,vaFunc,cbFunc,cFragments,pVaFragment,pLenFragment) )
#endif /* COBJMACROS */ #endif /* COBJMACROS */

View File

@ -197,8 +197,6 @@ public:
virtual HRESULT STDMETHODCALLTYPE Clone(IStream**) { return E_NOTIMPL; } virtual HRESULT STDMETHODCALLTYPE Clone(IStream**) { return E_NOTIMPL; }
}; };
volatile LONG PDBDiaFile::m_sbInitialized = 0;
template<typename T> template<typename T>
class ScopedDiaType class ScopedDiaType
{ {
@ -243,26 +241,11 @@ PDBDiaFile::~PDBDiaFile()
bool PDBDiaFile::initLibrary() bool PDBDiaFile::initLibrary()
{ {
if(m_sbInitialized == 1) return SUCCEEDED(CoInitialize(nullptr));
return true;
LONG isInitialized = InterlockedCompareExchange(&m_sbInitialized, 1, 0);
if(isInitialized != 0)
return false;
HRESULT hr = CoInitialize(nullptr);
#ifdef _DEBUG
assert(SUCCEEDED(hr));
#endif
return true;
} }
bool PDBDiaFile::shutdownLibrary() bool PDBDiaFile::shutdownLibrary()
{ {
LONG isInitialized = InterlockedCompareExchange(&m_sbInitialized, 0, 1);
if(isInitialized != 1)
return false;
CoUninitialize(); CoUninitialize();
return true; return true;
} }
@ -274,6 +257,9 @@ bool PDBDiaFile::open(const char* file, uint64_t loadAddress, DiaValidationData_
bool PDBDiaFile::open(const wchar_t* file, uint64_t loadAddress, DiaValidationData_t* validationData) bool PDBDiaFile::open(const wchar_t* file, uint64_t loadAddress, DiaValidationData_t* validationData)
{ {
if(!initLibrary())
return false;
if(isOpen()) if(isOpen())
{ {
#if 1 // Enable for validation purpose. #if 1 // Enable for validation purpose.
@ -285,24 +271,16 @@ bool PDBDiaFile::open(const wchar_t* file, uint64_t loadAddress, DiaValidationDa
wchar_t fileExt[MAX_PATH] = { 0 }; wchar_t fileExt[MAX_PATH] = { 0 };
wchar_t fileDir[MAX_PATH] = { 0 }; wchar_t fileDir[MAX_PATH] = { 0 };
HRESULT hr; HRESULT hr = REGDB_E_CLASSNOTREG;
hr = CoCreateInstance(__uuidof(DiaSource), NULL, CLSCTX_INPROC_SERVER, __uuidof(IDiaDataSource), (LPVOID*)&m_dataSource); hr = CoCreateInstance(__uuidof(DiaSource), NULL, CLSCTX_INPROC_SERVER, __uuidof(IDiaDataSource), (LPVOID*)&m_dataSource);
if(testError(hr) || m_dataSource == nullptr) if(testError(hr) || m_dataSource == nullptr)
{ {
if(hr == REGDB_E_CLASSNOTREG) if(hr == REGDB_E_CLASSNOTREG)
{ {
hr = NoRegCoCreate(L"msdia100.dll", __uuidof(DiaSource), __uuidof(IDiaDataSource), (LPVOID*)&m_dataSource); hr = NoRegCoCreate(L"msdia140.dll", __uuidof(DiaSource), __uuidof(IDiaDataSource), (LPVOID*)&m_dataSource);
if(testError(hr))
{
hr = NoRegCoCreate(L"msdia90.dll", __uuidof(DiaSource), __uuidof(IDiaDataSource), (LPVOID*)&m_dataSource);
if(testError(hr))
{
hr = NoRegCoCreate(L"msdia80.dll", __uuidof(DiaSource), __uuidof(IDiaDataSource), (LPVOID*)&m_dataSource);
if(testError(hr)) if(testError(hr))
return false; return false;
} }
}
}
else else
{ {
GuiSymbolLogAdd("Unable to initialize PDBDia Library.\n"); GuiSymbolLogAdd("Unable to initialize PDBDia Library.\n");

View File

@ -29,9 +29,6 @@ private:
std::unordered_set<uint32_t> visited; std::unordered_set<uint32_t> visited;
}; };
private:
static volatile long m_sbInitialized;
private: private:
IStream* m_stream; IStream* m_stream;
IDiaDataSource* m_dataSource; IDiaDataSource* m_dataSource;

View File

@ -29,11 +29,6 @@ static void SetThreadDescription(HANDLE hThread, WString name)
bool SymbolSourceDIA::loadPDB(const std::string & path, duint imageBase, duint imageSize, DiaValidationData_t* validationData) bool SymbolSourceDIA::loadPDB(const std::string & path, duint imageBase, duint imageSize, DiaValidationData_t* validationData)
{ {
if(!PDBDiaFile::initLibrary())
{
return false;
}
PDBDiaFile pdb; // Instance used for validation only. PDBDiaFile pdb; // Instance used for validation only.
_isOpen = pdb.open(path.c_str(), 0, validationData); _isOpen = pdb.open(path.c_str(), 0, validationData);
#if 1 // Async loading. #if 1 // Async loading.
@ -105,7 +100,7 @@ bool SymbolSourceDIA::loadSymbolsAsync()
} }
DWORD lastUpdate = 0; DWORD lastUpdate = 0;
DWORD loadStart = GetTickCount64(); DWORD loadStart = GetTickCount();
PDBDiaFile::Query_t query; PDBDiaFile::Query_t query;
query.collectSize = true; query.collectSize = true;
@ -195,10 +190,10 @@ bool SymbolSourceDIA::loadSymbolsAsync()
std::sort(_symNameMap.begin(), _symNameMap.end()); std::sort(_symNameMap.begin(), _symNameMap.end());
} }
DWORD64 ms = GetTickCount64() - loadStart; DWORD ms = GetTickCount() - loadStart;
double secs = (double)ms / 1000.0; double secs = (double)ms / 1000.0;
GuiSymbolLogAdd(StringUtils::sprintf("Loaded %d symbols in %.03f\n", _symAddrs.size(), secs).c_str()); GuiSymbolLogAdd(StringUtils::sprintf("[%p] Loaded %d symbols in %.03fs\n", _imageBase, _symAddrs.size(), secs).c_str());
//TODO: make beautiful //TODO: make beautiful
ListInfo blub; ListInfo blub;
@ -228,9 +223,7 @@ bool SymbolSourceDIA::loadSourceLinesAsync()
return false; return false;
} }
GuiSymbolLogAdd(StringUtils::sprintf("Loading Source lines...\n").c_str()); DWORD lineLoadStart = GetTickCount();
DWORD64 lineLoadStart = GetTickCount64();
const size_t rangeSize = 1024 * 1024; const size_t rangeSize = 1024 * 1024;
@ -291,10 +284,10 @@ bool SymbolSourceDIA::loadSourceLinesAsync()
if(_requiresShutdown) if(_requiresShutdown)
return false; return false;
DWORD64 ms = GetTickCount64() - lineLoadStart; DWORD ms = GetTickCount() - lineLoadStart;
double secs = (double)ms / 1000.0; double secs = (double)ms / 1000.0;
GuiSymbolLogAdd(StringUtils::sprintf("Loaded %d line infos in %.03f\n", _lines.size(), secs).c_str()); GuiSymbolLogAdd(StringUtils::sprintf("[%p] Loaded %d line infos in %.03fs\n", _imageBase, _lines.size(), secs).c_str());
GuiUpdateAllViews(); GuiUpdateAllViews();

View File

@ -111,6 +111,9 @@
<Filter Include="Header Files\Third Party\WinInet-Downloader"> <Filter Include="Header Files\Third Party\WinInet-Downloader">
<UniqueIdentifier>{cdf955c6-b066-4b06-87f0-7a02b9bbfc55}</UniqueIdentifier> <UniqueIdentifier>{cdf955c6-b066-4b06-87f0-7a02b9bbfc55}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Source Files\Third Party\msdia">
<UniqueIdentifier>{dc4f0ea0-8d28-4d9e-a8ac-901dd274787d}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="main.cpp"> <ClCompile Include="main.cpp">
@ -449,15 +452,15 @@
<ClCompile Include="pdbdiafile.cpp"> <ClCompile Include="pdbdiafile.cpp">
<Filter>Source Files\Symbols</Filter> <Filter>Source Files\Symbols</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="msdia\diacreate.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="symbolsourcedia.cpp"> <ClCompile Include="symbolsourcedia.cpp">
<Filter>Source Files\Symbols</Filter> <Filter>Source Files\Symbols</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="WinInet-Downloader\downslib.c"> <ClCompile Include="WinInet-Downloader\downslib.c">
<Filter>Source Files\Third Party\WinInet-Downloader</Filter> <Filter>Source Files\Third Party\WinInet-Downloader</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="msdia\diacreate.cpp">
<Filter>Source Files\Third Party\msdia</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="dbghelp\dbghelp.h"> <ClInclude Include="dbghelp\dbghelp.h">