IDiaSymbol

描述符號執行個體的屬性。

IDiaSymbol : IUnknown

方法會按照字母順序

下表顯示 IDiaSymbol方法。

注意事項注意事項

符號依符號的型別會傳回有意義的資料只會對某些方法,。如果方法傳回 S_OK,則該方法會傳回有意義的資料。

方法

描述

IDiaSymbol::findChildren

擷取該符號的所有子系。

IDiaSymbol::findChildrenEx

擷取符號的子系。 這個方法是 IDiaSymbol::findChildren的擴充版本。

IDiaSymbol::findChildrenExByAddr

擷取是適用於指定的電子郵件地址符號的子系。

IDiaSymbol::findChildrenExByRVA

擷取是適用於指定的相對虛擬位址(RVA) (RVA)符號的子系。

IDiaSymbol::findChildrenExByVA

擷取是適用於指定的相對虛擬位址(RVA)符號的子系。

IDiaSymbol::findInlineFramesByAddr

擷取可讓用戶端透過所有在指定位址的內嵌框架逐一查看的列舉值。

IDiaSymbol::findInlineFramesByRVA

擷取可讓用戶端透過所有在指定的相對虛擬位址(RVA) (RVA)內嵌框架逐一查看的列舉值。

IDiaSymbol::findInlineFramesByVA

擷取可讓用戶端透過所有在指定的相對虛擬位址(RVA) (VA)內嵌框架逐一查看的列舉值。

IDiaSymbol::findInlineeLines

擷取可讓用戶端透過指定的行號資訊重複內嵌,直接或間接,在這個符號的列舉型別。

IDiaSymbol::findInlineeLinesByAddr

擷取可讓用戶端透過指定的行號資訊重複內嵌,直接或間接,在指定的位址範圍內的這個符號的列舉型別。

IDiaSymbol::findInlineeLinesByRVA

擷取可讓用戶端透過指定的行號資訊重複內嵌,直接或間接,在指定的相對虛擬位址(RVA) (RVA)中的這個符號的列舉型別。

IDiaSymbol::findInlineeLinesByVA

擷取可讓用戶端透過指定的行號資訊重複內嵌,直接或間接,在指定的相對虛擬位址(RVA) (VA)中的這個符號的列舉型別。

IDiaSymbol::findSymbolsByRVAForAcceleratorPointerTag

將對應的標記值,這個方法會傳回在指定的相對虛擬位址的這個Stub函式包含符號的列舉型別。

IDiaSymbol::findSymbolsForAcceleratorPointerTag

傳回在快速C ++. AMP Stub函式指標Moniker數目。

IDiaSymbol::get_acceleratorPointerTags

傳回對應於C ++. AMP快速Stub函式的所有快速指標標記值。

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

擷取指標會根據的符號ID。

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

擷取表示編譯的旗標是否包含任何偵錯資訊。

IDiaSymbol::get_hasEH

擷取表示函式是否為旗標. C ++式例外處理常式。

IDiaSymbol::get_hasEHa

擷取表示函式是否為旗標非同步例外狀況處理常式。

IDiaSymbol::get_hasInlAsm

擷取表示函式是否為旗標內嵌組件。

IDiaSymbol::get_hasLongJump

擷取表示函式是否為旗標包含一個longjmp命令(一部分的C-Style例外處理)。

IDiaSymbol::get_hasManagedCode

擷取表示模組是否旗標包含Managed程式碼。

IDiaSymbol::get_hasNestedTypes

擷取表示使用者定義資料型別是否旗標巢狀型別定義。

IDiaSymbol::get_hasSecurityChecks

擷取表示函式或編譯中是否有旗標安全性檢查編譯(透過 /GS (緩衝區安全性檢查) 編譯器參數)。

IDiaSymbol::get_hasSEH

擷取表示函式是否為旗標式Win32結構化例外處理(Exception Handling)。

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

擷取表示模組是否旗標通用Intermediate Language (CIL)已轉換成機器碼。

IDiaSymbol::get_isDataAligned

擷取表示使用者定義資料型別的項目是否旗標對齊至特定界限。

IDiaSymbol::get_isHLSLData

指定這個符號表示高階著色引擎Language (HLSL)資料。

IDiaSymbol::get_isHotpatchable

擷取表示模組是否旗標編譯 /hotpatch (建立可線上修補的影像) 編譯器參數。

