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.
Mengekspos detail bingkai tumpukan.
Sintaks
IDiaFrameData : IUnknown
Metode dalam Urutan Vtable
Tabel berikut memperlihatkan metode IDiaFrameData.
| Metode | Deskripsi |
|---|---|
| IDiaFrameData::get_addressSection | Mengambil bagian dari alamat kode untuk bingkai. |
| IDiaFrameData::get_addressOffset | Ambil bagian offset dari alamat kode untuk bingkai. |
| IDiaFrameData::get_relativeVirtualAddress | Mengambil alamat virtual relatif gambar (RVA) kode untuk bingkai. |
| IDiaFrameData::get_virtualAddress | Mengambil alamat virtual (VA) dari kode untuk bingkai. |
| IDiaFrameData::get_lengthBlock | Mengambil panjang, dalam byte, dari blok kode yang dijelaskan oleh bingkai. |
| IDiaFrameData::get_lengthLocals | Mengambil jumlah byte variabel lokal yang didorong pada tumpukan. |
| IDiaFrameData::get_lengthParams | Mengambil jumlah byte parameter yang didorong pada tumpukan. |
| IDiaFrameData::get_maxStack | Mengambil jumlah maksimum byte yang didorong pada tumpukan dalam bingkai. |
| IDiaFrameData::get_lengthProlog | Mengambil jumlah byte kode prolog dalam blok. |
| IDiaFrameData::get_lengthSavedRegisters | Mengambil jumlah byte register tersimpan yang didorong pada tumpukan. |
| IDiaFrameData::get_program | Mengambil string program yang digunakan untuk menghitung set register sebelum panggilan ke fungsi saat ini. |
| IDiaFrameData::get_systemExceptionHandling | Mengambil bendera yang menunjukkan bahwa penanganan pengecualian sistem berlaku. |
| IDiaFrameData::get_cplusplusExceptionHandling | Mengambil bendera yang menunjukkan bahwa penanganan pengecualian C++ berlaku. |
| IDiaFrameData::get_functionStart | Mengambil bendera yang menunjukkan bahwa blok berisi titik masuk fungsi. |
| IDiaFrameData::get_allocatesBasePointer | Mengambil bendera yang menunjukkan bahwa penunjuk dasar dialokasikan untuk kode dalam rentang alamat ini. Metode ini tidak digunakan lagi. |
| IDiaFrameData::get_type | Mengambil jenis bingkai khusus pengompilasi. |
| IDiaFrameData::get_functionParent | Mengambil antarmuka data bingkai untuk fungsi penutup. |
| IDiaFrameData:execute | Melakukan unwinding tumpukan dan mengembalikan status register saat ini dalam antarmuka bingkai stack walk. |
Keterangan
Detail yang tersedia untuk bingkai adalah untuk titik eksekusi dalam rentang alamat yang ditunjukkan oleh alamat dan panjang blok.
Catatan untuk Penelepon
Dapatkan antarmuka ini dengan memanggil metode IDiaEnumFrameData::Next atau IDiaEnumFrameData::Item . Lihat antarmuka IDiaEnumFrameData untuk detailnya.
Contoh
Contoh ini mencetak properti IDiaFrameData objek. Lihat antarmuka IDiaEnumFrameData untuk contoh bagaimana IDiaFrameData antarmuka diperoleh.
void PrintFrameData(IDiaFrameData* pFrameData){
DWORD dwSect;
DWORD dwOffset;
DWORD cbBlock;
DWORD cbLocals; // Number of bytes reserved for the function locals
DWORD cbParams; // Number of bytes reserved for the function arguments
DWORD cbMaxStack;
DWORD cbProlog;
DWORD cbSavedRegs;
BOOL bSEH;
BOOL bEH;
BOOL bStart;
BSTR wszProgram;
if(pFrameData->get_addressSection(&dwSect) == S_OK &&
pFrameData->get_addressOffset(&dwOffset) == S_OK &&
pFrameData->get_lengthBlock(&cbBlock) == S_OK &&
pFrameData->get_lengthLocals(&cbLocals) == S_OK &&
pFrameData->get_lengthParams(&cbParams) == S_OK &&
pFrameData->get_maxStack(&cbMaxStack) == S_OK &&
pFrameData->get_lengthProlog(&cbProlog) == S_OK &&
pFrameData->get_lengthSavedRegisters(&cbSavedRegs) == S_OK &&
pFrameData->get_systemExceptionHandling(&bSEH) == S_OK &&
pFrameData->get_cplusplusExceptionHandling(&bEH) == S_OK &&
pFrameData->get_functionStart(&bStart) == S_OK )
{
wprintf(L"Frame address : %04X:%08X\n", dwSect, dwOffset);
wprintf(L"Block size : 0x%8X\n", cbBlock);
wprintf(L"Locals size : 0x%8X\n", cbLocals);
wprintf(L"Parms size : 0x%8X\n", cbParams);
wprintf(L"Max stack used : 0x%8X\n", cbMaxStack);
wprintf(L"Prolog size : 0x%8X\n", cbProlog);
wprintf(L"Saved regs size: 0x%8X\n", cbSavedRegs);
wprintf(L"System Exception Handling: %c\n", bSEH ? L'Y' : L'N');
wprintf(L"C++ Exception Handling : %c\n", bEH ? L'Y' : L'N');
wprintf(L"Function starts in block : %c\n", bStart ? L'Y' : L'N');
if (pFrameData->get_program(&wszProgram) == S_OK)
{
wprintf(L"Program used for register set: %s\n", wszProgram);
SysFreeString(wszProgram);
}
else
{
wprintf(L"\n");
}
}
}
Persyaratan
Header: Dia2.h
Library: diaguids.lib
DLL: msdia80.dll