使用WinIO库实现保护模式下的IO和内存读写(_inp,_outp)

来源:互联网 发布:opencv算法精解 pdf 编辑:程序博客网 时间:2024/05/02 01:19

WindowsXPNT内核的操作系统中,#include "conio.h"中定义的端口读写函数_inp,_outp已经不能直接使用了,这是因为Window的保护模式不允许对IO直接进行直接操作。但是在工业控制领域,对IO的读写是最基本的操作,尤其是对ISA总线或并口这类固定地址的存储设备的访问,我们必须能够高效的进行IO读写来进行数据采集。

这里给出的解决方案是使用http://www.internals.com/提供的解决方案,即使用其网站上的WinIO.dll。其关键在与InitializeWinIo()函数调用之后,_inp,_outp函数可以被成功调用,在使用结束后再调用ShutdownWinIo()即可。

需要注意的是在程序运行的目录下必须要有Wio.dll,Wio.sysWio.vxd。也就是说我们调用WinIO库来实现IO读写实质上是在调用一个驱动,只有驱动级别的可执行文件才能解除保护模式(可能是进入了内核模式),实现对IO的直接读写。

原创粉丝点击