ruozhen
驱动牛犊
驱动牛犊
  • 注册日期2002-11-27
  • 最后登录2005-08-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1266回复:6

一件奇怪的事情

楼主#
更多 发布于:2003-01-07 08:43
1>我在98下用BC编inp,outp(16bit程序)
结果发现outp某个端口之后,然后用inp读取同一个端口
返回值却是ff,outp和inp内容不一样,这两个函数根本不起作用

2>然后重启机器,来到MS-Dos方式下,执行程序,发现outp和inp
内容完全一样

3>然后我回到98下,在VC下编了一个程序,CreateProcess调用那个BC
程序,并置为REALTIME_PRIORITY_CLASS
效果同1>一样

真搞不懂98下如何处理端口读写的
好像有种随机性,有时候可以,有时候不行    

我用的示范程序是人家在dos时代用汇编编的
应该在dos下跑没问题
到了win98下却不行

  
ruozhen
驱动牛犊
驱动牛犊
  • 注册日期2002-11-27
  • 最后登录2005-08-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-01-08 14:37
事实上,在98下,可以对某些端口直接读写的
例如串口,并口之类
我就不清楚,系统到底对那些端口进行了保护,不能让我直接访问
MSDN也没有相应的资料
另外,我的程序,在前一段时间,在windows下是可以起作用的,
突然间,就不起作用了,只能在纯dos下起作用
让人莫名其妙
难道是闹鬼了?
flyonearth
驱动中牛
驱动中牛
  • 注册日期2002-12-25
  • 最后登录2009-07-01
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望30点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-01-08 14:27
Windows和DOS不一样,对底层设备的访问是做了一些保护的,因此直接访问的话是不能得到正确结果的。只有在CPU运行在RING0级别的代码才对硬件设备有完全的访问权限。
ruozhen
驱动牛犊
驱动牛犊
  • 注册日期2002-11-27
  • 最后登录2005-08-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-01-08 13:13
windows把重要的端口 (IDE)屏蔽了,哪如果想访问,该怎么办?
必须写VXD,在核心态下访问?
另外,关于windows屏蔽重要端口,您能提供资料么?

小弟不胜感激
Ares
驱动小牛
驱动小牛
  • 注册日期2001-03-28
  • 最后登录2020-04-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望114点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2003-01-08 09:38
到于某些重要的端口(如IDE),WINDOWS是屏蔽了的
易水
tjm
tjm
驱动小牛
驱动小牛
  • 注册日期2002-05-18
  • 最后登录2004-10-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-01-07 22:35
不是随机性。WINDOWS下你说的两个库函数是不能正常工作的。
你可以使用嵌入汇编,来操作端口。
象这样:
__asm
{
  mov eax,data
  mov edx,port
  out edx,eax     //输出
.........
.......
  in eax,edx      //输入
  mov data,eax
.......
}
ruozhen
驱动牛犊
驱动牛犊
  • 注册日期2002-11-27
  • 最后登录2005-08-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-01-07 09:46
下面一个是一个别人写的sample
http://www.nondot.org/sabre/os/files/Disk/HD_PORTS.asm
另外参考http://www.nondot.org/~sabre/os
/articles/DiskandDiscDrives/
大家可以在outp之后马上inp,然后在98下测试
该程序是安全的
                        
游客

返回顶部