delphi中嵌入asm问题(20)

  • 主题发起人 主题发起人 ahhlian
  • 开始时间 开始时间
A

ahhlian

Unregistered / Unconfirmed
GUEST, unregistred user!
以下代码在delphi5+win98环境下正常运行,目前用户要升级操作系统到winxp,请问下面代码该如何调整,直接使用有错误提示:Privileged instruction!!function PortIn(IOAddr : WORD) : BYTE;begin asm mov dx,IOAddr in al,dx mov result,al end;end;procedure PortOut(IOAddr : WORD; Data : BYTE);begin asm mov dx,IOAddr mov al,Data out dx,al end;end;谢谢!
 
由于NT的内核是写保护模式,是不能直接写端口的。 而98是可以从ring3转到ring0,所以可以直接进行读写端口。 下面两个网址分别提供了两个DLL可以用来操作端口http://www.geekhideout.com/iodll.shtml还有一个比上面的功能更强一点的http://www.internals.com/也可以通过API函数来操作端口,参见 http://msdn.microsoft.com/en-us/library/aa913128.aspx
 
Google下载smallport.sys 或累世空间即可
 
没搞懂,我下载来看看先,谢过!!
 
后退
顶部