IDiaSymbol
描述符號執行個體的屬性。
IDiaSymbol : IUnknown
方法會按照字母順序
下表顯示 IDiaSymbol方法。
注意事項 |
---|
符號依符號的型別會傳回有意義的資料只會對某些方法,。如果方法傳回 S_OK,則該方法會傳回有意義的資料。 |
方法 |
描述 |
---|---|
擷取該符號的所有子系。 |
|
擷取符號的子系。 這個方法是 IDiaSymbol::findChildren的擴充版本。 |
|
擷取是適用於指定的電子郵件地址符號的子系。 |
|
擷取是適用於指定的相對虛擬位址(RVA) (RVA)符號的子系。 |
|
擷取是適用於指定的相對虛擬位址(RVA)符號的子系。 |
|
擷取可讓用戶端透過所有在指定位址的內嵌框架逐一查看的列舉值。 |
|
擷取可讓用戶端透過所有在指定的相對虛擬位址(RVA) (RVA)內嵌框架逐一查看的列舉值。 |
|
擷取可讓用戶端透過所有在指定的相對虛擬位址(RVA) (VA)內嵌框架逐一查看的列舉值。 |
|
擷取可讓用戶端透過指定的行號資訊重複內嵌,直接或間接,在這個符號的列舉型別。 |
|
擷取可讓用戶端透過指定的行號資訊重複內嵌,直接或間接,在指定的位址範圍內的這個符號的列舉型別。 |
|
擷取可讓用戶端透過指定的行號資訊重複內嵌,直接或間接,在指定的相對虛擬位址(RVA) (RVA)中的這個符號的列舉型別。 |
|
擷取可讓用戶端透過指定的行號資訊重複內嵌,直接或間接,在指定的相對虛擬位址(RVA) (VA)中的這個符號的列舉型別。 |
|
將對應的標記值,這個方法會傳回在指定的相對虛擬位址的這個Stub函式包含符號的列舉型別。 |
|
傳回在快速C ++. AMP Stub函式指標Moniker數目。 |
|
傳回對應於C ++. AMP快速Stub函式的所有快速指標標記值。 |
|
擷取類別成員的存取修飾詞。 |
|
擷取位址位移之位置的部分。 |
|
擷取位址位置的一部分。 |
|
擷取表示另一個符號是否旗標參考這個位址。 |
|
擷取程式資料庫的年齡值。 |
|
擷取陣列索引型別的符號識別項。 |
|
擷取符號陣列索引處型別識別項。 |
|
擷取後端主要版本號碼。 |
|
擷取後端次要版本號碼。 |
|
擷取後端組建編號。 |
|
擷取基本資料位移。 |
|
擷取基本的資料插槽。 |
|
擷取指標會根據的符號。 |
|
擷取指標會根據的符號ID。 |
|
擷取簡單型別標記。 |
|
擷取位置的位元位置。 |
|
擷取一種內建HLSL型別。 |
|
傳回方法的呼叫慣例的顯示。 |
|
擷取在符號的父類別的參考。 |
|
擷取符號的父類別識別項。 |
|
擷取表示符號是否旗標參考某個程式碼位址。 |
|
擷取表示符號是否旗標編譯器產生。 |
|
擷取編譯器名稱用來建立 Compiland。 |
|
擷取表示使用者定義資料型別是否旗標都有建構函式。 |
|
擷取這個符號包含的符號。 |
|
擷取表示使用者定義資料型別是否旗標是常數。 |
|
擷取資料來源中的項目數清單或陣列中的。 |
|
擷取有效的位址範圍的數目與這個區域符號。 |
|
擷取表示函式是否為旗標使用自訂呼叫慣例。 |
|
擷取OEM符號的資料位元組。 |
|
擷取資料符號的變數的分類。 |
|
擷取描述編譯的旗標後繼續已編譯的程式或單元的功能。 |
|
擷取表示函式是否為旗標使用傳回。 |
|
擷取前期主要版本號碼。 |
|
擷取前期次要版本號碼。 |
|
擷取前期組建編號。 |
|
擷取表示公用符號是否旗標會參考的函式。 |
|
擷取符號的GUID。 |
|
擷取表示函式是否為旗標包含對 alloca。 |
|
擷取表示使用者定義資料型別是否有任何旗標指派運算子定義。 |
|
擷取表示使用者定義資料型別是否旗標任何轉型運算子定義。 |
|
擷取表示編譯的旗標是否包含任何偵錯資訊。 |
|
擷取表示函式是否為旗標. C ++式例外處理常式。 |
|
擷取表示函式是否為旗標非同步例外狀況處理常式。 |
|
擷取表示函式是否為旗標內嵌組件。 |
|
擷取表示函式是否為旗標包含一個longjmp命令(一部分的C-Style例外處理)。 |
|
擷取表示模組是否旗標包含Managed程式碼。 |
|
擷取表示使用者定義資料型別是否旗標巢狀型別定義。 |
|
擷取表示函式或編譯中是否有旗標安全性檢查編譯(透過 /GS (緩衝區安全性檢查) 編譯器參數)。 |
|
擷取表示函式是否為旗標式Win32結構化例外處理(Exception Handling)。 |
|
擷取表示函式是否為旗標包含一個setjmp命令。 |
|
擷取表示使用者定義資料型別是否旗標是間接虛擬基底類別。 |
|
擷取表示函式是否為旗標標記內嵌屬性。 |
|
擷取表示函式是否為旗標從中斷指令的傳回。 |
|
擷取表示函式是否為旗標為基底類別虛擬函式。 |
|
擷取指定的旗標符號是否對應至一組共用區域變數用於C ++. AMP快速編譯的程式碼。 |
|
擷取指定的旗標符號是否對應至指標變數標記元件的定義 範圍 符號可為C++. ++ AMP快速編譯的程式碼。 定義範圍符號是變數的位置位址範圍的。 |
|
表示符號是否對應於為對應到 parallel_for_each 呼叫的快速編譯著色器的最上層函式符號。 |
|
擷取表示資料是否旗標是許多符號彙總的一部分。 |
|
擷取表示符號檔是否旗標包含C型別。 |
|
擷取表示模組是否旗標通用Intermediate Language (CIL)已轉換成機器碼。 |
|
擷取表示使用者定義資料型別的項目是否旗標對齊至特定界限。 |
|
指定這個符號表示高階著色引擎Language (HLSL)資料。 |
|
擷取表示模組是否旗標編譯 /hotpatch (建立可線上修補的影像) 編譯器參數。 |
|
擷取表示Managed編譯是否旗標與連結器LTCG的連結。 |
|
指定這個矩陣的資料列是否為主要版本號碼。 |
|
擷取表示Managed編譯是否旗標為。 netmodule (僅包含中繼資料)。 |
|
指定 this 指標是否指向具有多重繼承的資料成員。 |
|
擷取表示函式是否為旗標 naked (C++) 屬性。 |
|
指定變數是否進行最佳化。 |
|
指定 this 指標是否根據符號值。 |
|
指定這個符號是否為指標至資料成員。 |
|
指定這個符號是否為成員指標函式。 |
|
指定變數是否帶有傳回值。 |
|
指定模組是否使用/SDL選項編譯。 |
|
指定是否 this 指標會指向單一繼承的資料成員。 |
|
擷取表示資料是否的旗標來分割成不同的符號彙總。 |
|
擷取表示函式或Thunk層是否旗標是靜態的。 |
|
擷取表示專用符號是否旗標符號檔案中移除。 |
|
指定是否 this 指標會指向虛擬繼承的資料成員。 |
|
擷取這個來源的語言。 |
|
擷取物件的記憶體使用的位元組數目表示由這個符號。 |
|
擷取在符號的詞彙父代的參考。 |
|
擷取符號的詞彙的識別項。 |
|
擷取物件載入程式庫或目的檔的檔案名稱。 |
|
傳回這個區域符號是有效的位址範圍的長度。 |
|
傳回這個區域符號是有效的起始位址範圍的一部分。 |
|
傳回這個區域符號是有效的起始位址範圍的位移部分。 |
|
傳回這個區域符號是有效的位址範圍的開頭。 |
|
擷取資料符號的位置類型。 |
|
擷取FORTRAN陣列維度的下限。 |
|
擷取FORTRAN陣列維度下限的符號識別項。 |
|
擷取目標CPU的類型。 |
|
擷取旗標指示符號是否參考Managed程式碼。 |
|
擷取記憶體空間內的型別。 |
|
擷取表示符號是否旗標參考Microsoft Intermediate Language (MSIL)程式碼。 |
|
擷取符號名稱。 |
|
擷取表示使用者定義資料型別是否旗標為巢狀。 |
|
擷取表示函式是否為旗標標記 noinline 屬性。 |
|
擷取表示函式是否為旗標宣告 noreturn 屬性。 |
|
擷取表示堆疊順序為堆疊緩衝區所檢查的一部分,而不管的旗標無法完成。 |
|
擷取表示函式或標籤是否旗標永遠不會執行到。 |
|
傳回在快速C ++. AMP Stub函式指標Moniker數目。 |
|
擷取套用至原始型別修飾詞的數目。 |
|
擷取暫存器索引的數目。 |
|
擷取資料列在這個矩陣的。 |
|
擷取資料行數目。這個矩陣的。 |
|
擷取物件的檔案名稱。 |
|
擷取物件指標型別類別的方法。 |
|
擷取符號的 oemId 值。 |
|
擷取符號的 oemSymbolId 值。 |
|
擷取符號位置的位移。 |
|
擷取表示函式或標籤是否旗標包含最佳化程式碼和偵錯資訊。 |
|
擷取表示使用者定義資料型別是否旗標多載的運算子。 |
|
擷取布林旗標包裝使用者定義資料型別。 |
|
擷取程式或編譯中編譯的平台類型。 |
|
擷取旗標指出函式是否為純虛擬的。 |
|
擷取FORTRAN多維陣列的陣序規範。 |
|
擷取表示指標型別是否旗標為參考。 |
|
擷取位置的暫存器指示符。 |
|
擷取註冊型別。 |
|
擷取位置的相對虛擬位址(RVA) (RVA)。 |
|
指定 this 指標是否會標示為來限制。 |
|
擷取指定的位置。 |
|
擷取表示使用者定義資料型別是否旗標會出現一個nonglobal語彙範圍(Lexical Scope)。 |
|
擷取符號的簽章值。 |
|
擷取使用者定義型別之成員的大小。 |
|
擷取位置的位置編號。 |
|
擷取原始程式檔的檔名。 |
|
擷取指定的原始程式檔和行號一個指定的使用者定義型別中定義。 |
|
擷取矩陣或strided陣列的步距。 |
|
擷取的子型別。 |
|
擷取子型別ID. |
|
擷取符號載入的檔案名稱。 |
|
擷取特有符號識別項。 |
|
擷取符號類型Classifier。 |
|
擷取Thunk目標的位移部分。 |
|
擷取Thunk目標的相對虛擬位址(RVA) (RVA)。 |
|
擷取Thunk目標位址的區段。 |
|
擷取Thunk目標的虛擬位址(VA)。 |
|
擷取紋理位置。 |
|
擷取方法的邏輯 this 調整工具。 |
|
擷取的Thunk函式型別。 |
|
擷取基礎可執行檔的時間戳記。 |
|
擷取Managed函式或變數的中繼資料語彙基元。 |
|
擷取在函式簽章的參考。 |
|
擷取符號的型別識別項。 |
|
擷取陣列這個符號的編譯器特定的型別值。 |
|
擷取陣列編譯器特定型別這個符號的識別項值。 |
|
擷取uav位置。 |
|
擷取使用者定義型別(UDT) (UDT)的變化。 |
|
擷取表示使用者定義資料型別是否旗標未對齊。 |
|
擷取未裝飾名稱. C ++裝飾或連結,名稱。 |
|
擷取這個未裝飾名稱 get_undecoratedName 方法的副檔名是根據副檔名欄位的值。 |
|
擷取原始的(未修改)型別的ID。 |
|
擷取FORTRAN陣列維度的上限(Upper Bound)。 |
|
擷取FORTRAN陣列維度的上限(Upper Bound)的符號識別項。 |
|
擷取常數值。 |
|
擷取表示函式是否為旗標是虛擬的。 |
|
擷取位置的相對虛擬位址(RVA) (VA)。 |
|
擷取表示使用者定義資料型別是否旗標為虛擬基底類別。 |
|
要擷取索引為虛擬基底位移的資料表。 |
|
在虛擬函式的虛擬函式資料表中擷取位移。 |
|
擷取虛擬基底指標的位移。 |
|
擷取虛擬基底資料表指標型別。 |
|
擷取虛擬資料表類型的符號介面使用者定義型別的。 |
|
擷取符號的虛擬資料表圖案識別項。 |
|
擷取表示使用者定義資料型別是否旗標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