阅读:1304回复:2
当函数调用从用户栈进入内核栈的时候
比如说在用户层调用了在ntdll.dll中的函数NtQueryDirectoryFile,它就会陷入中断进入内核层去调用内核层的SSDT中的同名函数,那么它在内核栈中是怎么保存返回用户层栈的地址的呢?是保存在哪个数据结构里面?怎么返回?谁能讲解一下么?
|
|
沙发#
发布于:2007-06-08 08:26
参考指令INT 和SYSENTER(SYSCALL)的说明。
|
|
|
板凳#
发布于:2007-06-11 09:27
SYSENTER 等同int2E,进入IDT2E 中断handle处理器:
保留应用层现场 用户层堆栈和核心堆栈切换, 完成service dispatch... 最后: sysexit 退出中断,根据堆栈返回地址,返回应用层. 自己仔细跟踪一下就知道 :=) |
|