Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengambil data yang menjelaskan kontribusi bagian, yaitu, blok memori yang berdekatan yang disumbangkan ke gambar oleh kompilasi.
Sintaks
IDiaSectionContrib : IUnknown
Metode dalam Urutan Vtable
Tabel berikut memperlihatkan metode IDiaSectionContrib.
| Metode | Deskripsi |
|---|---|
IDiaSectionContrib::get_compiland |
Mengambil referensi ke simbol kompilasi yang berkontribusi pada bagian ini. |
IDiaSectionContrib::get_addressSection |
Mengambil bagian dari alamat kontribusi. |
IDiaSectionContrib::get_addressOffset |
Mengambil bagian offset dari alamat kontribusi. |
IDiaSectionContrib::get_relativeVirtualAddress |
Mengambil alamat virtual relatif (RVA) gambar dari kontribusi. |
IDiaSectionContrib::get_virtualAddress |
Mengambil alamat virtual (VA) dari kontribusi. |
IDiaSectionContrib::get_length |
Mengambil jumlah byte dalam satu bagian. |
IDiaSectionContrib::get_notPaged |
Mengambil tanda yang menunjukkan apakah bagian tidak dapat dikeluarkan dari memori. |
IDiaSectionContrib::get_nopad |
Mengambil bendera yang menunjukkan apakah bagian tidak boleh diisi ke batas memori berikutnya. |
IDiaSectionContrib::get_code |
Mengambil tanda yang menunjukkan apakah bagian tersebut berisi kode yang dapat dieksekusi. |
IDiaSectionContrib::get_initializedData |
Mengambil tanda yang menunjukkan apakah bagian tersebut berisi data yang diinisialisasi. |
IDiaSectionContrib::get_uninitializedData |
Mengambil tanda yang menunjukkan apakah bagian tersebut berisi data yang batal inisialisasi. |
IDiaSectionContrib::get_informational |
Mengambil bendera yang menunjukkan apakah bagian berisi komentar atau informasi serupa. |
IDiaSectionContrib::get_remove |
Mengambil bendera yang menunjukkan apakah bagian dihapus sebelum dibuat sebagai bagian dari gambar dalam memori. |
IDiaSectionContrib::get_comdat |
Mengambil tanda yang menunjukkan apakah bagian tersebut adalah rekaman COMDAT. |
IDiaSectionContrib::get_discardable |
Mengambil bendera yang menunjukkan apakah bagian tersebut dapat dibuang. |
IDiaSectionContrib::get_notCached |
Mengambil bendera yang menunjukkan apakah bagian tidak dapat di-cache. |
IDiaSectionContrib::get_share |
Mengambil bendera yang menunjukkan apakah bagian dapat dibagikan dalam memori. |
IDiaSectionContrib::get_execute |
Mengambil bendera yang mengindikasikan apakah bagian dapat dijalankan sebagai kode. |
IDiaSectionContrib::get_read |
Ambil bendera yang menunjukkan apakah bagian tersebut dapat dibaca. |
IDiaSectionContrib::get_write |
Mengambil bendera yang menunjukkan apakah bagian dapat ditulis. |
IDiaSectionContrib::get_dataCrc |
Mengambil pemeriksaan kelebihan putaran (CRC) data di bagian tersebut. |
IDiaSectionContrib::get_relocationsCrc |
Mengambil CRC dari informasi relokasi untuk bagian tersebut. |
IDiaSectionContrib::get_compilandId |
Mengambil pengidentifikasi kompilasi untuk bagian tersebut. |
IDiaSectionContrib::get_code16bit |
Mengambil bendera yang menunjukkan apakah bagian tersebut berisi kode 16-bit. |
Keterangan
Catatan untuk Penelepon
Antarmuka ini diperoleh dengan memanggil IDiaEnumSectionContribs::Item metode dan IDiaEnumSectionContribs::Next . IDiaEnumSectionContribs Lihat antarmuka untuk contoh mendapatkan IDiaSectionContrib antarmuka.
Contoh
Fungsi ini menunjukkan alamat setiap bagian bersama dengan simbol terkait. IDiaEnumSectionContribs Lihat antarmuka untuk melihat bagaimana IDiaSectionContrib antarmuka diperoleh.
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" );
}
}
}
}
Persyaratan
Header: Dia2.h
Library: diaguids.lib
DLL: msdia140.dll