Share via


IDiaSegment

セクション番号のデータをアドレス空間のセグメントにマップします。

構文

IDiaSegment : IUnknown

Vtable 順序のメソッド

次の表に、IDiaSegment のメソッドを示します。

メソッド 説明
IDiaSegment::get_frame セグメント番号を取得します。
IDiaSegment::get_offset セクションが始まるオフセットをセグメント数で取得します。
IDiaSegment::get_length セグメント内のバイト数を取得します。
IDiaSegment::get_read セグメントが読み取り可能かどうかを示すフラグを取得します。
IDiaSegment::get_write セグメントが変更可能であるかどうかを示すフラグを取得します。
IDiaSegment::get_execute セグメントが実行可能であるかどうかを示すフラグを取得します。
IDiaSegment::get_addressSection このセグメントにマップされるセクション番号を取得します。
IDiaSegment::get_relativeVirtualAddress セクションの先頭の相対仮想アドレス (RVA) を取得します。
IDiaSegment::get_virtualAddress セクションの先頭の仮想アドレス (VA) を取得します。

解説

DIA SDK によってセクション オフセットから相対仮想アドレスへの変換が既に実行されているため、ほとんどのアプリケーションでセグメント マップの情報は使用されません。

呼び出し元に関する注意事項

このインターフェイスを取得するには、IDiaEnumSegments::Item または IDiaEnumSegments::Next メソッドを呼び出します。 詳細についての例を参照してください。

この関数は、テーブル内のすべてのセグメントのアドレスと、最も近いシンボルを表示します。

void ShowSegments(IDiaTable *pTable, IDiaSession *pSession)
{
    CComPtr<IDiaEnumSegments> pSegments;
    if ( SUCCEEDED( pTable->QueryInterface(
                                _uuidof( IDiaEnumSegments ),
                               (void**)&pSegments )
                  )
       )
    {
        CComPtr<IDiaSegment> pSegment;
        while ( SUCCEEDED( hr = pSegments->Next( 1, &pSegment, &celt ) ) &&
                celt == 1 )
        {
            DWORD rva;
            DWORD seg;

            pSegment->get_addressSection( &seg );
            if ( pSegment->get_relativeVirtualAddress( &rva ) == S_OK )
            {
                printf( "Segment %i addr: 0x%.8X\n", seg, rva );
                pSegment = 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( "\tClosest symbol: %ws (%ws)\n",
                            name != NULL ? name : L"",
                            szTags[ tag ] );
                }
            }
        }
    }
}

要件

ヘッダー: Dia2.h

ライブラリ: diaguids.lib

DLL: msdia80.dll

関連項目