это таблица, которую функция stackwalk
FPO-данные — это таблица, которую функция stackwalk использует для вычислений, связанных с обработкой тех функций, которые пропускают нормальную область стека. Мы рассматриваем FPO-данные еще и потому, что ссылки на них иногда встречаются в MSDN и в различных отладчиках. Можно подробнее познакомиться со структурой FPO-данных в файле WINNT.H.
Листинг 4-8. InitializeStackFrameWithGontext
из i386CPUHELP.C
BOOL CPUHELP_DLLINTERFACE _stdcall
InitializeStackFrameWithContext ( STACKFRAME * pStack,
CONTEXT * pCtx)
{
ASSERT ( FALSE == IsBadReadPtr ( pCtx, sizeof ( CONTEXT)));
ASSERT ( FALSE == IsBadWritePtr ( pStack, sizeof ( STACKFRAME))
} ;
if ( ( TRUE == IsBadReadPtr ( pCtx, sizeof ( CONTEXT))) ||
( TRUE == IsBadWritePtr ( pStack, sizeof ( STACKFRAME))))
{
return ( FALSE);
}
pStack->AddrPC.Offset = pCtx->Eip;
pStack->AddrPC.Mode = AddrModeFlat ;
pStack->AddrStack.Offset = pCtx->Esp;
pStack->AddrStack.Mode = AddrModeFlat ;
pStack->AddrFrame.Offset = pCtx->Ebp;
pStack->AddrFrame.Mode = AddrModeFlat ;
return ( TRUE);
}
Содержание Назад Вперед