使用WinIO库实现保护模式下的IO和内存读写(_inp,_outp)
2009-09-15 20:40
393 查看
在WindowsXP等NT内核的操作系统中,#include "conio.h"中定义的端口读写函数_inp,_outp已经不能直接使用了,这是因为Window的保护模式不允许对IO直接进行直接操作。但是在工业控制领域,对IO的读写是最基本的操作,尤其是对ISA总线或并口这类固定地址的存储设备的访问,我们必须能够高效的进行IO读写来进行数据采集。
这里给出的解决方案是使用http://www.internals.com/提供的解决方案,即使用其网站上的WinIO.dll。其关键在与InitializeWinIo()函数调用之后,_inp,_outp函数可以被成功调用,在使用结束后再调用ShutdownWinIo()即可。
需要注意的是在程序运行的目录下必须要有Wio.dll,Wio.sys和Wio.vxd。也就是说我们调用WinIO库来实现IO读写实质上是在调用一个驱动,只有驱动级别的可执行文件才能解除保护模式(可能是进入了内核模式),实现对IO的直接读写。
这里给出的解决方案是使用http://www.internals.com/提供的解决方案,即使用其网站上的WinIO.dll。其关键在与InitializeWinIo()函数调用之后,_inp,_outp函数可以被成功调用,在使用结束后再调用ShutdownWinIo()即可。
需要注意的是在程序运行的目录下必须要有Wio.dll,Wio.sys和Wio.vxd。也就是说我们调用WinIO库来实现IO读写实质上是在调用一个驱动,只有驱动级别的可执行文件才能解除保护模式(可能是进入了内核模式),实现对IO的直接读写。
相关文章推荐
- 使用WinIO库实现保护模式下的IO和内存读写(_inp,_outp)
- 使用WinIO库实现保护模式下的IO和内存读写(_inp,_outp)
- 使用WinIO库实现保护模式下的IO和内存读写
- python使用cStringIO实现临时内存文件访问的方法
- Python StringIO模块(或Six.BytesIO()模块)实现在内存缓冲区中读写数据
- 保护模式下,读写大地址内存 & 从32位保护模式跳回16位实模式
- Python StringIO模块 实现在内存缓冲区中读写数据
- 使用内存读写函数实现进程间通信
- 保护模式下,读写大地址内存 & 从32位保护模式跳回16位实模式
- Python StringIO模块实现在内存缓冲区中读写数据
- 获取系统CPU的核数、软件CPU使用数、内存使用情况、IO读写情况
- 【Java EE 学习 19】【使用过滤器实现全站压缩】【使用ThreadLocal模式解决跨DAO事务回滚问题】
- 使用Goolge开源工具zxing实现二维码读写工具(带Logo)
- 彻底学会使用epoll(一)——ET模式实现分析
- 使用POI来实现对Excel的读写操作
- iOS开发之DKNightVersion的原理和使用,实现夜间模式
- 使用AD组策略实现USB 只读、读写、禁用的管控
- 使用select实现网络的多路IO复用
- 使用ASP.Net Forms模式实现WebService身份验证 补充
- Asp.net Webform 使用Repository模式实现CRUD操作代码生成工具