⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 showseh.c

📁 Windows 95 系統程式設計大奧秘书籍源码
💻 C
字号:
//==================================
// SHOWSEH - Matt Pietrek 1995
// FILE: SHOWSEH.C
//==================================
#include <windows.h>
#include <stdio.h>
#pragma hdrstop
#include "tib.h"

void _except_handler3(void);

void DisplaySEHChain(void)
{
    PTIB ptib;
    PSEH_record psehrec;
    
    __asm {
            mov     ax, fs
            mov     es, ax
            mov     eax, 18h
            mov     ebx, es:[eax]
            mov     [ptib], ebx
    }
    
    psehrec = ptib->pvExcept;

    printf("next rec  handler\n"
           "========  ========\n" );

    while ( psehrec != (PSEH_record)0xFFFFFFFF )
    {
        printf("%08X  %08X\n", psehrec->pNext, psehrec->pfnHandler);
        psehrec = psehrec->pNext;
    }

    printf("\n");
}

void c(void)
{
    DWORD   _esp;
    
    __asm   mov     [_esp], esp
    __try
    {
        DisplaySEHChain();
    }
    __except( 1 )
    {
    }
    
    printf("in    c(), ESP = %08X\n", _esp);
}

void b(void)
{
    DWORD   _esp;
    
    __asm   mov     [_esp], esp

    __try
    {
        c();
    }
    __except( 1 )
    {
    }

    printf("in    b(), ESP = %08X\n", _esp);
}

void a(void)
{
    DWORD   _esp;
    
    __asm   mov     [_esp], esp

    __try
    {
        b();
    }
    __except( 1 )
    {
    }
    printf("in    a(), ESP = %08X\n", _esp);
}

int main()
{
    DWORD   _esp;
    
    printf("offset of __except_handler3: %08X\n\n", _except_handler3);

    __asm   mov     [_esp], esp
    
    __try
    {
        a();
        printf("in main(), ESP = %08X\n", _esp);
    }
    __except( 1 )
    {
    }
    
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -