gpt4 book ai didi

delphi - 具体是什么导致 EPrivilege 提高?

转载 作者:行者123 更新时间:2023-12-03 14:39:33 24 4
gpt4 key购买 nike

我收到一份错误报告,指出我的程序使用的外部 DLL(SDL_Mixer,如果它有帮助)中的某些音乐播放代码中的某些功能正在提高 EPrivilege。该 DLL 是用 C 编写的,因此我无法使用 MadExcept 从中获取有用的堆栈跟踪信息,并且该问题在我这边无法重现。更糟糕的是,我什至不知道 EPrivilege 是什么

我从未见过它出现在我自己的代码中,网上关于它的信息很少,而且内容是矛盾的。 (一种解释是,如果您尝试使用有限帐户执行某些需要不可用权限的操作,则操作系统会引发此错误;另一种解释则表示,如果您尝试执行高于您的权限级别的指令,则 CPU 会引发此错误。)

有谁对EPrivilege的原因有权威的解释吗?有谁知道如何在非管理员帐户下的一台 Windows 7 64 位计算机上通过音乐播放代码来引发它,但在我的 Windows 7 上运行相同的代码时却不会引发它非管理员帐户下的 64 位计算机?

最佳答案

当硬件反对您尝试在用户模式下运行特权指令时,会引发

EPrivilege。这些特权指令仅限于管理员模式,即 ring 0 .

硬件引发错误,然后 RTL 捕获该错误并将其映射到 RTL 异常,就像所有 EExternal 异常一样,例如EAccessViolationEStackOverflow

管理员权限与此处无关。这是由操作系统软件强制执行的。指令权限在硬件级别进行控制。

如果您尝试执行垃圾(即损坏的函数指针),而这恰好拼写了特权指令,您会看到这样的错误。内存损坏是唯一合理的解释。只有针对内核模式代码的编译器才会发出特权指令。

关于delphi - 具体是什么导致 EPrivilege 提高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6474278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com