在xp和2k 下,是不能进行低层读写,所以用一些工具切换ring3到ring0,可是读写还是不能正常的,代码如下:
     _asm xor ax,ax
  _asm mov dx,02fbh  //io port为r/w register
  _asm out dx,ax   //只为了debug,直接写入端数据。
  //_asm JMP $+2
  _asm in ax,dx    //ax在该句执行后为ff
         _asm mov result,ax可是结果result 还是 ff.  为什么呢?高手啊!救命呀,做不出来明天就要被公司开了

解决方案 »

  1.   

    NT/2K/XP下不能直接访问端口
    要访问端口,先切换到内核状态,一般要写驱动来实现。
      

  2.   

    你肯定你是在R0运行那段代码的?
    你在SOFTICE下访问端口试试
      

  3.   

    NT内核下不能直接AD/DA,要用驱动!
      

  4.   

    在winnt系列下訪問端口需要用驅動程序!
    http://www.internals.com/上有一個winio的源代碼,你可以參考參考!
      

  5.   

    to syh_17(神探柯南) :
      我正是用的winio的驱动,将系统换在r0运行这段代码的,
    02fb port为串口的lcr读写寄存器,我在borland c++3.0下做同样的动作,是正确的。我不知道会不会还有什么别的原因在vc6下?
      

  6.   

    up一下,问题依就,是不是我已经走在死胡同了!win2k/nt/xp +bc3.0结果正确(不要winio)
    win98+vc6.0结果正确(不要winio)win2k/nt/xp+winio+vc6.0(没有结果)?
    系统高手,我该怎么做呢?