CPU特权级的切换 必须通过中断调用门来进行,必须通过汇编语言来实现。没有API能做到这点。因为通常操作系统对内核进行ring 0保护,任何应用程序不能进入ring 0操作。应用程序要使用内核功能(比如新建进程,新建线程等)的话,由系统调用先切换到ring 0,再紧接着切换回ring 3。ring 0对于应用程序来讲是透明的。
学习/认识CPU的GDT http://drops.wooyun.org/tips/7715
浅析Windows的访问权限检查机制 http://blog.csdn.net/jdgdf566/article/details/51894627
Kernel Mode Driver内核方式驱动程序(KMD),该DRIVER运行于NT的KERNEL模式下,类似于RING0。但是,一个KMD的运作环境在不同的时候是根本不同的.DRIVER收到设备请求时的运行环境很可能和设备请求实际操作的运行环境根本不同.这也是NT下,DRIVER的运作也受到NT的许多限制,一不小心,DRIVER和NT就同归于尽,来个BSOD(BLUE SCREEN OF DEATH)。
WDM乃WIN32 DRIVER MODEL的简写,WIN32驱动程序模型。内核方式驱动在16位时期就有,而WDM是32位时出现的,到Windows2000时候较为完整,乃MS力推的'全新'的驱动程序模式。WDM的特点是驱动从kernel中分离出来,工作在系统的底层;并且挂在PnP(即插即用)下面,不必像内核方式的驱动那样在启动时加载。
通过中断门的转移和通过陷阱门的转移之间的差别只是对IF标志的处理。对于中断门,在转移过程中把IF置为0,使得在处理程序执行期间屏蔽掉INTR中断(当然,在中断处理程序中可以人为设置IF标志打开中断,以使得在处理程序执行期间允许响应可屏蔽中断);对于陷阱门,在转移过程中保持IF位不变,即如果IF位原来是1,那么通过陷阱门转移到处理程序之后仍允许INTR中断。因此,中断门最适宜于处理中断,而陷阱门适宜于处理异常。