共用方式為


IDiaSectionContrib

描述區段中所佔比重的擷取資料,也就是連續的記憶體區塊至映像所產生的編譯。

IDiaSectionContrib : IUnknown

方法 Vtable 順序

下表顯示的方法IDiaSectionContrib

方法

描述

IDiaSectionContrib::get_compiland

擷取提供本章節的編譯符號的參考。

IDiaSectionContrib::get_addressSection

擷取所佔比重的地址] 區段部份。

IDiaSectionContrib::get_addressOffset

擷取位移所佔比重的地址部份。

IDiaSectionContrib::get_relativeVirtualAddress

擷取的映像相對虛擬位址 (RVA) 的比重。

IDiaSectionContrib::get_virtualAddress

擷取所佔比重的虛擬位址 (VA)。

IDiaSectionContrib::get_length

擷取一節中的位元組的數目。

IDiaSectionContrib::get_notPaged

會擷取旗標,指出是否區段無法分頁記憶體用完。

IDiaSectionContrib::get_nopad

會擷取旗標,表示是否區段應該不會填補接下來的記憶體界限。

IDiaSectionContrib::get_code

會擷取旗標,指出是否區段包含可執行程式碼。

IDiaSectionContrib::get_code16bit

會擷取旗標,指出是否區段包含 16 位元的程式碼。

IDiaSectionContrib::get_initializedData

會擷取旗標,指出是否區段包含初始化的資料。

IDiaSectionContrib::get_uninitializedData

會擷取旗標,指出是否區段包含未初始化的資料。

IDiaSectionContrib::get_informational

會擷取旗標,指出是否一個區段包含註解或類似的資訊。

IDiaSectionContrib::get_remove

會擷取旗標,表示它由記憶體中影像的一部份之前,是否要移除區段。

IDiaSectionContrib::get_comdat

會擷取旗標,指示區段是否為衝突的記錄。

IDiaSectionContrib::get_discardable

會擷取旗標,指出是否可以捨棄一節。

IDiaSectionContrib::get_notCached

會擷取旗標,指出是否無法快取的區段。

IDiaSectionContrib::get_share

會擷取旗標,指出是否可以在記憶體中共用區段。

IDiaSectionContrib::get_execute

會擷取旗標,指出是否可執行程式碼區段。

IDiaSectionContrib::get_read

會擷取旗標,指出是否可讀取的區段。

IDiaSectionContrib::get_write

會擷取旗標,指出是否可寫入區段。

IDiaSectionContrib::get_dataCrc

擷取的資料區段中的循環冗餘檢查 (CRC)。

IDiaSectionContrib::get_relocationsCrc

擷取的 CRC 時的區段的重新配置資訊。

IDiaLineNumber::get_compilandId

擷取一節的編譯時識別項。

備註

呼叫者的備忘稿

這個介面藉由呼叫IDiaEnumSectionContribs::ItemIDiaEnumSectionContribs::Next方法。 請參閱IDiaEnumSectionContribs介面取得的例如IDiaSectionContrib介面。

範例

這個函式會顯示每個區段,以及任何相關符號的位址。 請參閱IDiaEnumSectionContribs介面,請參閱如何IDiaSectionContrib介面會取得。

void PrintSectionContrib(IDiaSectionContrib* pSecContrib, IDiaSession* pSession)
{
    if (pSecContrib != NULL && pSession != NULL)
    {
        DWORD rva;
        if ( pSecContrib->get_relativeVirtualAddress( &rva ) == S_OK )
        {
            printf( "\taddr: 0x%.8X", rva );
            pSecContrib = NULL;
            CComPtr<IDiaSymbol> pSym;
            if ( psession->findSymbolByRVA( rva, SymTagNull, &pSym ) == S_OK )
            {
                CDiaBSTR name;
                DWORD    tag;
                pSym->get_symTag( &tag );
                pSym->get_name( &name );
                printf( "     symbol: %ws (%ws)\n",
                        name != NULL ? name : L"",
                        szTags[ tag ] );
            }
            else
            {
                printf( "<no symbol found?>\n" );
            }
        }
        else
        {
            DWORD isect;
            DWORD offset;
            pSecContrib->get_addressSection( &isect );
            pSecContrib->get_addressOffset( &offset );
            printf( "\taddr: 0x%.4X:0x%.8X", isect, offset );
            pSecContrib = NULL;
            CComPtr<IDiaSymbol> pSym;
            if ( SUCCEEDED( psession->findSymbolByAddr(
                                              isect,
                                              offset,
                                              SymTagNull,
                                              &pSym )
                          )
               )
            {
                CDiaBSTR name;
                DWORD    tag;
                pSym->get_symTag( &tag );
                pSym->get_name( &name );
                printf( "     symbol: %ws (%ws)\n",
                    name != NULL ? name : L"",
                    szTags[ tag ] );
            }
            else
            {
                printf( "<no symbol found?>\n" );
            }
        }
    }
}

需求

標頭: Dia2.h

媒體櫃: diaguids.lib

DLL: msdia80.dll

請參閱

參考

IDiaEnumSectionContribs

IDiaEnumSectionContribs::Item

IDiaEnumSectionContribs::Next

其他資源

介面 (偵錯介面存取 SDK)