相关文章  
  • 变Win 2003为工作站(下)
  • 如何在Win 2003中重置Internet协议
  • 在Win 2003配置DNS的Internet访问
  • 设置Win 2003的本地策略应用
  • Win 2000系统引导过程详解(上)
  • Win 2000系统引导过程详解(中)
  • Win 2000系统引导过程详解(下)
  • 《优化xp大全》之系统优化设置
  • 《优化xp大全》之硬件优化
  • 《优化xp大全》之其他
  •   推荐  
      科普之友首页   专利     科普      动物      植物        天文   考古   前沿科技
     您现在的位置在:  首页 >>文献 >>培训

    解析Windows2000的IDT扩展机制4

    应的入口单元后就检查中断门的权限等级参数,看是否允许Ring 3下的应用程序调用,这样操作系统就为我们保留了对软件中断调用控制的权力,然而硬件中断和异常是不会关注权限方面的信息。如果当前权限等级(Current Privilge Level,CPL)数值大于中断门描述符需要的权限(Descriptor Privilege Level),也就是权限不够时会引发一个通用保护故障(General Protection Fault),反之则进行处理器的切换从用户堆栈到内核堆栈。现在是保存线程环境的时候了,处理器将在用户模式下的堆栈指针(SS:ESP)和标准的中断帧(EFLAGS和CS:EIP)压入堆栈。之后处理器进入我们的中断服务例程,执行相关的代码处理后通过汇编指令iretd返回到调用的应用程序。在指令iretd执行时,系统将存储在堆栈中的线程环境数据出栈还原,待系统恢复中断指令执行前的环境后就接着执行应用程序的后续代码。
      
      3> 中断相关数据结构
      
       首先我们介绍一下前面我们提到的一条关键汇编指令sidt的相关数据结构。在执行指令sidt后,系统将会把中断描述符表的基地址和限制(总共长六字节)保存在指令中指向的变量指针中,这就是我们进行IDT操作的入门口。
      
      typedef struct _idtr
      { <

    页码:[1] [2] [3] [4] [5] [6] [7] [8] [9]4页、共9页

         

          设为首页       |       加入收藏       |       广告服务       |       友情链接       |       版权申明      

    Copyriht 2007 - 2008 ©  科普之友 All right reserved