是什么导致EPrivilege升高?
|
我收到一个错误报告,我的程序使用的外部DLL(SDL_Mixer,如果有帮助)中的某些音乐播放代码中的某些功能正在提高EPrivilege。 DLL是用C编写的,因此我无法使用MadExcept从中获取有用的堆栈跟踪信息,并且最终无法解决该问题。更糟糕的是,我什至不知道什么是EPrivilege。
我从未见过在我自己的代码中出现它,网上关于它的信息很少,而且存在矛盾。 (一种解释说,如果您尝试使用要求不可用特权的受限帐户来做某事,则由操作系统提出,另一种解释是,如果您尝试执行一条指令,则由CPU提出。高于您的特权级别。)
有人对导致EPrivilege产生原因有权威解释吗?并且没有人知道如何在非管理员帐户下在一台Windows 7 64位计算机上通过音乐播放代码来引发它,而在非Windows操作系统下在我的Windows 7 64位计算机上运行相同的代码时如何引发它吗? -admin帐户?
没有找到相关结果
已邀请:
2 个回复
香腔弥胯瓤
异常一样,例如
,
等 管理员权限与此处无关。这是由OS软件强制执行的。指令特权在硬件级别控制。 如果您尝试执行正好拼写特权指令的垃圾(即损坏的函数指针),则会看到这样的错误。内存损坏是唯一合理的解释。只有以内核模式代码为目标的编译器才会发出特权指令。
疮痪徘弦漏
。 例如下面的代码:
在W98下,不需要任何操作就可以将字节写入I / O地址,例如PC并行端口。在NT及其下,它将生成“ 0”,除非已以某种方式(例如,使用gwiopm)对该地址“打开”了该地址。因此,“ 0”可以指示“垃圾读取/写入”(如David所建议的)或不完整的设置,以读取/写入不正确的设置硬件。