c++ - 如何读取 C++ 中硬编码地址的值?

标签 c++ pc104

我想读取位于地址 302H 中的值。目的是从硬件(104pc 堆栈的一部分)读取输入。当我运行以下代码时出现此错误:setOutput.exe 中 0x004134b9 处未处理的异常:0xC0000005:访问冲突读取位置 0x00000302。

#include <stdlib.h> 

#define PORTBASE 0x302
int _tmain(int argc, char *argv[])
{
    int value;
    int volatile * port = (int *) PORTBASE;
    printf("port = %d\n", port);
    value = *port;
    printf("port value = %d\n", value);
}

编辑:

我在 widows xp 下运行这个。我能在板上找到的唯一文档在 enter image description here 下面

编辑:

从您下面的回答中,我可以看出我需要为开发板编写一个驱动程序。有人可以为我指出有关如何执行此操作的资源吗?

最佳答案

要在Windows下直接访问物理内存,需要开发驱动程序。我建议你阅读 Virtual Address Space看看为什么。简短的故事:您从用户模式进程中看到的内存地址与物理内存地址无关,并且硬件所在的地址受到操作系统的保护,以防止用户模式应用程序搞砸事情。

关于c++ - 如何读取 C++ 中硬编码地址的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5158220/

相关文章:

c++ - 在 boost::bind 中使用 boost 信号

c++ - 在 Qt pro 文件中定义 bool

c++ - 遍历数组指针?

c++ - 通过void函数获取数据成员(c++)

c++ - 根据对的第二个值查找对 vector 的上限