我想捕获后台服务的屏幕截图。它在ios6和ios7下工作正常,但在ios7视网膜下崩溃。IOMobileFramebufferGetLayerDefaultSurface无法在ios7上工作视网膜
这是我的代码
{
IOMobileFramebufferConnection connect;
kern_return_t result;
m_screenSurfaceRef = NULL;
io_service_t framebufferService = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleH1CLCD"));
if(!framebufferService)
framebufferService = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleM2CLCD"));
if(!framebufferService)
framebufferService = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleCLCD"));
#pragma unused(result)
result = IOMobileFramebufferOpen(framebufferService, mach_task_self(), 0, &connect);
result = IOMobileFramebufferGetLayerDefaultSurface(connect, 0, &m_screenSurfaceRef);
}
当视网膜IOMobileFramebufferGetLayerDefaultSurface运行(连接,0,& m_screenSurfaceRef)坠毁。
崩溃信息:
线#1:TID = 0x1dfe9,0x000000018ea2c270 IOMobileFramebuffer
IOMobileFramebufferGetLayerDefaultSurface + 4, queue = 'com.apple.main-thread, stop reason = EXC_BAD_ACCESS (code=1, address=0x5e06dc28) frame #0: 0x000000018ea2c270 IOMobileFramebuffer
IOMobileFramebufferGetLayerDefaultSurface + 4
似乎在64位+视网膜,而不仅仅是视网膜崩溃。你看到一样吗? – nevyn
@nevyn谢谢,我构建的32位应用程序,它运作良好。 – joeykika
这是一个不幸的,但也许是可以接受的解决方法。但是,我在下面提供的答案要好得多。你想接受它吗? – nevyn