【发布时间】:2023-03-14 04:22:01
【问题描述】:
我正在尝试写入端口 0x60 和 0x64,但没有成功。
德尔福代码:
procedure PortOut(IOport: WORD; Value: BYTE); assembler; register;
asm
XCHG DX,AX
OUT DX,AL
end;
在调用 PortOut 时,我得到一个 EPrivilege Privileged 指令 异常,因为 IN 和 OUT 只能作为 Ring0 执行。
我想知道如何让我的应用程序获得 Ring0 权限,或者如何使用一些现有的外部库写入端口 0x60 和 0x64。
【问题讨论】:
-
我已经用 stukelly 的回答更快地解决了这个问题; alexandrul 还发布了一个功能完善的答案。
-
如果您要使用各种 IO 端口 DLL,您还没有解决问题。你只是把自己挖得更深了。我预计您的软件未来会出现大量 BSOD(或在 Windows 7 中取代它们的任何东西)。
-
@ttmrichter 实际上,IO.DLL 工作得非常好(除了它仅适用于 32 位,而且作者说要为 x64 制作一个非常困难,他没有打扰)。我完全没有遇到任何问题,每个人都对 Windows 2000、XP 和 7 上的结果感到满意。
-
它的工作方式非常好,与没有防尖罩的电锯的工作方式几乎相同。当不可避免的错误突然彻底地杀死你的系统而没有任何机会收集任何有意义的调试信息时,你就会明白我的意思了。
标签: windows delphi delphi-7 io