[旧帖]
请教一个空中断处理函数
0.00雪花
发表于:
2009-11-8 22:29
3347
下面的是我的中断处理函数my_interrupt_hook,其中只调用了findstack
VOID __stdcall findstack()
{
KdPrint(("my trap gate !...\n"));
}
__declspec(naked) VOID my_interrupt_hook()
{
__asm
{
pushad
pushfd
call findstack
popfd
popad
iretd
}
}
上面的中断处理函数通过驱动,在IDT0x22号增加int 0x22中断,
idt_entries[34].LowOffset = (unsigned short)my_interrupt_hook;
idt_entries[34].HiOffset = (unsigned short)((unsigned long)my_interrupt_hook >> 16);
idt_entries[34].selector = (unsigned short)0x8;
idt_entries[34].segment_type = (unsigned char)0xE;
idt_entries[34].system_segment_flag = (unsigned char)0x0;
idt_entries[34].DPL = (unsigned char)0x3;
idt_entries[34].P = (unsigned char)0x1;
但是在应用层使用
......
__asm int 0x22
......
当执行到__asm int 0x22之后,确实进入了中断处理,但回来之后就直接报错退出了..没有继续执行下一条指令......
我的目的就是: __asm int 0x22到我自己构造的中断走一圈,打印出信息,然后回到应用程序继续执行下一条语句,,就像什么事也没有发生....
希望各位帮我指出哪里有问题...谢谢....
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课