IDiaSymbol
Описывает свойства экземпляра символов.
Синтаксис
IDiaSymbol : IUnknown
Методы в алфавитном порядке
В следующей таблице показаны методы IDiaSymbol
.
Примечание.
Символы возвращают значимые данные только для некоторых из этих методов в зависимости от типа символа. Если метод возвращается S_OK
, этот метод вернул значимые данные.
Метод | Description |
---|---|
IDiaSymbol::findChildren | Извлекает все дочерние элементы символа. |
IDiaSymbol::findChildrenEx | Извлекает дочерние элементы символа. Этот метод является расширенной версией IDiaSymbol::findChildren. |
IDiaSymbol::findChildrenExByAddr | Извлекает дочерние элементы символа, допустимые по указанному адресу. |
IDiaSymbol::findChildrenExByRVA | Извлекает дочерние элементы символа, допустимые по указанному относительному виртуальному адресу (RVA). |
IDiaSymbol::findChildrenExByVA | Извлекает дочерние элементы символа, допустимые по указанному виртуальному адресу. |
IDiaSymbol::findInlineFramesByAddr | Извлекает перечисление, позволяющее клиенту выполнять итерацию по всем встроенным кадрам в заданном адресе. |
IDiaSymbol::findInlineFramesByRVA | Извлекает перечисление, позволяющее клиенту выполнять итерацию по всем встроенным кадрам на указанном относительном виртуальном адресе (RVA). |
IDiaSymbol::findInlineFramesByVA | Извлекает перечисление, позволяющее клиенту выполнять итерацию по всем встроенным кадрам на указанном виртуальном адресе (VA). |
IDiaSymbol::findInlineeLines | Извлекает перечисление, позволяющее клиенту выполнять итерацию по номеру строки всех функций, которые встраиваются прямо или косвенно в этот символ. |
IDiaSymbol::findInlineeLinesByAddr | Извлекает перечисление, позволяющее клиенту выполнять итерацию по номеру строки всех функций, которые встраиваются прямо или косвенно в этот символ в пределах указанного диапазона адресов. |
IDiaSymbol::findInlineeLinesByRVA | Извлекает перечисление, позволяющее клиенту выполнять итерацию по номеру строки всех функций, которые встраиваются напрямую или косвенно в этот символ в пределах указанного относительного виртуального адреса (RVA). |
IDiaSymbol::findInlineeLinesByVA | Извлекает перечисление, позволяющее клиенту выполнять итерацию по номеру строки всех функций, которые встраиваются напрямую или косвенно в этот символ в пределах указанного виртуального адреса (VA). |
IDiaSymbol::findSymbolsByRVAForAcceleratorPointerTag | Учитывая соответствующее значение тега, этот метод возвращает перечисление символов, содержащихся в этой функции заглушки по указанному относительному виртуальному адресу. |
IDiaSymbol::findSymbolsForAcceleratorPointerTag | Возвращает количество тегов указателя акселератора в заглушку C++ AMP. |
IDiaSymbol::get_acceleratorPointerTags | Возвращает все значения тегов указателя ускорителя, соответствующие заглушку акселератора C++ AMP. |
IDiaSymbol::get_access | Извлекает модификатор доступа члена класса. |
IDiaSymbol::get_addressOffset | Извлекает часть смещения расположения адреса. |
IDiaSymbol::get_addressSection | Извлекает часть раздела расположения адреса. |
IDiaSymbol::get_addressTaken | Извлекает флаг, указывающий, ссылается ли другой символ на этот адрес. |
IDiaSymbol::get_age | Извлекает значение возраста базы данных программы. |
IDiaSymbol::get_arrayIndexType | Извлекает идентификатор символа типа индекса массива. |
IDiaSymbol::get_arrayIndexTypeId | Извлекает идентификатор типа индекса массива символа. |
IDiaSymbol::get_backEndMajor | Извлекает номер основной версии внутреннего сервера. |
IDiaSymbol::get_backEndMinor | Извлекает дополнительный номер версии внутреннего сервера. |
IDiaSymbol::get_backEndBuild | Извлекает внутренний номер сборки. |
IDiaSymbol::get_baseDataOffset | Извлекает смещение базовых данных. |
IDiaSymbol::get_baseDataSlot | Извлекает базовый слот данных. |
IDiaSymbol::get_baseSymbol | Извлекает символ, из которого основан указатель. |
IDiaSymbol::get_baseSymbolId | Извлекает идентификатор символа, из которого основан указатель. |
IDiaSymbol::get_baseType | Извлекает тег типа простого типа. |
IDiaSymbol::get_bitPosition | Извлекает битовое положение расположения. |
IDiaSymbol::get_builtInKind | Извлекает встроенный тип типа HLSL. |
IDiaSymbol::get_callingConvention | Возвращает индикатор соглашения о вызове метода. |
IDiaSymbol::get_classParent | Извлекает ссылку на родительский элемент класса символа. |
IDiaSymbol::get_classParentId | Извлекает родительский идентификатор класса символа. |
IDiaSymbol::get_code | Извлекает флаг, указывающий, ссылается ли символ на адрес кода. |
IDiaSymbol::get_compilerGenerated | Извлекает флаг, указывающий, был ли символ создан компилятором. |
IDiaSymbol::get_compilerName | Извлекает имя компилятора, используемого для создания компилятора. |
IDiaSymbol::get_constructor | Извлекает флаг, указывающий, имеет ли определяемый пользователем тип данных конструктор. |
IDiaSymbol::get_container | Извлекает содержащий символ этого символа. |
IDiaSymbol::get_constType | Извлекает флаг, указывающий, является ли определяемый пользователем тип данных константой. |
IDiaSymbol::get_count | Извлекает количество элементов в списке или массиве. |
IDiaSymbol::get_countLiveRanges | Извлекает количество допустимых диапазонов адресов, связанных с локальным символом. |
IDiaSymbol::get_customCallingConvention | Извлекает флаг, указывающий, использует ли функция настраиваемое соглашение о вызовах. |
IDiaSymbol::get_dataBytes | Извлекает байты данных символа OEM. |
IDiaSymbol::get_dataKind | Извлекает классификацию переменных символа данных. |
IDiaSymbol::get_editAndContinueEnabled | Извлекает флаг, описывающий функции скомпилированной программы или единицы редактирования и продолжения. |
IDiaSymbol::get_farReturn | Извлекает флаг, указывающий, использует ли функция далекое возвращение. |
IDiaSymbol::get_frontEndMajor | Извлекает номер основной версии переднего плана. |
IDiaSymbol::get_frontEndMinor | Извлекает дополнительный номер версии внешнего интерфейса. |
IDiaSymbol::get_frontEndBuild | Извлекает номер сборки внешнего интерфейса. |
IDiaSymbol::get_function | Извлекает флаг, указывающий, относится ли открытый символ к функции. |
IDiaSymbol::get_guid | Извлекает GUID символа. |
IDiaSymbol::get_hasAlloca | Извлекает флаг, указывающий, содержит ли функция вызов alloca . |
IDiaSymbol::get_hasAssignmentOperator | Извлекает флаг, указывающий, определен ли определяемый пользователем тип данных какие-либо операторы назначения. |
IDiaSymbol::get_hasCastOperator | Извлекает флаг, указывающий, определен ли определяемый пользователем тип данных какие-либо операторы приведения. |
IDiaSymbol::get_hasDebugInfo | Извлекает флаг, указывающий, содержит ли компилятор любые сведения об отладке. |
IDiaSymbol::get_hasEH | Извлекает флаг, указывающий, имеет ли функция обработчик исключений в стиле C++. |
IDiaSymbol::get_hasEHa | Извлекает флаг, указывающий, имеет ли функция асинхронный обработчик исключений. |
IDiaSymbol::get_hasInlAsm | Извлекает флаг, указывающий, имеет ли функция встроенную сборку. |
IDiaSymbol::get_hasLongJump | Извлекает флаг, указывающий, содержит ли функция команду longjmp (часть обработки исключений в стиле C). |
IDiaSymbol::get_hasManagedCode | Извлекает флаг, указывающий, содержит ли модуль управляемый код. |
IDiaSymbol::get_hasNestedTypes | Извлекает флаг, указывающий, имеет ли определяемый пользователем тип данных определения вложенных типов. |
IDiaSymbol::get_hasSecurityChecks | Извлекает флаг, указывающий, имеет ли функция или компилятор скомпилированные проверка безопасности (с помощью переключателя компилятора /GS (проверка безопасности буфера). |
IDiaSymbol::get_hasSEH | Извлекает флаг, указывающий, имеет ли функция структурированную обработку исключений в стиле Win32. |
IDiaSymbol::get_hasSetJump | Извлекает флаг, указывающий, содержит ли функция команду setjmp. |
IDiaSymbol::get_indirectVirtualBaseClass | Извлекает флаг, указывающий, является ли определяемый пользователем тип данных косвенным виртуальным базовым классом. |
IDiaSymbol::get_InlSpec | Извлекает флаг, указывающий, помечена ли функция встроенным атрибутом. |
IDiaSymbol::get_interruptReturn | Извлекает флаг, указывающий, имеет ли функция возврат из инструкции прерывания. |
IDiaSymbol::get_intro | Извлекает флаг, указывающий, является ли функция виртуальной функцией базового класса. |
IDiaSymbol::get_isAcceleratorGroupSharedLocal | Извлекает флаг, указывающий, соответствует ли символ группе общей локальной переменной в коде, скомпилированном для акселератора C++ AMP. |
IDiaSymbol::get_isAcceleratorPointerTagLiveRange | Извлекает флаг, указывающий, соответствует ли символ диапазона определений компоненту тега переменной указателя в коде, скомпилированном для акселератора C++ AMP. Символ диапазона определений — это расположение переменной для диапазона адресов. |
IDiaSymbol::get_isAcceleratorStubFunction | Указывает, соответствует ли символ функции верхнего уровня для шейдера, скомпилированного для акселератора, соответствующего вызову parallel_for_each . |
IDiaSymbol::get_isAggregated | Извлекает флаг, указывающий, являются ли данные частью агрегата множества символов. |
IDiaSymbol::get_isCTypes | Извлекает флаг, указывающий, содержит ли файл символов типы C. |
IDiaSymbol::get_isCVTCIL | Извлекает флаг, указывающий, был ли модуль преобразован из common Intermediate Language (CIL) в машинный код. |
IDiaSymbol::get_isDataAligned | Извлекает флаг, указывающий, соответствуют ли элементы определяемого пользователем типа данных определенной границе. |
IDiaSymbol::get_isHLSLData | Указывает, представляет ли этот символ данные языка шейдера высокого уровня (HLSL). |
IDiaSymbol::get_isHotpatchable | Извлекает флаг, указывающий, компилируется ли модуль с параметром компилятора /hotpatch (Create Hotpatchable Image). |
IDiaSymbol::get_isLTCG | Извлекает флаг, указывающий, связан ли управляемый компилятор с LTCG компоновщика. |
IDiaSymbol::get_isMatrixRowMajor | Указывает, является ли матрица основной строкой. |
IDiaSymbol::get_isMSILNetmodule | Извлекает флаг, указывающий, является ли управляемый компилятор .netmodule (содержащий только метаданные). |
IDiaSymbol::get_isMultipleInheritance | Указывает, указывает, указывает ли this указатель на член данных с несколькими наследованием. |
IDiaSymbol::get_isNaked | Извлекает флаг, указывающий, имеет ли функция голый атрибут. |
IDiaSymbol::get_isOptimizedAway | Указывает, оптимизирована ли переменная. |
IDiaSymbol::get_isPointerBasedOnSymbolValue | Указывает, основан ли this указатель на значение символа. |
IDiaSymbol::get_isPointerToDataMember | Указывает, является ли этот символ указателем на член данных. |
IDiaSymbol::get_isPointerToMemberFunction | Указывает, является ли этот символ указателем на функцию-член. |
IDiaSymbol::get_isReturnValue | Указывает, несет ли переменная возвращаемое значение. |
IDiaSymbol::get_isSdl | Указывает, компилируется ли модуль с параметром /SDL. |
IDiaSymbol::get_isSingleInheritance | Указывает, указывает, указывает ли this указатель на элемент данных с одним наследованием. |
IDiaSymbol::get_isSplitted | Извлекает флаг, указывающий, разделены ли данные на агрегат отдельных символов. |
IDiaSymbol::get_isStatic | Извлекает флаг, указывающий, является ли функция или слой thunk статическим. |
IDiaSymbol::get_isStripped | Извлекает флаг, указывающий, были ли закрытые символы удалены из файла символов. |
IDiaSymbol::get_isVirtualInheritance | Указывает, указывает, указывает ли this указатель на член данных с виртуальным наследованием. |
IDiaSymbol::get_language | Извлекает язык источника. |
IDiaSymbol::get_length | Извлекает количество байтов памяти, используемых объектом, представленным этим символом. |
IDiaSymbol::get_lexicalParent | Извлекает ссылку на лексический родительский элемент символа. |
IDiaSymbol::get_lexicalParentId | Извлекает лексический родительский идентификатор символа. |
IDiaSymbol::get_libraryName | Извлекает имя файла библиотеки или файла объектов, из которого был загружен объект. |
IDiaSymbol::get_liveRangeLength | Возвращает длину диапазона адресов, в котором допустимы локальный символ. |
IDiaSymbol::get_liveRangeStartAddressSection | Возвращает часть раздела начального диапазона адресов, в котором допустимы локальный символ. |
IDiaSymbol::get_liveRangeStartAddressOffset | Возвращает часть смещения начального диапазона адресов, в которой допустимы локальный символ. |
IDiaSymbol::get_liveRangeStartRelativeVirtualAddress | Возвращает начало диапазона адресов, в котором допустимы локальный символ. |
IDiaSymbol::get_locationType | Извлекает тип расположения символа данных. |
IDiaSymbol::get_lowerBound | Извлекает нижнюю границу измерения массива FORTRAN. |
IDiaSymbol::get_lowerBoundId | Извлекает идентификатор символа нижней границы измерения массива FORTRAN. |
IDiaSymbol::get_machineType | Извлекает тип целевого ЦП. |
IDiaSymbol::get_managed | Извлекает флаг, указывающий, относится ли символ к управляемому коду. |
IDiaSymbol::get_memorySpaceKind | Извлекает тип пространства памяти. |
IDiaSymbol::get_msil | Извлекает флаг, указывающий, относится ли символ к коду MICROSOFT Intermediate Language (MSIL). |
IDiaSymbol::get_name | Извлекает имя символа. |
IDiaSymbol::get_nested | Извлекает флаг, указывающий, вложен ли определяемый пользователем тип данных. |
IDiaSymbol::get_noInline | Извлекает флаг, указывающий, помечена ли функция атрибутом noinline . |
IDiaSymbol::get_noReturn | Извлекает флаг, указывающий, объявлена ли функция с атрибутом noreturn . |
IDiaSymbol::get_noStackOrdering | Извлекает флаг, указывающий, не удалось ли выполнить упорядочивание стека в рамках буфера стека проверка. |
IDiaSymbol::get_notReached | Извлекает флаг, указывающий, не достигнута ли функция или метка. |
IDiaSymbol::get_numberOfAcceleratorPointerTags | Возвращает количество тегов указателя акселератора в заглушку C++ AMP. |
IDiaSymbol::get_numberOfModifiers | Извлекает количество модификаторов, применяемых к исходному типу. |
IDiaSymbol::get_numberOfRegisterIndices | Извлекает количество регистровых индексов. |
IDiaSymbol::get_numberOfRows | Извлекает количество строк в матрице. |
IDiaSymbol::get_numberOfColumns | Извлекает количество столбцов в матрице. |
IDiaSymbol::get_objectFileName | Извлекает имя файла объекта. |
IDiaSymbol::get_objectPointerType | Извлекает тип указателя объекта для метода класса. |
IDiaSymbol::get_oemId | Извлекает значение символа oemId . |
IDiaSymbol::get_oemSymbolId | Извлекает значение символа oemSymbolId . |
IDiaSymbol::get_offset | Извлекает смещение расположения символов. |
IDiaSymbol::get_optimizedCodeDebugInfo | Извлекает флаг, указывающий, содержит ли функция или метка оптимизированный код, а также сведения об отладке. |
IDiaSymbol::get_overloadedOperator | Извлекает флаг, указывающий, имеет ли определяемый пользователем тип данных перегруженные операторы. |
IDiaSymbol::get_packed | Извлекает флаг, указывающий, упакован ли определяемый пользователем тип данных. |
IDiaSymbol::get_platform | Извлекает тип платформы, для которого компилируется программа или компилятор. |
IDiaSymbol::get_pure | Извлекает флаг, указывающий, является ли функция чисто виртуальной. |
IDiaSymbol::get_rank | Извлекает ранг многомерного массива FORTRAN. |
IDiaSymbol::get_reference | Извлекает флаг, указывающий, является ли тип указателя ссылкой. |
IDiaSymbol::get_registerId | Извлекает конструктор регистра расположения. |
IDiaSymbol::get_registerType | Извлекает тип регистра. |
IDiaSymbol::get_relativeVirtualAddress | Извлекает относительный виртуальный адрес (RVA) расположения. |
IDiaSymbol::get_restrictedType | Указывает, помечен ли this указатель как ограниченный. |
IDiaSymbol::get_samplerSlot | Извлекает слот примера. |
IDiaSymbol::get_scoped | Извлекает флаг, указывающий, отображается ли определяемый пользователем тип данных в нелогическом лексическом область. |
IDiaSymbol::get_signature | Извлекает значение подписи символа. |
IDiaSymbol::get_sizeInUdt | Извлекает размер члена определяемого пользователем типа. |
IDiaSymbol::get_slot | Извлекает номер слота расположения. |
IDiaSymbol::get_sourceFileName | Извлекает имя файла исходного файла. |
IDiaSymbol::getSrcLineOnTypeDefn | Извлекает исходный файл и номер строки, указывающий, где определен определенный пользователем тип. |
IDiaSymbol::get_stride | Извлекает шаг матрицы или массива с переопределенным массивом. |
IDiaSymbol::get_subType | Извлекает подтип. |
IDiaSymbol::get_subTypeId | Извлекает идентификатор подтипа. |
IDiaSymbol::get_symbolsFileName | Извлекает имя файла, из которого были загружены символы. |
IDiaSymbol::get_symIndexId | Извлекает уникальный идентификатор символа. |
IDiaSymbol::get_symTag | Извлекает классификатор типов символов. |
IDiaSymbol::get_targetOffset | Извлекает раздел смещения целевого объекта thunk. |
IDiaSymbol::get_targetRelativeVirtualAddress | Извлекает относительный виртуальный адрес (RVA) целевого объекта thunk. |
IDiaSymbol::get_targetSection | Извлекает раздел адреса целевого объекта thunk. |
IDiaSymbol::get_targetVirtualAddress | Извлекает виртуальный адрес (VA) целевого объекта thunk. |
IDiaSymbol::get_textureSlot | Извлекает слот текстуры. |
IDiaSymbol::get_thisAdjust | Извлекает логический this адаптатор для метода. |
IDiaSymbol::get_thunkOrdinal | Извлекает тип thunk функции. |
IDiaSymbol::get_timeStamp | Извлекает метку времени базового исполняемого файла. |
IDiaSymbol::get_token | Извлекает маркер метаданных управляемой функции или переменной. |
IDiaSymbol::get_type | Извлекает ссылку на сигнатуру функции. |
IDiaSymbol::get_typeId | Извлекает идентификатор типа символа. |
IDiaSymbol::get_types | Извлекает массив значений типов, относящихся к компилятору, для этого символа. |
IDiaSymbol::get_typeIds | Извлекает массив значений идентификатора типа для конкретного компилятора для этого символа. |
IDiaSymbol::get_uavSlot | Извлекает слот uav. |
IDiaSymbol::get_udtKind | Извлекает разнообразие определяемого пользователем типа (UDT). |
IDiaSymbol::get_unalignedType | Извлекает флаг, указывающий, является ли определяемый пользователем тип данных незамеченным. |
IDiaSymbol::get_undecoratedName | Извлекает незавершенное имя декорированного или связуемого имени C++. |
IDiaSymbol::get_undecoratedNameEx | get_undecoratedName Расширение метода, извлекающего неоценённое имя на основе значения поля расширения. |
IDiaSymbol::get_unmodifiedTypeId | Получает идентификатор исходного (немодифицированного) типа. |
IDiaSymbol::get_upperBound | Извлекает верхнюю границу измерения массива FORTRAN. |
IDiaSymbol::get_upperBoundId | Извлекает идентификатор символа верхней границы измерения массива FORTRAN. |
IDiaSymbol::get_value | Извлекает значение константы. |
IDiaSymbol::get_virtual | Извлекает флаг, указывающий, является ли функция виртуальной. |
IDiaSymbol::get_virtualAddress | Извлекает виртуальный адрес (VA) расположения. |
IDiaSymbol::get_virtualBaseClass | Извлекает флаг, указывающий, является ли определяемый пользователем тип данных виртуальным базовым классом. |
IDiaSymbol::get_virtualBaseDispIndex | Извлекает индекс в таблицу смещений виртуальной базы. |
IDiaSymbol::get_virtualBaseOffset | Извлекает смещение в таблице виртуальных функций виртуальной функции. |
IDiaSymbol::get_virtualBasePointerOffset | Извлекает смещение виртуального базового указателя. |
IDiaSymbol::get_virtualBaseTableType | Извлекает тип указателя виртуальной базовой таблицы. |
IDiaSymbol::get_virtualTableShape | Извлекает интерфейс символа типа виртуальной таблицы для определяемого пользователем типа. |
IDiaSymbol::get_virtualTableShapeId | Извлекает идентификатор фигуры виртуальной таблицы символа. |
IDiaSymbol::get_volatileType | Извлекает флаг, указывающий, является ли определяемый пользователем тип данных переменным. |
Замечания
Заметки для вызывающих абонентов
Получите этот интерфейс, вызвав один из следующих методов:
Пример
В этом примере показано, как отобразить локальные переменные для функции по заданному относительному виртуальному адресу. В нем также показано, как символы разных типов связаны друг с другом.
Примечание.
CDiaBSTR
— это класс, который выполняет оболочку BSTR
и автоматически обрабатывает освобождение строки при выходе экземпляра из область.
void DumpLocalVars( DWORD rva, IDiaSession *pSession )
{
CComPtr< IDiaSymbol > pBlock;
if ( FAILED( psession->findSymbolByRVA( rva, SymTagBlock, &pBlock ) ) )
{
Fatal( "Failed to find symbols by RVA" );
}
CComPtr< IDiaSymbol > pscope;
for ( ; pBlock != NULL; )
{
CComPtr< IDiaEnumSymbols > pEnum;
// local data search
if ( FAILED( pBlock->findChildren( SymTagNull, NULL, nsNone, &pEnum ) ) )
{
Fatal( "Local scope findChildren failed" );
}
CComPtr< IDiaSymbol > pSymbol;
DWORD tag;
DWORD celt;
while ( pEnum != NULL &&
SUCCEEDED( pEnum->Next( 1, &pSymbol, &celt ) ) &&
celt == 1)
{
pSymbol->get_symTag( &tag );
if ( tag == SymTagData )
{
CDiaBSTR name;
DWORD kind;
pSymbol->get_name( &name );
pSymbol->get_dataKind( &kind );
if ( name != NULL )
wprintf_s( L"\t%s (%s)\n", name, szDataKinds[ kind ] );
}
else if ( tag == SymTagAnnotation )
{
CComPtr< IDiaEnumSymbols > pValues;
// local data search
wprintf_s( L"\tAnnotation:\n" );
if ( FAILED( pSymbol->findChildren( SymTagNull, NULL, nsNone, &pValues ) ) )
Fatal( "Annotation findChildren failed" );
pSymbol = NULL;
while ( pValues != NULL &&
SUCCEEDED( pValues->Next( 1, &pSymbol, &celt ) ) &&
celt == 1 )
{
CComVariant value;
if ( pSymbol->get_value( &value ) != S_OK )
Fatal( "No value for annotation data." );
wprintf_s( L"\t\t%ws\n", value.bstrVal );
pSymbol = NULL;
}
}
pSymbol = NULL;
}
pBlock->get_symTag( &tag );
if ( tag == SymTagFunction ) // stop when at function scope
break;
// move to lexical parent
CComPtr< IDiaSymbol > pParent;
if ( SUCCEEDED( pBlock->get_lexicalParent( &pParent ) )
&& pParent != NULL ) {
pBlock = pParent;
}
else
{
Fatal( "Finding lexical parent failed." );
}
};
}
Requirements
Header:
Dia2.h
Библиотека: diaguids.lib
DLL: msdia80.dll