×
Namespaces

Variants
Actions

Archived:MGFetch的使用问题

From Nokia Developer Wiki
Jump to: navigation, search

Archived.png存档: 这篇文章是存档,因为考虑到今天它与第三方开发者建立商业解决方案不相关。

Article Metadata

兼容于
平台: S60 3rd Edition
S60 3rd Edition (initial release)

文章
翻译:
hoolee
最后由 hamishwillee 在 16 Aug 2012 编辑
  • 详细描述

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
This page was last modified on 16 August 2012, at 09:42.
216 page views in the last 30 days.