CDirScan 函数 NextL 引发“Main Panic KERN-EXEC 0”,如果它没有立即被调用 SetScanDataL()(即,如果它在另一个事件之后在同一个事件对象中稍后被调用)
f1() - 在事件对象中调用
iDirScan = CDirScan::NewLC(aFs);
iDirScan->SetScanDataL(aPath,
KEntryAttDir|KEntryAttMatchExclusive,
ESortNone, CDirScan::EScanDownTree);
//wait for some asynchronous event
f2() - 在同一个事件对象中调用,在一些异步事件之后
CDir* dir = NULL;
TRAPD(error, iDirScan->NextL(dir)); -->> "Main Panic KERN-EXEC 0"
如果在等待某个异步事件之前调用 iDirScan->NextL(),则一切正常。
为什么 CDirScan 变量失去了有效性?请注意,异步事件无关,它可以是一个简单的虚拟计时器。
最佳答案
我写了一些测试代码试图重现这个但没成功。
通常,KERN-EXEC 0
panic 通常是由陈旧的 R 对象句柄引起的。例如,确保您传递给 CDirScan
的 RFs
句柄没有过早关闭。
关于c++ - CDirScan 函数 NextL 引发 KERN-EXEC 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1857458/