我有一些 Linux 代码通过使用 inb()、outb()、inl() 等低级 i/o 函数从主板收集温度、电压和风扇速度来监控我们的硬件。
我的挑战是将代码移植到 Windows 下作为简单的控制台应用程序运行。但我对 Win32(或 .NET)提供的哪些功能允许我访问直接内存映射端口感到困惑。
我也不想编写系统驱动程序。
我的 Windows 工具偏好是 VS2008。(供参考)
这可能吗?
我有一些 Linux 代码通过使用 inb()、outb()、inl() 等低级 i/o 函数从主板收集温度、电压和风扇速度来监控我们的硬件。
我的挑战是将代码移植到 Windows 下作为简单的控制台应用程序运行。但我对 Win32(或 .NET)提供的哪些功能允许我访问直接内存映射端口感到困惑。
我也不想编写系统驱动程序。
我的 Windows 工具偏好是 VS2008。(供参考)
这可能吗?
Windows 中 I/O 端口的默认保护级别阻止用户模式程序在任何端口上使用输入和输出指令。您的程序将因 GPF 而死。有几个免费提供的驱动程序可以更改保护级别,以便环 3 代码可以访问端口。如果您对杀手级戳感兴趣,那没关系。
规范的是inpout32。
大多数硬件位置都映射在用户空间无法访问的区域,因此您将需要一个提供所需 API 的设备驱动程序。
您还可以查看UNIX 应用程序迁移指南和 MSDN。