阅读:2144回复:2
调用VMM服务和调用INT XX有何区别?
在VTOOLSD和WINDDK 的开发中,我经常需要调用软中断,
此时,可调用VMM 的IFS等,也可调用INT 13H,INT 21H, 但我不知道这两者有何区别,VMM 的服务是否调用低层的 BIOS 或者是DOS ?关于截获WIN9X 的文件操作是否必须 调用IFS?请各位高手指教。非常感激。 各位大虾,怎么 到现在还没有人回答我啊?一星期了! 难么???? 还有, 在ring0 下, RO系列函数,调用中断来完成文件操作的,是否 与 DPMI 有关?因为DPMI 是WINDOWS 的启动序列的头, 难道切换到保护模式后,就丢下不管吗? [zwwzm 编辑于 2001-07-05 04:49] |
|
|
沙发#
发布于:2001-07-08 09:03
真心感谢LUO版主的指教。
再请问,既然跳到相应的VXD SERVICE 里,那么 我在VXD 中,不是也可就直接调用INT XXH?让各位的VXD 代劳了,省的调用废人的VXD SERVICE 服务(思念可爱的DOS 时代),请问这样可以吗? 这样,关于IFSH 的调用是否就可拦截INT XXH了呢? 反正关于VXD 文件操作的参数和DOS ,BIOS 中断调用的参数 几乎相同。这可以吗? [zwwzm 编辑于 2001-07-08 09:09] |
|
|
板凳#
发布于:2001-07-06 16:17
区别在于各路VXD会将INT XX拦截.并且跳转到相应的VXD SERVICE中.
VXD SERVICE最终的实现是不调用INT XX的. 当没有VXD愿意提供INT XX的服务时, 缺省的服务代码是DOS代码. 这时,VMM将CPU切换到V86 MODE. 然后进行服务. 这业就是VMCB里有2个IDT的原因了. |
|
|