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.
Yığın çerçevesinin ayrıntılarını gösterir.
Sözdizimi
IDiaFrameData : IUnknown
Vtable Sırasına Göre Yöntemler
Aşağıdaki tabloda yönteminin yöntemleri gösterilmektedir IDiaFrameData.
| Metot | Açıklama |
|---|---|
| IDiaFrameData::get_addressSection | Çerçevenin kod adresinin bölüm bölümünü alır. |
| IDiaFrameData::get_addressOffset | Çerçeve için kod adresinin uzaklık bölümünü alır. |
| IDiaFrameData::get_relativeVirtualAddress | Çerçeve kodunun görüntü göreli sanal adresini (RVA) alır. |
| IDiaFrameData::get_virtualAddress | Çerçeve kodunun sanal adresini (VA) alır. |
| IDiaFrameData::get_lengthBlock | Çerçeve tarafından açıklanan kod bloğunun uzunluğunu bayt cinsinden alır. |
| IDiaFrameData::get_lengthLocals | Yığına gönderilen yerel değişkenlerin bayt sayısını alır. |
| IDiaFrameData::get_lengthParams | Yığına gönderilen parametrelerin bayt sayısını alır. |
| IDiaFrameData::get_maxStack | Çerçevedeki yığına gönderilen en fazla bayt sayısını alır. |
| IDiaFrameData::get_lengthProlog | Bloktaki prologue kodunun bayt sayısını alır. |
| IDiaFrameData::get_lengthSavedRegisters | Yığına gönderilen kayıtlı yazmaçların bayt sayısını alır. |
| IDiaFrameData::get_program | Geçerli işlev çağrısından önce yazmaç kümesini hesaplamak için kullanılan program dizesini alır. |
| IDiaFrameData::get_systemExceptionHandling | Sistem özel durum işlemenin etkin olduğunu belirten bir bayrak alır. |
| IDiaFrameData::get_cplusplusExceptionHandling | C++ özel durum işlemenin etkin olduğunu belirten bir bayrak alır. |
| IDiaFrameData::get_functionStart | Bloğun bir işlevin giriş noktasını içerdiğini belirten bir bayrak alır. |
| IDiaFrameData::get_allocatesBasePointer | Temel işaretçinin bu adres aralığındaki kod için ayrıldığını gösteren bir bayrak alır. Bu yöntem kullanım dışıdır. |
| IDiaFrameData::get_type | Derleyiciye özgü çerçeve türünü alır. |
| IDiaFrameData::get_functionParent | kapsayan işlev için çerçeve veri arabirimini alır. |
| IDiaFrameData::execute | Yığın geri sarmayı gerçekleştirir ve bir yığın yürüyüş çerçevesi arabirimindeki yazmaçların geçerli durumunu döndürür. |
Açıklamalar
Bir çerçeve için kullanılabilen ayrıntılar, adres ve blok uzunluğuyla belirtilen adres aralığındaki yürütme noktalarına yöneliktir.
Arayanlar İçin Notlar
IDiaEnumFrameData::Next veya IDiaEnumFrameData::Item yöntemlerini çağırarak bu arabirimi alın. Ayrıntılar için IDiaEnumFrameData arabirimine bakın.
Örnek
Bu örnek, bir IDiaFrameData nesnenin özelliklerini yazdırır. Arabirimin nasıl elde olduğuna ilişkin bir örnek için IDiaEnumFrameData arabirimine IDiaFrameData bakın.
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");
}
}
}
Gereksinimler
Üst bilgi: Dia2.h
Kitaplık: diaguids.lib
DLL: msdia80.dll