Поделиться через


IDiaSymbol

Описывает свойства экземпляра символов.

IDiaSymbol : IUnknown

Методы в алфавитном порядке

В следующей таблице показаны методы IDiaSymbol.

Примечание

Символы возвращают значимые данные только для некоторых из этих методов, в зависимости от типа символов.Если метод возвращает S_ОК, этот метод возвращал значимые данные.

Метод

Описание

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

Извлекает имя компилятора, используемого для создания Compiland.

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

Извлекает пометить указывающее, содержит ли compiland какие-либо данные отладки.

IDiaSymbol::get_hasEH

Извлекает пометить указывающее, имеет ли функция обработчика исключений C++-style.

IDiaSymbol::get_hasEHa

Извлекает пометить указывающее, имеет ли функция асинхронный обработчик исключений.

IDiaSymbol::get_hasInlAsm

Извлекает пометить указывающее, имеет ли функция встроенной сборки.

IDiaSymbol::get_hasLongJump

Извлекает пометить указывающее, содержит ли функция команду longjmp (часть обработки ошибок в стиле языка C).

IDiaSymbol::get_hasManagedCode

Извлекает пометить указывающее, содержит ли модуль управляемого кода.

IDiaSymbol::get_hasNestedTypes

Извлекает пометить указывающее, имеет ли определяемый пользователем тип данных определения вложенного типа.

IDiaSymbol::get_hasSecurityChecks

Извлекает пометить указывающее, имеют ли функция или compiland проверки безопасности компилированные in (через параметр компилятора Параметр /GS (проверка безопасности буфера) ).

IDiaSymbol::get_hasSEH

Извлекает пометить указывающее, имеет ли функция обработки ошибок, составленную из Win32-style.

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

Извлекает пометить указывающее, является ли модуль был преобразован из общего промежуточного языка (CIL) в машинный код.

IDiaSymbol::get_isDataAligned

Извлекает пометить, указывающий выравниваются ли элементы определяемого пользователем типа данных к конкретной границы.

IDiaSymbol::get_isHLSLData

Указывает, представляет ли этот символ высокоуровневые сведения о языке шейдера (HLSL).

IDiaSymbol::get_isHotpatchable

Извлекает пометить указывающее, был ли компилировать модуль с помощью параметра компилятора /hotpatch (Создать образ с обновлениями).

IDiaSymbol::get_isLTCG

Извлекает пометить указывает, было ли управляемый compiland связана с LTCG компоновщика.

IDiaSymbol::get_isMatrixRowMajor

Определяет, является ли матрица основной строки.

IDiaSymbol::get_isMSILNetmodule

Извлекает пометить указывающее, является ли управляемый compiland A. netmodule (содержащего только метаданные).

IDiaSymbol::get_isMultipleInheritance

Определяет, является ли точки указателя this к элементу данных с несколькими наследованием.

IDiaSymbol::get_isNaked

Извлекает пометить указывающее, имеет ли функция атрибут naked (C++).

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

Извлекает пометить указывающее, является ли функция или уровень преобразователя является статическим.

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

Извлекает пометить указывающее, относится ли символ в код 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

Извлекает тип платформы для которого компилировались программы или compiland.

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

Извлекает пометить указывающее, отображается ли определяемый пользователем тип данных в nonglobal лексическую область.

IDiaSymbol::get_signature

Извлекает значение сигнатуры символов.

IDiaSymbol::get_sizeInUdt

Получает размер элемента пользовательского типа.

IDiaSymbol::get_slot

Извлекает число слотов расположения.

IDiaSymbol::get_sourceFileName

Извлекает имя файла исходного файла.

IDiaSymbol::getSrcLineOnTypeDefn

Извлекает исходный файл и номер линии, указывающее, где заданный пользовательский тип определен.

IDiaSymbol::get_stride

Получает шаг матрицы или strided массива.

IDiaSymbol::get_subType

Извлекает sub тип.

IDiaSymbol::get_subTypeId

Извлекает идентификатор типа sub

IDiaSymbol::get_symbolsFileName

Извлекает имя файла, из которого были загружены символы.

IDiaSymbol::get_symIndexId

Извлекает уникальный идентификатор символов.

IDiaSymbol::get_symTag

Получает классификатор типа символов.

IDiaSymbol::get_targetOffset

Получает раздел смещения целевого объекта преобразователя.

IDiaSymbol::get_targetRelativeVirtualAddress

Получает относительный виртуальный адрес RVA) (целевого объекта преобразователя.

IDiaSymbol::get_targetSection

Получает раздел адрес целевого объекта преобразователя.

IDiaSymbol::get_targetVirtualAddress

Получает виртуальный адрес (VA) целевого объекта преобразователя.

IDiaSymbol::get_textureSlot

Извлекает область текстуры.

IDiaSymbol::get_thisAdjust

Извлекает логическую регулятор this для метода.

IDiaSymbol::get_thunkOrdinal

Извлекает тип преобразователя функции.

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++, либо toggle имя.

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." );
        }
    };
}

Требования

Header: Dia2.h

Библиотеки: diaguids.lib

Библиотеки DLL: msdia80.dll

См. также

Ссылки

IDiaEnumSymbolsByAddr

IDiaEnumSymbols

IDiaSession

Иерархия классов символьных типов

Compiland

Другие ресурсы

Интерфейсы (SDK для доступа к интерфейсу отладки)

Символы и теги символов