为什么__inbyte会崩溃我的软件?

Joh*_*ith 3 c++ intrinsics

我遇到了这个函数,我想知道它是做什么的,所以我编写了以下代码,用mingw32编译并在Wine和Windows下执行,程序崩溃了.

#include <stdio.h>
#include <stdlib.h>
#include <intrin.h>
int main()
{
 unsigned char j = __inbyte(0xABC); // example value
 printf("%i\n", j);
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在MSDN上查了一下,但我觉得描述模糊不清. http://msdn.microsoft.com/en-us/library/732t2y37%28v=vs.100%29.aspx

unsigned char __inbyte(unsigned short Port);

生成in指令,返回从Port指定的端口读取的一个字节.

dus*_*uff 6

IN指令尝试直接从CPU I/O端口读取一个字节.这是一种特权操作,除非您处于管理员模式(例如,在内核中),否则(几乎)总是会失败.

除非你打算编写内核驱动程序,否则你可以安全地忘记你曾经看过这个内在驱动程序.