IDiaSymbol::get_isLTCG

擷取表示Managed編譯是否旗標與連結器LTCG的連結。

IDiaSymbol::get_isMatrixRowMajor

指定這個矩陣的資料列是否為主要版本號碼。

IDiaSymbol::get_isMSILNetmodule

擷取表示Managed編譯是否旗標為。 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

擷取表示函式或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

擷取目標CPU的類型。

IDiaSymbol::get_managed

擷取旗標指示符號是否參考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 Stub函式指標Moniker數目。

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) (RVA)。

IDiaSymbol::get_restrictedType

指定 this 指標是否會標示為來限制。

IDiaSymbol::get_samplerSlot

擷取指定的位置。

IDiaSymbol::get_scoped

擷取表示使用者定義資料型別是否旗標會出現一個nonglobal語彙範圍(Lexical Scope)。

IDiaSymbol::get_signature

擷取符號的簽章值。

IDiaSymbol::get_sizeInUdt

擷取使用者定義型別之成員的大小。

IDiaSymbol::get_slot

擷取位置的位置編號。

IDiaSymbol::get_sourceFileName

擷取原始程式檔的檔名。

IDiaSymbol::getSrcLineOnTypeDefn

擷取指定的原始程式檔和行號一個指定的使用者定義型別中定義。

IDiaSymbol::get_stride

擷取矩陣或strided陣列的步距。

IDiaSymbol::get_subType

擷取的子型別。

IDiaSymbol::get_subTypeId

擷取子型別ID.

IDiaSymbol::get_symbolsFileName

擷取符號載入的檔案名稱。

IDiaSymbol::get_symIndexId

擷取特有符號識別項。

IDiaSymbol::get_symTag

擷取符號類型Classifier。

IDiaSymbol::get_targetOffset

擷取Thunk目標的位移部分。

IDiaSymbol::get_targetRelativeVirtualAddress

擷取Thunk目標的相對虛擬位址(RVA) (RVA)。

IDiaSymbol::get_targetSection

擷取Thunk目標位址的區段。

IDiaSymbol::get_targetVirtualAddress

擷取Thunk目標的虛擬位址(VA)。

IDiaSymbol::get_textureSlot

擷取紋理位置。

IDiaSymbol::get_thisAdjust

擷取方法的邏輯 this 調整工具。

IDiaSymbol::get_thunkOrdinal

擷取的Thunk函式型別。

IDiaSymbol::get_timeStamp

擷取基礎可執行檔的時間戳記。

IDiaSymbol::get_token

擷取Managed函式或變數的中繼資料語彙基元。

IDiaSymbol::get_type

擷取在函式簽章的參考。

IDiaSymbol::get_typeId

擷取符號的型別識別項。

IDiaSymbol::get_types

擷取陣列這個符號的編譯器特定的型別值。

IDiaSymbol::get_typeIds

擷取陣列編譯器特定型別這個符號的識別項值。

IDiaSymbol::get_uavSlot

擷取uav位置。

IDiaSymbol::get_udtKind

擷取使用者定義型別(UDT) (UDT)的變化。

IDiaSymbol::get_unalignedType

擷取表示使用者定義資料型別是否旗標未對齊。

IDiaSymbol::get_undecoratedName

擷取未裝飾名稱. C ++裝飾或連結,名稱。

IDiaSymbol::get_undecoratedNameEx

擷取這個未裝飾名稱 get_undecoratedName 方法的副檔名是根據副檔名欄位的值。

IDiaSymbol::get_unmodifiedTypeId

擷取原始的(未修改)型別的ID。

IDiaSymbol::get_upperBound

擷取FORTRAN陣列維度的上限(Upper Bound)。

IDiaSymbol::get_upperBoundId

擷取FORTRAN陣列維度的上限(Upper Bound)的符號識別項。

IDiaSymbol::get_value

擷取常數值。

IDiaSymbol::get_virtual

擷取表示函式是否為旗標是虛擬的。

IDiaSymbol::get_virtualAddress

擷取位置的相對虛擬位址(RVA) (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

擷取表示使用者定義資料型別是否旗標Volatile。

備註

呼叫端的注意事項。

透過呼叫下列其中一個方法來取得這個介面:

範例

這個範例示範如何顯示函式的區域變數是在指定的相對虛擬位址。 它也會顯示不同類型的符號相互間的關聯性。

注意事項注意事項

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)

符號和符號標記