MGFetch的使用问题
From Forum Nokia Wiki
KIS000765
- 开发伙伴平台:
S60 3rd Edition
- 详细描述
MGFetch(类可以获取多媒体文件夹中的文件名)需要ReadUserData能力。此外模拟器默认还会对DRM能力做检查。当使用MGFetch的应用程序编译成GCCE UDEB模式运行时,会引发KERN-EXEC 3错误。
S60第三版文档(SDK帮助)声明MGFetch不需要任何能力。但是,在使用时却会返回KErrPermissionDenied(-46)错误。只有当程序拥有ReadUserData能力时才能正常工作。当程序运行在模拟器时,缺省还会检查DRM能力,即使没有多媒体文件是需要DRM保护的。
使用MGFetch::RunL()方法的程序,编译为GCCE UDEB模式时,在选择一个多媒体文件时便会产生KERN-EXEC 3错误。这种情况的发生是因为UDEB编译包含的debug代码会消耗很多堆栈内存。
- 如何重现
当程序使用MGFetch::RunL()方法时,在模拟器上运行它,检查EPOCWIND.OUT这个log文件,并且搜索“*PlatSec* ERROR”字符串。
EPOCWIND.OUT是S60模拟器生成的log文件。默认生成在用户临时文件夹中(通常为C:\Documents and Settings\[Username]\Local Settings\Temp in Windows XP)
- 解决方案
指定ReadUserData能力,并在mmp工程定义文件中增加堆栈大小设置
EPOCSTACKSIZE 0x5000
