Windows相当于inb(),outb(),低级别的i / o

时间:2010-04-09 13:10:29

标签: winapi io hardware-port

我有一些Linux代码通过使用inb(),outb(),inl()等低级i / o函数从主板收集温度,电压和风扇速度来监控我们的硬件。

我的挑战是将该代码移植到Windows下作为一个简单的控制台应用程序运行。但我很困惑Win32(或.NET)提供的功能允许我访问直接内存映射端口。

我也不想编写系统驱动程序。

我的Windows工具首选项是VS2008。 (仅供参考)

这可能吗?

3 个答案:

答案 0 :(得分:2)

Windows中I / O端口的默认保护级别阻止用户模式程序在任何端口上使用inp和out指令。你的程序会因GPF而死亡。有几个免费提供的驱动程序可以更改该保护级别,以便ring 3代码可以访问端口。如果你对杀手锏感兴趣,那也没关系。

规范的是inpout32

答案 1 :(得分:0)

大多数硬件位置都映射到无法从用户空间访问的区域,因此您将需要提供所需API的设备驱动程序。

您还可以查看UNIX Application Migration Guide广告MSDN。

答案 2 :(得分:0)

好吧,经过大量的反复试验,我发现有用的两个最有用的部分是:

WinRing0IO.DLL

他们几乎做同样的事情,区别在于你会发现帮助你开始使用它们的代码示例。

希望这对其他人有帮助。