📄 dia2.idl
字号:
[id(0), helpstring("Return the segment for the given index.")]
HRESULT Item([in] DWORD index, [out, retval]IDiaSegment **segment);
HRESULT Next(
[in] ULONG celt,
[out] IDiaSegment ** rgelt,
[out] ULONG * pceltFetched
);
HRESULT Skip(
[in] ULONG celt);
HRESULT Reset();
HRESULT Clone(
[out] IDiaEnumSegments **ppenum);
}
[
object,
uuid(1994DEB2-2C82-4b1d-A57F-AFF424D54A68),
local,
helpstring("IDiaEnumSectionContribs Interface"),
pointer_default(unique)
]
interface IDiaEnumSectionContribs: IUnknown
{
PROPERTY_RO( IUnknown*, _NewEnum, DISPID_NEWENUM, "IEnumVARIANT version of IDiaEnumSectionContribs." );
PROPERTY_RO( LONG, Count, 1, "Number of section contributions." );
[id(0), helpstring("Return the section contribution for the given index.")]
HRESULT Item([in] DWORD index, [out, retval]IDiaSectionContrib **section);
HRESULT Next(
[in] ULONG celt,
[out] IDiaSectionContrib ** rgelt,
[out] ULONG * pceltFetched
);
HRESULT Skip(
[in] ULONG celt);
HRESULT Reset();
HRESULT Clone(
[out] IDiaEnumSectionContribs **ppenum);
}
[
object,
uuid(9FC77A4B-3C1C-44ed-A798-6C1DEEA53E1F),
local,
helpstring("IDiaEnumFrameData Interface"),
pointer_default(unique)
]
interface IDiaEnumFrameData: IUnknown
{
PROPERTY_RO( IUnknown*, _NewEnum, DISPID_NEWENUM, "IEnumVARIANT version of IDiaEnumFrameData." );
PROPERTY_RO( LONG, Count, 1, "Number of frames." );
[id(0), helpstring("Return the frame for the given index.")]
HRESULT Item([in] DWORD index, [out, retval]IDiaFrameData **frame);
HRESULT Next(
[in] ULONG celt,
[out] IDiaFrameData ** rgelt,
[out] ULONG * pceltFetched
);
HRESULT Skip(
[in] ULONG celt);
HRESULT Reset();
HRESULT Clone(
[out] IDiaEnumFrameData **ppenum);
//
// The following two by-address lookups do not reposition the enumeration
//
[helpstring("Return the frame for the given relative virtual address.")]
HRESULT frameByRVA(
[in] DWORD relativeVirtualAddress,
[out, retval]IDiaFrameData **frame);
[helpstring("Return the frame for the given virtual address.")]
HRESULT frameByVA(
[in] ULONGLONG virtualAddress,
[out, retval]IDiaFrameData **frame);
}
[
object,
uuid(486943E8-D187-4a6b-A3C4-291259FFF60D),
local,
helpstring("IDiaEnumDebugStreamData Interface"),
pointer_default(unique)
]
interface IDiaEnumDebugStreamData: IUnknown
{
PROPERTY_RO( IUnknown*, _NewEnum, DISPID_NEWENUM, "IEnumVARIANT version of IDiaEnumDebugStreamData." );
PROPERTY_RO( LONG, Count, 1, "Number of elements in the stream." );
PROPERTY_RO( BSTR, name, 2, "Stream name." );
[id(0), helpstring("Return the element for the given index.")]
HRESULT Item(
[in] DWORD index,
[in] DWORD cbData,
[out] DWORD *pcbData,
[out, size_is(cbData),
length_is(*pcbData)] BYTE data[]
);
HRESULT Next(
[in] ULONG celt,
[in] DWORD cbData,
[out] DWORD *pcbData,
[out, size_is(cbData),
length_is(*pcbData)] BYTE data[],
[out] ULONG * pceltFetched
);
HRESULT Skip(
[in] ULONG celt);
HRESULT Reset();
HRESULT Clone(
[out] IDiaEnumDebugStreamData **ppenum);
}
[
object,
uuid(08CBB41E-47A6-4f87-92F1-1C9C87CED044),
local,
helpstring("IDiaEnumDebugStreams Interface"),
pointer_default(unique)
]
interface IDiaEnumDebugStreams: IUnknown
{
PROPERTY_RO( IUnknown*, _NewEnum, DISPID_NEWENUM, "IEnumVARIANT version of IDiaEnumDebugStreams." );
PROPERTY_RO( LONG, Count, 1, "Number of streams." );
[id(0), helpstring("Return the stream for the given index.")]
HRESULT Item([in] VARIANT index, [out, retval]IDiaEnumDebugStreamData **stream);
HRESULT Next(
[in] ULONG celt,
[out] IDiaEnumDebugStreamData ** rgelt,
[out] ULONG * pceltFetched
);
HRESULT Skip(
[in] ULONG celt);
HRESULT Reset();
HRESULT Clone(
[out] IDiaEnumDebugStreams **ppenum);
}
struct DiaAddressMapEntry
{
DWORD rva;
DWORD rvaTo;
};
[
object,
uuid(B62A2E7A-067A-4ea3-B598-04C09717502C),
local,
helpstring("IDiaAddressMap Interface"),
pointer_default(unique)
]
interface IDiaAddressMap: IUnknown
{
PROPERTY_RW( BOOL, addressMapEnabled, 3, "Enable address translations." );
PROPERTY_RW( BOOL, relativeVirtualAddressEnabled, 4, "Enable relative virtual address computations.");
PROPERTY_RW( DWORD, imageAlign, 5, "Original image alignment." );
HRESULT set_imageHeaders(
[in] DWORD cbData,
[in, size_is(cbData)] BYTE data[], // actual type is IMAGE_SECTION_HEADER[]
[in] BOOL originalHeaders ); // true: headers are original, that is, they match the debug symbols
// false: headers are current, that is, they match the image
HRESULT set_addressMap(
[in] DWORD cData, // number of entries in rva map
[in, size_is(cData)] struct DiaAddressMapEntry data[], // rva map
[in] BOOL imageToSymbols ); // true: map from image to symbols (omapt)
// false: map from symbols to image (omapf)
};
[
object,
uuid(67138B34-79CD-4b42-B74A-A18ADBB799DF),
local,
helpstring("IDiaSession Interface"),
pointer_default(unique)
]
interface IDiaSession: IUnknown
{
PROPERTY_RW( ULONGLONG, loadAddress, 1, "Dll/Exe load address." );
PROPERTY_RO( IDiaSymbol*, globalScope, 2, "Global scope (exe) symbol." );
HRESULT getEnumTables(
[out] IDiaEnumTables** ppEnumTables );
HRESULT getSymbolsByAddr(
[out] IDiaEnumSymbolsByAddr** ppEnumbyAddr );
//
// Queries that return sets of symbols
//
HRESULT findChildren(
[in] IDiaSymbol* parent,
[in] enum SymTagEnum symtag,
[in] LPCOLESTR name,
[in] DWORD compareFlags,
[out] IDiaEnumSymbols** ppResult );
HRESULT findSymbolByAddr (
[in] DWORD isect,
[in] DWORD offset,
[in] enum SymTagEnum symtag,
[out] IDiaSymbol** ppSymbol );
HRESULT findSymbolByRVA (
[in] DWORD rva,
[in] enum SymTagEnum symtag,
[out] IDiaSymbol** ppSymbol );
HRESULT findSymbolByVA (
[in] ULONGLONG va,
[in] enum SymTagEnum symtag,
[out] IDiaSymbol** ppSymbol );
HRESULT findSymbolByToken (
[in] ULONG token,
[in] enum SymTagEnum symtag,
[out] IDiaSymbol** ppSymbol );
HRESULT symsAreEquiv(
[in] IDiaSymbol* symbolA,
[in] IDiaSymbol* symbolB );
HRESULT symbolById(
[in] DWORD id,
[out] IDiaSymbol** ppSymbol );
HRESULT findSymbolByRVAEx (
[in] DWORD rva,
[in] enum SymTagEnum symtag,
[out] IDiaSymbol** ppSymbol,
[out] long* displacement );
HRESULT findSymbolByVAEx (
[in] ULONGLONG va,
[in] enum SymTagEnum symtag,
[out] IDiaSymbol** ppSymbol,
[out] long* displacement );
//
// Queries that return source file results
//
HRESULT findFile(
[in] IDiaSymbol* pCompiland,
[in] LPCOLESTR name,
[in] DWORD compareFlags,
[out] IDiaEnumSourceFiles** ppResult );
HRESULT findFileById(
[in] DWORD uniqueId,
[out] IDiaSourceFile** ppResult );
//
// Queries that return line number results
//
HRESULT findLines(
[in] IDiaSymbol* compiland,
[in] IDiaSourceFile* file,
[out] IDiaEnumLineNumbers** ppResult );
HRESULT findLinesByAddr(
[in] DWORD seg,
[in] DWORD offset,
[in] DWORD length,
[out] IDiaEnumLineNumbers** ppResult );
HRESULT findLinesByRVA(
[in] DWORD rva,
[in] DWORD length,
[out] IDiaEnumLineNumbers** ppResult );
HRESULT findLinesByVA(
[in] ULONGLONG va,
[in] DWORD length,
[out] IDiaEnumLineNumbers** ppResult );
HRESULT findLinesByLinenum(
[in] IDiaSymbol* compiland,
[in] IDiaSourceFile* file,
[in] DWORD linenum,
[in] DWORD column,
[out] IDiaEnumLineNumbers** ppResult );
//
// Queries that return injected source
//
HRESULT findInjectedSource(
[in] LPCOLESTR srcFile,
[out] IDiaEnumInjectedSources** ppResult );
//
// Deprecated interfaces
//
HRESULT getEnumDebugStreams(
[out] IDiaEnumDebugStreams** ppEnumDebugStreams );
};
/*
* Table Columns
*
* Symbols - a symbol will have values in some subset of the fields
*/
[
object,
uuid(72827A48-D320-4eaf-8436-548ADE47D5E5),
local,
helpstring("IDiaSymbol Interface"),
pointer_default(unique)
]
interface IDiaSymbol: IUnknown
{
PROPERTY_RO( DWORD, symIndexId, 0, "Unique symbol identifier." );
PROPERTY_RO( DWORD, symTag, 1, "Symbol kind tag." );
PROPERTY_RO( BSTR, name, 2, "Name" );
PROPERTY_RO( IDiaSymbol*, lexicalParent, 3, "Lexical parent symbol.");
PROPERTY_RO( IDiaSymbol*, classParent, 4, ".");
PROPERTY_RO( IDiaSymbol*, type, 5, ".");
PROPERTY_RO( DWORD, dataKind, 6, ".");
PROPERTY_RO( DWORD, locationType, 7, ".");
PROPERTY_RO( DWORD, addressSection, 8, ".");
PROPERTY_RO( DWORD, addressOffset, 9, ".");
PROPERTY_RO( DWORD, relativeVirtualAddress, 10, ".");
PROPERTY_RO( ULONGLONG, virtualAddress, 11, ".");
PROPERTY_RO( DWORD, registerId, 12, ".");
PROPERTY_RO( LONG, offset, 13, ".");
PROPERTY_RO( ULONGLONG, length, 14, ".");
PROPERTY_RO( DWORD, slot, 15, ".");
PROPERTY_RO( BOOL, volatileType, 16, ".");
PROPERTY_RO( BOOL, constType, 17, ".");
PROPERTY_RO( BOOL, unalignedType, 18, ".");
PROPERTY_RO( DWORD, access, 19, ".");
PROPERTY_RO( BSTR, libraryName, 20, ".");
PROPERTY_RO( DWORD, platform, 21, ".");
PROPERTY_RO( DWORD, language, 22, ".");
PROPERTY_RO( BOOL, editAndContinueEnabled, 23, ".");
PROPERTY_RO( DWORD, frontEndMajor, 24, ".");
PROPERTY_RO( DWORD, frontEndMinor, 25, ".");
PROPERTY_RO( DWORD, frontEndBuild, 26, ".");
PROPERTY_RO( DWORD, backEndMajor, 27, ".");
PROPERTY_RO( DWORD, backEndMinor, 28, ".");
PROPERTY_RO( DWORD, backEndBuild, 29, ".");
PROPERTY_RO( BSTR, sourceFileName, 30, ".");
PROPERTY_RO( BSTR, objectFileName, 31, ".");
PROPERTY_RO( DWORD, thunkOrdinal, 32, ".");
PROPERTY_RO( LONG, thisAdjust, 33, ".");
PROPERTY_RO( DWORD, virtualBaseOffset, 34, ".");
PROPERTY_RO( BOOL, virtual, 35, ".");
PROPERTY_RO( BOOL, intro, 36, ".");
PROPERTY_RO( BOOL, pure, 37, ".");
PROPERTY_RO( DWORD, callingConvention, 38, ".");
PROPERTY_RO( VARIANT, value, 39, ".");
PROPERTY_RO( DWORD, baseType, 40, ".");
PROPERTY_RO( DWORD, token, 41, ".");
PROPERTY_RO( DWORD, timeStamp, 42, ".");
PROPERTY_RO( GUID, guid, 43, ".");
PROPERTY_RO( BSTR, symbolsFileName, 44, ".");
PROPERTY_RO( BOOL, reference, 46, ".");
PROPERTY_RO( DWORD, count, 47, ".");
PROPERTY_RO( DWORD, bitPosition, 49, ".");
PROPERTY_RO( IDiaSymbol*, arrayIndexType, 50, ".");
PROPERTY_RO( BOOL, packed, 51, ".");
PROPERTY_RO( BOOL, constructor, 52, ".");
PROPERTY_RO( BOOL, overloadedOperator, 53, ".");
PROPERTY_RO( BOOL, nested, 54, ".");
PROPERTY_RO( BOOL, hasNestedTypes, 55, ".");
PROPERTY_RO( BOOL, hasAssignmentOperator, 56, ".");
PROPERTY_RO( BOOL, hasCastOperator, 57, ".");
PROPERTY_RO( BOOL, scoped, 58, ".");
PROPERTY_RO( BOOL, virtualBaseClass, 59, ".");
PROPERTY_RO( BOOL, indirectVirtualBaseClass, 60, ".");
PROPERTY_RO( LONG, virtualBasePointerOffset, 61, ".");
PROPERTY_RO( IDiaSymbol*, virtualTableShape, 62, ".");
PROPERTY_RO( DWORD, lexicalParentId, 64, "Lexical parent symbol.");
PROPERTY_RO( DWORD, classParentId, 65, ".");
PROPERTY_RO( DWORD, typeId, 66, ".");
PROPERTY_RO( DWORD, arrayIndexTypeId, 67, ".");
PROPERTY_RO( DWORD, virtualTableShapeId, 68, ".");
PROPERTY_RO( BOOL, code, 69, "Symbol refers to a code address." );
PROPERTY_RO( BOOL, function, 70, "Symbol refers to a function." );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -