Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir yığın çerçevesinin özelliklerini kullanıma sunar.
Sözdizimi
IDiaStackFrame : IUnknown
Vtable Sırasına Göre Yöntemler
Bu arabirim tarafından desteklenen yöntemler şunlardır:
| Metot | Açıklama |
|---|---|
| IDiaStackFrame::get_allocatesBasePointer | Temel işaretçinin bu adres aralığındaki kod için ayrıldığını belirten bir bayrak alır. Bu yöntem kullanım dışıdır. |
| IDiaStackFrame::get_base | Çerçevenin adres tabanını alır. |
| IDiaStackFrame::get_cplusplusExceptionHandling | C++ özel durum işlemenin etkin olduğunu belirten bir bayrak alır. |
| IDiaStackFrame::get_functionStart | Bloğun bir işlevin giriş noktasını içerdiğini belirten bir bayrak alır. |
| IDiaStackFrame::get_lengthLocals | Yığına gönderilen yerel değişkenlerin bayt sayısını alır. |
| IDiaStackFrame::get_lengthParams | Yığına gönderilen parametrelerin bayt sayısını alır. |
| IDiaStackFrame::get_lengthProlog | Bloktaki prologue kodunun bayt sayısını alır |
| IDiaStackFrame::get_lengthSavedRegisters | Yığına gönderilen kayıtlı yazmaçların bayt sayısını alır. |
| IDiaStackFrame::get_localsBase | Yerel ayarların adres tabanını alır. |
| IDiaStackFrame::get_maxStack | Çerçevedeki yığına gönderilen en fazla bayt sayısını alır. |
| IDiaStackFrame::get_rawLVarInstanceValue | Belirtilen yerel değişkenin değerini ham bayt olarak alır. |
| IDiaStackFrame::get_registerValue | Belirtilen bir yazmaç değerini alır. |
| IDiaStackFrame::get_returnAddress | Çerçevenin dönüş adresini alır. |
| IDiaStackFrame::get_size | Çerçevenin boyutunu bayt cinsinden alır. |
| IDiaStackFrame::get_systemExceptionHandling | Sistem özel durum işlemenin etkin olduğunu belirten bir bayrak alır. |
| IDiaStackFrame::get_type | Çerçeve türünü alır. |
Açıklamalar
Yığın çerçevesi, yürütme sırasında bir işlev çağrısının soyutlamasıdır.
Arayanlar İçin Notlar
IDiaEnumStackFrames::Next yöntemini çağırarak bu arabirimi alın. Arabirimi elde etme örneği için IDiaEnumStackFrames arabirimine IDiaStackFrame bakın.
Örnek
Bu örnekte bir yığın çerçevesinin çeşitli öznitelikleri görüntülenir.
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);
}
}
}
Gereksinimler
Üst bilgi: Dia2.h
Kitaplık: diaguids.lib
DLL: msdia80.dll