Recibo un informe de error indicando que cierta funcionalidad en algún código de reproducción de música en una DLL externa (SDL_Mixer, en caso de que sirva) que mi programa utiliza levanta EPrivilege. La DLL está escrita en C, por lo que no puedo obtener información de seguimiento de la pila útil con MadExcept, y el problema no es reproducible por mi parte. Y para empeorar las cosas, Ni siquiera sé qué EPrivilege es.¿Qué causa específicamente que se genere EPrivilege?
Nunca lo he visto aparecer en mi propio código, hay muy poca información disponible en línea, y lo que hay es contradictorio. (Una explicación dice que el sistema operativo la plantea si intenta hacer algo con una cuenta limitada que requiere privilegios que no están disponibles, otro dice que la CPU la plantea si intenta ejecutar una instrucción que está por encima de su nivel de privilegio).
¿Alguien tiene una explicación autorizada de las causas de EPrivilege? ¿Alguien tiene alguna idea de cómo podría ser planteado por el código de reproducción de música en una máquina con Windows 7 de 64 bits bajo una cuenta que no sea de administrador pero no se generará cuando ejecute el mismo código en mi Windows 7 de 64 bits máquina bajo una cuenta no administrativa?
La fuente de RTL realmente no da ninguna pista ... –
@andreas EPrivilege = class (EExternal) es la clave –
@Mason: ¿Verificaste si DEP era el mismo en ambas máquinas? Tuve este problema una vez cuando una aplicación Delphi 2007 generaba una excepción en una máquina pero no en otras (Vista); la máquina con el error DEP se había encendido mientras que los otros no, y algo estaba disparándola. –