IDiaStackFrame
Opisuje właściwości ramki stosu.
IDiaStackFrame : IUnknown
Metody w kolejności Vtable
Dostępne są następujące metody obsługiwane przez ten interfejs:
Metoda |
Opis |
---|---|
Pobiera flaga oznaczająca, że wskaźnik podstawowy jest przydzielona dla kodu w tym zakresie adresów.Metoda ta została zaniechana. |
|
Pobiera adres podstawy ramki. |
|
Pobiera flagi wskazujące obsługę wyjątków C++ jest aktywna. |
|
Pobiera flagi wskazujące, że blok zawiera punkt wejścia funkcji. |
|
Pobiera liczbę bajtów zmiennych lokalnych przesunięta na stosie. |
|
Pobiera liczbę bajtów parametrów przesunięta na stosie. |
|
Pobiera liczbę bajtów prologu kod w bloku |
|
Pobiera liczba bajtów zapisanych rejestrów przesunięta na stosie. |
|
Pobiera adres podstawy zmiennych lokalnych. |
|
Pobiera maksymalną liczbę bajtów przesunięta na stosie w ramce. |
|
Pobiera wartość określonej zmiennej lokalnej jako surowca bajtów. |
|
Pobiera wartość określonego rejestru. |
|
Pobiera adres zwrotny ramki. |
|
Pobiera rozmiar ramki w bajtach. |
|
Pobiera flagi wskazujące obsługi wyjątków systemu jest aktywna. |
|
Pobiera typ ramki. |
Uwagi
Ramka stosu jest abstrakcji wywołanie funkcji podczas jej wykonywania.
Uwagi do wywoływania
Ten interfejs uzyskać, wywołując IDiaEnumStackFrames::Next metody.Zobacz IDiaEnumStackFrames interfejsu, na przykład uzyskał IDiaStackFrame interfejsu.
Przykład
W tym przykładzie wyświetla różne atrybuty ramki stosu.
void PrintStackFrame(IDiaStackFrame* pFrame)
{
if (pFrame != NULL)
{
ULONGLONG bottom = 0;
ULONGLONG top = 0;
if (pFrame->get_base(&bottom) == S_OK &&
pFrame->get_registerValue( CV_REG_ESP, &top ) == S_OK )
{
printf("range = 0x%08I64x - 0x%08I64x\n", bottom, top);
}
ULONGLONG returnAddress = 0;
if (pFrame->get_returnAddress(&returnAddress) == S_OK)
{
printf("return address = 0x%08I64x\n", returnAddress);
}
DWORD lengthFrame = 0;
DWORD lengthLocals = 0;
DWORD lengthParams = 0;
DWORD lengthProlog = 0;
DWORD lengthSavedRegs = 0;
if (pFrame->get_size(&lengthFrame) == S_OK &&
pFrame->get_lengthLocals(&lengthLocals) == S_OK &&
pFrame->get_lengthParams(&lengthParams) == S_OK &&
pFrame->get_lengthProlog(&lengthProlog) == S_OK &&
pFrame->get_lengthSavedRegisters(&lengthSavedRegs) == S_OK)
{
printf("stack frame size = 0x%08lx bytes\n", lengthFrame);
printf("length of locals = 0x%08lx bytes\n", lengthLocals);
printf("length of parameters = 0x%08lx bytes\n", lengthParams);
printf("length of prolog = 0x%08lx bytes\n", lengthProlog);
printf("length of saved registers = 0x%08lx bytes\n", lengthSavedRegs);
}
}
}
Wymagania
Nagłówek: Dia2.h
Biblioteki: diaguids.lib
Biblioteka DLL: msdia80.dll