• 使用WinIO库实现保护模式下的IO和内存读写


    问题已解决:

      原因是函数的调用方式与WinIO中不一致,使用的时候漏掉了__stdcall

          函数原定义为:

         

    在实际的GPIO读写中遇到以下问题:

      SetPortVal可正常写入,但是GetPortVal无法读取,程序崩溃,问题事件名称:BEX, 具体原因正在调查。

     

     

    以下内容为参考:

    使用WinIO库实现保护模式下的IO和内存读写

    本篇文章主要介绍了"使用WinIO库实现保护模式下的IO和内存读写(_inp,_outp) ",主要涉及到使用WinIO库实现保护模式下的IO和内存读写(_inp,_outp) 方面的内容,对于使用WinIO库实现保护模式下的IO和内存读写(_inp,_outp) 感兴趣的同学可以参考一下。

     

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

     

    在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的直接读写。

  • 相关阅读:
    个人作业——软件评测
    2020软件工程实践 作业3
    2020软件工程实践 寒假作业2
    2020软件工程实践 寒假作业1
    计网大概
    大写金额转换实现
    软件工程实践总结&个人技术博客
    个人技术博客
    软件评测
    疫情统计实现
  • 原文地址:https://www.cnblogs.com/zhehan54/p/6992841.html
Copyright © 2020-2023  润新知