3

我遇到了这个函数,想知道它是做什么的,所以我写了以下代码,用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;
}

我在 MSDN 上查过,但我发现描述很模糊。 http://msdn.microsoft.com/en-us/library/732t2y37%28v=vs.100%29.aspx

unsigned char __inbyte(unsigned short Port);

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

4

1 回答 1

6

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

除非您打算编写内核驱动程序,否则您可以放心地忘记您曾经看到过这个内在函数。

于 2013-04-09T20:07:24.647 回答