IDiaFrameData
Zveřejňuje podrobnosti rámce zásobníku.
Syntaxe
IDiaFrameData : IUnknown
Metody v pořadí Vtable
Následující tabulka ukazuje metody IDiaFrameData
.
metoda | Popis |
---|---|
IDiaFrameData::get_addressSection | Načte část části adresy kódu pro rámec. |
IDiaFrameData::get_addressOffset | Načte posun části adresy kódu pro rámec. |
IDiaFrameData::get_relativeVirtualAddress | Načte relativní virtuální adresu (RVA) obrázku kódu rámce. |
IDiaFrameData::get_virtualAddress | Načte virtuální adresu (VA) kódu rámce. |
IDiaFrameData::get_lengthBlock | Načte délku bloku kódu popsaného rámcem v bajtech. |
IDiaFrameData::get_lengthLocals | Načte počet bajtů místních proměnných nasdílených do zásobníku. |
IDiaFrameData::get_lengthParams | Načte počet bajtů parametrů nasdílených do zásobníku. |
IDiaFrameData::get_maxStack | Načte maximální počet bajtů nasdílených do zásobníku v rámci. |
IDiaFrameData::get_lengthProlog | Načte počet bajtů prologue kódu v bloku. |
IDiaFrameData::get_lengthSavedRegisters | Načte počet bajtů uložených registrů nasdílených do zásobníku. |
IDiaFrameData::get_program | Načte řetězec programu, který se používá k výpočtu sady registru před voláním aktuální funkce. |
IDiaFrameData::get_systemExceptionHandling | Načte příznak, který označuje, že zpracování výjimek systému je v platnosti. |
IDiaFrameData::get_cplusplusExceptionHandling | Načte příznak, který označuje, že zpracování výjimek jazyka C++ je v platnosti. |
IDiaFrameData::get_functionStart | Načte příznak, který označuje, že blok obsahuje vstupní bod funkce. |
IDiaFrameData::get_allocatesBasePointer | Načte příznak, který označuje, že základní ukazatel je přidělen pro kód v tomto rozsahu adres. Tato metoda je zastaralá. |
IDiaFrameData::get_type | Načte typ rámce specifického pro kompilátor. |
IDiaFrameData::get_functionParent | Načte datové rozhraní rámce pro uzavření funkce. |
IDiaFrameData::execute | Provede odvíjení zásobníku a vrátí aktuální stav registrů v rozhraní rámce chůze zásobníku. |
Poznámky
Podrobnosti dostupné pro rámec jsou určené pro body provádění v rozsahu adres označeném adresou a délkou bloku.
Poznámky pro volající
Získejte toto rozhraní voláním metody IDiaEnumFrameData::Next nebo IDiaEnumFrameData::Item . Podrobnosti najdete v rozhraní IDiaEnumFrameData .
Příklad
Tento příklad vytiskne vlastnosti objektu IDiaFrameData
. Příklad získání rozhraní najdete v rozhraní IDiaFrameData
IDiaEnumFrameData.
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");
}
}
}
Požadavky
Hlavička: Dia2.h
Knihovna: diaguids.lib
DLL: msdia80.dll