XINGXD
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望25点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1284回复:5

如何解除win9x系统对I/O端口的封锁

楼主#
更多 发布于:2002-12-03 16:22
win9x会封锁某些端口,在softice中用tss命令可以看到是否
被trap,但是用createfile命令后,再用tss看,端口状态就
发生了变化,不知道系统是如何实现的?
或者说在vxd中如何改写I/O permission map(IOPM)?给20分
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-03 19:44
win9x下可以直接对io口操作呀!!
XINGXD
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望25点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-04 09:13
我看到的资料都说可以直接读写I/O,可是我的机器(win98)确实存在
这个问题,我在学习vxd编程,试图共享com2口中断,在OnSysDynamicDeviceInit中完成了中断实例的初始化和hook,
但是从com2口收不到信息,在softice中genint 53证明中断已经
hook并运行,用tss看到2f8-2ff的trap标志是yes,退出后调用一个
含有createfile函数的应用程序,再到softice中看到2f8-2ff的
trap标志以变成no,此时再用drivermonitor装入vxd即可运行,
如果关闭应用程序,2f8-2ff的trap标志会变回yes状态,装入vxd
也就不能正确运行。
我发现在yes状态下,softice的i 2f8返回的为ff,并不是真正的
端口内容,而在no状态下就能i 2f8的内容,也就是说在我的vxd代码
中的in,out指令有没有得到正确执行,是中断不能执行的原因。
但是我奇怪的是用c++编一个含有createfile(\"Com2\",GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);语句的程序并运行,就
能改变tss中的状态,它是如何做到的呢?
另外资料都说在win9x中i/o映射可以直接存取,但也有资料介绍
说win9x会封锁某些port,是不是系统加载的某些驱动会导致封锁的
port不同?应该有办法解除系统对port的封锁吧?
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-04 21:48
是的,有些端口可能无法操作(鼠标等),这是因为系统本身有一个关于鼠标的vxd。重新写一个vxd.
XINGXD
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望25点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-04 22:34
那么自己写的vxd必须在系统的vxd初始化之前初始化了,如何知道
port是被哪个vxd用的?
另外像com1,com2等端口在我的机器上被封锁,可是系统在createfile函数中会释放,在closehandle函数中又会封锁。
我想知道系统是如何做到的?
谢谢gong_xg的回答 给10分
hz_chenliang
驱动牛犊
驱动牛犊
  • 注册日期2002-11-19
  • 最后登录2002-12-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-13 21:24
好像在VXD里面可以随心所欲的进行IO访问,系统没办法设置陷阱的
游客

返回顶部