Sdílet prostřednictvím


IDiaSymbol

Popisuje vlastnosti instance symbolu.

Syntaxe

IDiaSymbol : IUnknown

Metody v abecedním pořadí

Následující tabulka ukazuje metody IDiaSymbol.

Poznámka:

Symboly vrátí smysluplná data pouze pro některé z těchto metod v závislosti na typu symbolu. Pokud metoda vrátí S_OK, pak tato metoda vrátila smysluplná data.

metoda Popis
IDiaSymbol::findChildren Načte všechny podřízené položky symbolu.
IDiaSymbol::findChildrenEx Načte podřízené položky symbolu. Tato metoda je rozšířená verze IDiaSymbol::findChildren.
IDiaSymbol::findChildrenExByAddr Načte podřízené položky symbolu, které jsou platné na zadané adrese.
IDiaSymbol::findChildrenExByRVA Načte podřízené položky symbolu, které jsou platné na zadané relativní virtuální adrese (RVA).
IDiaSymbol::findChildrenExByVA Načte podřízené položky symbolu, které jsou platné na zadané virtuální adrese.
IDiaSymbol::findInlineFramesByAddr Načte výčet, který umožňuje klientovi iterovat všechny vložené rámce na dané adrese.
IDiaSymbol::findInlineFramesByRVA Načte výčet, který umožňuje klientovi iterovat všechny vložené rámce na zadané relativní virtuální adrese (RVA).
IDiaSymbol::findInlineFramesByVA Načte výčet, který umožňuje klientovi iterovat všechny vložené rámce na zadané virtuální adrese (VA).
IDiaSymbol::findInlineeLines Načte výčet, který umožňuje klientovi iterovat informace o čísle řádku všech funkcí, které jsou vloženy přímo nebo nepřímo, v tomto symbolu.
IDiaSymbol::findInlineeLinesByAddr Načte výčet, který umožňuje klientovi iterovat informace o čísle řádku všech funkcí, které jsou vloženy přímo nebo nepřímo, v tomto symbolu v zadaném rozsahu adres.
IDiaSymbol::findInlineeLinesByRVA Načte výčet, který umožňuje klientovi iterovat informace o čísle řádku všech funkcí, které jsou vloženy přímo nebo nepřímo, v tomto symbolu v rámci zadané relativní virtuální adresy (RVA).
IDiaSymbol::findInlineeLinesByVA Načte výčet, který klientovi umožňuje iterovat informace o čísle řádku všech funkcí, které jsou vloženy přímo nebo nepřímo, v tomto symbolu v zadané virtuální adrese (VA).
IDiaSymbol::findSymbolsByRVAForAcceleratorPointerTag Vzhledem k odpovídající hodnotě značky vrátí tato metoda výčet symbolů, které jsou obsaženy v této funkci zástupných procedur na zadané relativní virtuální adrese.
IDiaSymbol::findSymbolsForAcceleratorPointerTag Vrátí počet značek ukazatelů akcelerátoru ve funkci zástupných procedur C++ AMP.
IDiaSymbol::get_acceleratorPointerTags Vrátí všechny hodnoty značek ukazatele akcelerátoru, které odpovídají funkci zástupných procedur akcelerátoru C++ AMP.
IDiaSymbol::get_access Načte modifikátor přístupu člena třídy.
IDiaSymbol::get_addressOffset Načte posun části umístění adresy.
IDiaSymbol::get_addressSection Načte část oddílu umístění adresy.
IDiaSymbol::get_addressTaken Načte příznak označující, jestli na tuto adresu odkazuje jiný symbol.
IDiaSymbol::get_age Načte věkovou hodnotu databáze programu.
IDiaSymbol::get_arrayIndexType Načte identifikátor symbolu typu indexu pole.
IDiaSymbol::get_arrayIndexTypeId Načte identifikátor typu indexu pole symbolu.
IDiaSymbol::get_backEndMajor Načte číslo hlavní verze back-endu.
IDiaSymbol::get_backEndMinor Načte číslo podverze back-endu.
IDiaSymbol::get_backEndBuild Načte číslo sestavení back-endu.
IDiaSymbol::get_baseDataOffset Načte posun základních dat.
IDiaSymbol::get_baseDataSlot Načte základní datový slot.
IDiaSymbol::get_baseSymbol Načte symbol, ze kterého je ukazatel založen.
IDiaSymbol::get_baseSymbolId Načte ID symbolu, ze kterého je ukazatel založen.
IDiaSymbol::get_baseType Načte značku typu jednoduchého typu.
IDiaSymbol::get_bitPosition Načte pozici bitu umístění.
IDiaSymbol::get_builtInKind Načte předdefinovaný typ HLSL.
IDiaSymbol::get_callingConvention Vrátí indikátor konvence volání metody.
IDiaSymbol::get_classParent Načte odkaz na nadřazenou třídu symbolu.
IDiaSymbol::get_classParentId Načte nadřazený identifikátor třídy symbolu.
IDiaSymbol::get_code Načte příznak označující, jestli symbol odkazuje na adresu kódu.
IDiaSymbol::get_compilerGenerated Načte příznak označující, jestli byl symbol generován kompilátorem.
IDiaSymbol::get_compilerName Načte název kompilátoru použitého k vytvoření Compilandu.
IDiaSymbol::get_constructor Načte příznak označující, jestli má uživatelem definovaný datový typ konstruktor.
IDiaSymbol::get_container Načte obsahující symbol tohoto symbolu.
IDiaSymbol::get_constType Načte příznak označující, jestli je uživatelem definovaný datový typ konstantní.
IDiaSymbol::get_count Načte počet položek v seznamu nebo poli.
IDiaSymbol::get_countLiveRanges Načte počet platných rozsahů adres přidružených k místnímu symbolu.
IDiaSymbol::get_customCallingConvention Načte příznak označující, jestli funkce používá vlastní konvenci volání.
IDiaSymbol::get_dataBytes Načte bajty dat symbolu OEM.
IDiaSymbol::get_dataKind Načte klasifikaci proměnné symbolu dat.
IDiaSymbol::get_editAndContinueEnabled Načte příznak popisující funkce Upravit a pokračovat zkompilovaného programu nebo lekce.
IDiaSymbol::get_farReturn Načte příznak označující, jestli funkce používá dalekosáhlý návrat.
IDiaSymbol::get_frontEndMajor Načte číslo hlavní verze front-endu.
IDiaSymbol::get_frontEndMinor Načte číslo podverze front-endu.
IDiaSymbol::get_frontEndBuild Načte číslo front-endového sestavení.
IDiaSymbol::get_function Načte příznak označující, jestli veřejný symbol odkazuje na funkci.
IDiaSymbol::get_guid Načte identifikátor GUID symbolu.
IDiaSymbol::get_hasAlloca Načte příznak označující, zda funkce obsahuje volání alloca.
IDiaSymbol::get_hasAssignmentOperator Načte příznak označující, jestli má definovaný datový typ uživatelem definované operátory přiřazení.
IDiaSymbol::get_hasCastOperator Načte příznak označující, jestli má definovaný datový typ uživatelem definované operátory přetypování.
IDiaSymbol::get_hasDebugInfo Načte příznak označující, jestli compiland obsahuje nějaké informace o ladění.
IDiaSymbol::get_hasEH Načte příznak označující, jestli má funkce obslužnou rutinu výjimky ve stylu C++.
IDiaSymbol::get_hasEHa Načte příznak označující, jestli má funkce asynchronní obslužnou rutinu výjimky.
IDiaSymbol::get_hasInlAsm Načte příznak označující, zda má funkce vložené sestavení.
IDiaSymbol::get_hasLongJump Načte příznak označující, jestli funkce obsahuje příkaz longjmp (součást zpracování výjimek ve stylu jazyka C).
IDiaSymbol::get_hasManagedCode Načte příznak označující, jestli modul obsahuje spravovaný kód.
IDiaSymbol::get_hasNestedTypes Načte příznak označující, jestli má uživatelem definovaný datový typ vnořené definice typu.
IDiaSymbol::get_hasSecurityChecks Načte příznak označující, jestli má funkce nebo compiland zkompilované kontroly zabezpečení (prostřednictvím přepínače kompilátoru /GS (kontrola zabezpečení vyrovnávací paměti).
IDiaSymbol::get_hasSEH Načte příznak označující, jestli má funkce strukturované zpracování výjimek ve stylu Win32.
IDiaSymbol::get_hasSetJump Načte příznak označující, jestli funkce obsahuje příkaz setjmp.
IDiaSymbol::get_indirectVirtualBaseClass Načte příznak označující, jestli je uživatelem definovaný datový typ nepřímá virtuální základní třída.
IDiaSymbol::get_InlSpec Načte příznak označující, jestli byla funkce označena vloženým atributem.
IDiaSymbol::get_interruptReturn Načte příznak označující, jestli má funkce návrat z instrukce přerušení.
IDiaSymbol::get_intro Načte příznak označující, jestli je funkce virtuální funkcí základní třídy.
IDiaSymbol::get_isAcceleratorGroupSharedLocal Načte příznak, který označuje, jestli symbol odpovídá skupině sdílené místní proměnné v kódu zkompilovanému pro akcelerátor C++ AMP.
IDiaSymbol::get_isAcceleratorPointerTagLiveRange Načte příznak, který označuje, zda symbol odpovídá symbolu rozsahu definic pro komponentu značky proměnné ukazatele v kódu zkompilovaném pro akcelerátor C++ AMP. Symbol rozsahu definic je umístění proměnné pro rozsah adres.
IDiaSymbol::get_isAcceleratorStubFunction Určuje, zda symbol odpovídá symbolu funkce nejvyšší úrovně pro shader zkompilovaný pro akcelerátor, který odpovídá parallel_for_each volání.
IDiaSymbol::get_isAggregated Načte příznak označující, jestli jsou data součástí agregace mnoha symbolů.
IDiaSymbol::get_isCTypes Načte příznak označující, zda soubor symbolů obsahuje typy jazyka C.
IDiaSymbol::get_isCVTCIL Načte příznak označující, jestli byl modul převeden z common intermediate language (CIL) na nativní kód.
IDiaSymbol::get_isDataAligned Načte příznak označující, jestli jsou prvky uživatelem definovaného datového typu zarovnané ke konkrétní hranici.
IDiaSymbol::get_isHLSLData Určuje, zda tento symbol představuje data jazyka HLSL (High Level Shader Language).
IDiaSymbol::get_isHotpatchable Načte příznak označující, jestli byl modul zkompilován pomocí přepínače kompilátoru /hotpatch (Create Hotpatchable Image).
IDiaSymbol::get_isLTCG Načte příznak označující, jestli byl spravovaný compiland propojený s LTCG linkeru.
IDiaSymbol::get_isMatrixRowMajor Určuje, jestli je matice hlavním řádkem.
IDiaSymbol::get_isMSILNetmodule Načte příznak označující, jestli je spravovaný compiland .netmodule (obsahující pouze metadata).
IDiaSymbol::get_isMultipleInheritance Určuje, zda this ukazatel odkazuje na datový člen s více dědičností.
IDiaSymbol::get_isNaked Načte příznak označující, jestli má funkce atribut nahý .
IDiaSymbol::get_isOptimizedAway Určuje, jestli je proměnná optimalizovaná.
IDiaSymbol::get_isPointerBasedOnSymbolValue Určuje, zda this je ukazatel založen na hodnotě symbolu.
IDiaSymbol::get_isPointerToDataMember Určuje, zda je tento symbol ukazatelem na datový člen.
IDiaSymbol::get_isPointerToMemberFunction Určuje, zda je tento symbol ukazatelem na členovou funkci.
IDiaSymbol::get_isReturnValue Určuje, zda proměnná nese návratovou hodnotu.
IDiaSymbol::get_isSdl Určuje, zda je modul zkompilován s možností /SDL.
IDiaSymbol::get_isSingleInheritance Určuje, zda this ukazatel odkazuje na datový člen s jednou dědičností.
IDiaSymbol::get_isSplitted Načte příznak označující, jestli byla data rozdělena do agregace samostatných symbolů.
IDiaSymbol::get_isStatic Načte příznak označující, jestli je funkce nebo vrstva thunk statická.
IDiaSymbol::get_isStripped Načte příznak označující, jestli byly ze souboru symbolů odebrány soukromé symboly.
IDiaSymbol::get_isVirtualInheritance Určuje, zda this ukazatel odkazuje na datový člen s virtuální dědičností.
IDiaSymbol::get_language Načte jazyk zdroje.
IDiaSymbol::get_length Načte počet bajtů paměti používané objektem reprezentovaným tímto symbolem.
IDiaSymbol::get_lexicalParent Načte odkaz na lexikální nadřazený symbol.
IDiaSymbol::get_lexicalParentId Načte lexikální nadřazený identifikátor symbolu.
IDiaSymbol::get_libraryName Načte název souboru knihovny nebo souboru objektu, ze kterého byl objekt načten.
IDiaSymbol::get_liveRangeLength Vrátí délku rozsahu adres, ve kterém je místní symbol platný.
IDiaSymbol::get_liveRangeStartAddressSection Vrátí část oddílu počátečního rozsahu adres, ve kterém je místní symbol platný.
IDiaSymbol::get_liveRangeStartAddressOffset Vrátí posun části počátečního rozsahu adres, ve kterém je místní symbol platný.
IDiaSymbol::get_liveRangeStartRelativeVirtualAddress Vrátí začátek rozsahu adres, ve kterém je místní symbol platný.
IDiaSymbol::get_locationType Načte typ umístění symbolu dat.
IDiaSymbol::get_lowerBound Načte dolní mez dimenze pole FORTRAN.
IDiaSymbol::get_lowerBoundId Načte identifikátor symbolu dolní hranice dimenze pole FORTRAN.
IDiaSymbol::get_machineType Načte typ cílového procesoru.
IDiaSymbol::get_managed Načte příznak, který označuje, jestli symbol odkazuje na spravovaný kód.
IDiaSymbol::get_memorySpaceKind Načte druh paměťového prostoru.
IDiaSymbol::get_msil Načte příznak označující, zda symbol odkazuje na kód jazyka MSIL (Microsoft Intermediate Language).
IDiaSymbol::get_name Načte název symbolu.
IDiaSymbol::get_nested Načte příznak označující, jestli je vnořený datový typ definovaný uživatelem.
IDiaSymbol::get_noInline Načte příznak označující, jestli je funkce označena atributem noinline .
IDiaSymbol::get_noReturn Načte příznak označující, zda byla funkce deklarována pomocí atributu noreturn .
IDiaSymbol::get_noStackOrdering Načte příznak označující, jestli se v rámci kontroly vyrovnávací paměti zásobníku nedá provést žádné řazení zásobníku.
IDiaSymbol::get_notReached Načte příznak označující, jestli se funkce nebo popisek nikdy nedosáhnou.
IDiaSymbol::get_numberOfAcceleratorPointerTags Vrátí počet značek ukazatelů akcelerátoru ve funkci zástupných procedur C++ AMP.
IDiaSymbol::get_numberOfModifiers Načte počet modifikátorů, které se použijí na původní typ.
IDiaSymbol::get_numberOfRegisterIndices Načte počet indexů registru.
IDiaSymbol::get_numberOfRows Načte počet řádků v matici.
IDiaSymbol::get_numberOfColumns Načte počet sloupců v matici.
IDiaSymbol::get_objectFileName Načte název souboru objektu.
IDiaSymbol::get_objectPointerType Načte typ ukazatele objektu pro metodu třídy.
IDiaSymbol::get_oemId Načte hodnotu symbolu oemId .
IDiaSymbol::get_oemSymbolId Načte hodnotu symbolu oemSymbolId .
IDiaSymbol::get_offset Načte posun umístění symbolu.
IDiaSymbol::get_optimizedCodeDebugInfo Načte příznak označující, jestli funkce nebo popisek obsahuje optimalizovaný kód a informace o ladění.
IDiaSymbol::get_overloadedOperator Načte příznak označující, jestli má uživatelem definovaný datový typ přetížené operátory.
IDiaSymbol::get_packed Načte příznak označující, jestli je datový typ definovaný uživatelem zabalený.
IDiaSymbol::get_platform Načte typ platformy, pro který byl program nebo compiland zkompilován.
IDiaSymbol::get_pure Načte příznak, který označuje, jestli je funkce čistě virtuální.
IDiaSymbol::get_rank Načte pořadí multidimenzionálního pole FORTRAN.
IDiaSymbol::get_reference Načte příznak označující, zda je typ ukazatele odkazem.
IDiaSymbol::get_registerId Načte návrh registru umístění.
IDiaSymbol::get_registerType Načte typ registru.
IDiaSymbol::get_relativeVirtualAddress Načte relativní virtuální adresu (RVA) umístění.
IDiaSymbol::get_restrictedType Určuje, jestli this je ukazatel označený jako omezený.
IDiaSymbol::get_samplerSlot Načte slot sampleru.
IDiaSymbol::get_scoped Načte příznak označující, jestli se datový typ definovaný uživatelem zobrazí v neglobalickém lexikálním oboru.
IDiaSymbol::get_signature Načte hodnotu podpisu symbolu.
IDiaSymbol::get_sizeInUdt Načte velikost člena uživatelem definovaného typu.
IDiaSymbol::get_slot Načte číslo slotu umístění.
IDiaSymbol::get_sourceFileName Načte název souboru zdrojového souboru.
IDiaSymbol::getSrcLineOnTypeDefn Načte zdrojový soubor a číslo řádku, které označuje, kde je definovaný zadaný typ definovaný uživatelem.
IDiaSymbol::get_stride Načte krok matice nebo stridovaného pole.
IDiaSymbol::get_subType Načte podtyp.
IDiaSymbol::get_subTypeId Načte ID podtypu.
IDiaSymbol::get_symbolsFileName Načte název souboru, ze kterého byly načteny symboly.
IDiaSymbol::get_symIndexId Načte jedinečný identifikátor symbolu.
IDiaSymbol::get_symTag Načte klasifikátor typu symbolu.
IDiaSymbol::get_targetOffset Načte část posunu cíle typu thunk.
IDiaSymbol::get_targetRelativeVirtualAddress Načte relativní virtuální adresu (RVA) cílového bloku.
IDiaSymbol::get_targetSection Načte oddíl adresy cílového bloku.
IDiaSymbol::get_targetVirtualAddress Načte virtuální adresu (VA) cílového bloku.
IDiaSymbol::get_textureSlot Načte slot textury.
IDiaSymbol::get_thisAdjust Načte logický this adjustor pro metodu.
IDiaSymbol::get_thunkOrdinal Načte typ thunk funkce.
IDiaSymbol::get_timeStamp Načte časové razítko základního spustitelného souboru.
IDiaSymbol::get_token Načte token metadat spravované funkce nebo proměnné.
IDiaSymbol::get_type Načte odkaz na podpis funkce.
IDiaSymbol::get_typeId Načte identifikátor typu symbolu.
IDiaSymbol::get_types Načte pole hodnot typů specifických pro kompilátor pro tento symbol.
IDiaSymbol::get_typeIds Načte pole hodnot identifikátoru typu specifického pro kompilátor pro tento symbol.
IDiaSymbol::get_uavSlot Načte slot uav.
IDiaSymbol::get_udtKind Načte celou řadu uživatelem definovaných typů (UDT).
IDiaSymbol::get_unalignedType Načte příznak označující, jestli je datový typ definovaný uživatelem nezarovnaný.
IDiaSymbol::get_undecoratedName Načte neověřený název názvu zdobeného jazyka C++ nebo názvu propojení.
IDiaSymbol::get_undecoratedNameEx get_undecoratedName Rozšíření metody, která načte nezakódovaný název na základě hodnoty pole rozšíření.
IDiaSymbol::get_unmodifiedTypeId Načte ID původního (nemodifikovaného) typu.
IDiaSymbol::get_upperBound Načte horní mez dimenze pole FORTRAN.
IDiaSymbol::get_upperBoundId Načte identifikátor symbolu horní hranice dimenze pole FORTRAN.
IDiaSymbol::get_value Načte hodnotu konstanty.
IDiaSymbol::get_virtual Načte příznak označující, jestli je funkce virtuální.
IDiaSymbol::get_virtualAddress Načte virtuální adresu (VA) umístění.
IDiaSymbol::get_virtualBaseClass Načte příznak označující, jestli je uživatelem definovaný datový typ virtuální základní třída.
IDiaSymbol::get_virtualBaseDispIndex Načte index do virtuální základní tabulky posunutí.
IDiaSymbol::get_virtualBaseOffset Načte posun v tabulce virtuálních funkcí virtuální funkce.
IDiaSymbol::get_virtualBasePointerOffset Načte posun virtuálního základního ukazatele.
IDiaSymbol::get_virtualBaseTableType Načte typ ukazatele virtuální základní tabulky.
IDiaSymbol::get_virtualTableShape Načte rozhraní symbolu typu virtuální tabulky pro uživatelem definovaný typ.
IDiaSymbol::get_virtualTableShapeId Načte identifikátor obrazce virtuální tabulky symbolu.
IDiaSymbol::get_volatileType Načte příznak označující, jestli je uživatelem definovaný datový typ nestálý.

Poznámky

Poznámky pro volající

Získejte toto rozhraní voláním jedné z následujících metod:

Příklad

Tento příklad ukazuje, jak zobrazit místní proměnné pro funkci na dané relativní virtuální adrese. Ukazuje také, jak spolu vzájemně souvisí symboly různých typů.

Poznámka:

CDiaBSTR je třída, která zabalí BSTR řetězec a automaticky zpracuje uvolnění řetězce při vytvoření instance mimo rozsah.

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

Požadavky

Header: Dia2.h

Knihovna: diaguids.lib

DLL: msdia80.dll

Viz také