IOSurface + IOMobileFrameBuffer截屏,手机重启。。。

我就在main.m文件中写了下面代码做试验,当执行到IOMobileFramebufferOpen()这个方法时,手机就重启了,没有给出任何错误提示信息。server 这个参数是获取到了,是有值的。

            IOSurfaceRef server ;
    
    server = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleH1CLCD"));

    if ( !server )
    {
        
        server = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleM2CLCD"));
    }
    
    if ( !server )
    {
        
        server = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("AppleCLCD"));
    }
        IOMobileFramebufferConnection connect;
    

            NSLog(@"server:%p",server);
        IOMobileFramebufferOpen(server,mach_host_self(),0,&connect);

搞了1天没有解决,求大神们帮忙!!! :muscle:

是重启还是reboot了?

。。。还有重启与reboot之分?

我跟进了IOMobileFramebufferOpen()的汇编,

在这里挂掉了。
→ 0x32a89740: blx 0x32a8ec1c ; symbol stub for: IOServiceOpen

一执行这句手机就黑了,然后就是重启的流程了。。。。

IOServiceOpen里面的代码我就没有跟了。。。

说错了,是reboot了还是respring了?

reboot了,
itunes和iphoto都自动打开了,
respring是不会这样的

狗神,我找到原因了,是自己代码写错了。。。

IOMobileFramebufferOpen(self->_server, mach_host_self(),0,&connect); //这个是错误的IOMobileFramebufferOpen(self->_server, mach_task_self(), 0, &connect);//这个是正确的

:joy::joy::joy::joy:

在么 请教下问题,方便透漏下QQ 或者其他联系方式吗? 也是关于截屏的

我是参考这个http://stackoverflow.com/questions/16463402/iosurface-ios-private-api-capture-screenshot-in-background来的

这个截图是截不了游戏吧