Mas*_*ler 11 delphi sdl exception privilege delphi-xe
我收到一个错误报告,我的程序使用的外部DLL(SDL_Mixer,如果它有帮助)中的某些音乐播放代码中的某些功能正在提升EPrivilege.DLL是用C语言编写的,因此我无法通过MadExcept从中获取有用的堆栈跟踪信息,并且问题在我的最终无法重现.只是为了让事情变得更糟,我甚至不知道EPrivilege是什么.
我从来没有看到它出现在我自己的代码中,在网上提供的信息很少,而且有什么是矛盾的.(一种解释说,如果你试图用一个有限的帐户做一些需要不可用的权限的东西,操作系统会提出它,另一个解释说如果你试图执行一个高于你的权限级别的指令,它会由CPU引发.)
有没有人对导致EPrivilege的原因有权威的解释?并没有任何人有任何想法如何能够通过音乐播放代码,一台Windows 7 64位机器上的下一个非管理员帐户提出,但没有运行相同的代码时,可以提出我的下一个非Windows 7的64位计算机-admin帐号?
我们使用Delphi进行了大量的实时硬件控制.这涉及读写I/O端口.如果您没有权限(或内核驱动程序)来执行此操作,则可以获得EPrivilege.
比如这段代码:
procedure WriteIOByte( AData : byte; AAddress : word); assembler;
asm
out dx,al
end;
Run Code Online (Sandbox Code Playgroud)
在W98下,它不需要允许它向I/O地址写入一个字节,例如PC并行端口.在NT和它之下它将生成,EPrivilege除非该地址已经以某种方式"打开",例如使用gwiopm.因此EPrivilege可以是"垃圾读/写"的指示符(如David建议的那样),也可以是读取/写入错误设置硬件的不完整设置的指示符.
| 归档时间: |
|
| 查看次数: |
9132 次 |
| 最近记录: |