这里给出的解决方案是使用 http://www.internals.com/提供的解决方案,即使用其网站上的
WinIO.dll。其关键在与 InitializeWinIo()函数调用之后,_inp,_outp 函数可以被成功调用,在
使用结束后再调用 ShutdownWinIo()即可。
需要注意的是在程序运行的目录下必须要有 Wio.dll,Wio.sys 和 Wio.vxd。也就是说我们调用
WinIO 库来实现 IO 读写实质上是在调用一个驱动,只有驱动级别的可执行文件才能解除保
护模式(可能是进入了内核模式),实现对 IO 的直接读写。
文章出处:DIY 部落(http://www.diybl.com/course/3_program/c++/cppjs/20090916/175504.html)
把 winio.dll, winio.vxd and winio.sys 放进程序 exe 同一个目录下,加入 winio.lib,加
入 #include "winio.h".....
意事项:使用这个类代码时请确保不要与其它使用常规 Win32 调用***作并行端口的程序
发生冲突。
WinIo 库在 VC 应用程序中的使用(WinIo 库下载)
为了在 VC 中能正常使用 WinIo 库,必须按以下步骤进行配置:
(1):将 WinIo.dll、WinIo.sys、WINIO.VXD 三个文件放在程序可执行文件所在目录下;
(2):将 WinIo.lib 添加到工程中,WinIo.lib 及 winio.h 文件必须放在工程目录下;
(3):在 StdAfx.h 头文件中加入#include "winio.h"语句;
(4):调用 InitializeWinIo 函数初始化 WinIo 驱动库;
(5):调用读写 IO 口的 GetPortVal 或 SetPortVal 函数;
(6):调用 ShutdownWinIo 函数;
在非管理员权限下运行,必须首先完成以下步骤:
(1):将 WinIo.dll、WinIo.sys、WINIO.VXD 三个文件放在任一 WinIo 应用程序可执行文件
所在目录下;
(2):以管理员或其它具有管理员权限的用户身份登陆;
(3):调用 InstallWinIoDriver 函数,第一个参数设置为 WinIo.sys 文件所在目录路径,第二个
参数设 置为 false;