ios助手开发系列(五):文件操作系列2 - 操作文件和文件夹所需要开启的服务:AFC服务和AFC2服务
来源:互联网 发布:如何注册淘宝 编辑:程序博客网 时间:2024/05/21 00:18
额~很久没更新了,主要是这段时间太忙了,没来更新...这几天会多写几章..
这一章要讲的是操作文件需要开启的AFC和AFC2服务.
首先介绍一下这里的服务的概念:
需要设备完成某一个特定功能,首先需要使用相关API通知设备开启对应的服务,然后才能使用其他API来完成特定功能.
设备上有很多功能都需要开启服务,如:
操作文件 - AFC和AFC2服务
音乐和播放列表管理(增删改) - ATC服务
图片和相册管理(增删改) - ATC服务
联系人管理 - Mobilesync服务
应用程序管理(安装卸载等) - Springboard服务和Installation_proxy服务还有HouseArrest服务
当然还有一些其他的服务,这里就不多说了
其中有些服务是需要一直开启的,有些服务则在使用完之后需要马上关闭
今天讲的的是文件操作所需要的AFC服务和AFC2服务.
直接上代码:
开启AFC服务:
BOOL IOSAFCService::Open(){if (iTunesApi::AMDeviceSecureStartService(m_hDevice, iTunesApi::CFStringMakeConstantString("com.apple.afc"), NULL, &serviceHandle) != 0)return FALSE;socketHandle = iTunesApi::AMDServiceConnectionGetSocket(serviceHandle);if(iTunesApi::AMDServiceConnectionGetSecureIOContext(serviceHandle)!=0)return FALSE;if (iTunesApi::AFCConnectionOpen((UINT)socketHandle, 0, &afcHandle) != 0)return FALSE;return TRUE;}
解释:
m_hDevice是之前的设备句柄,不清楚的请开前面几章的内容;
serviceHandle,socketHandle和afcHandle都是HANDLE类型;
其中afcHandle则是最终我们需要的AFC服务的句柄
需要用到的API函数有:
AMDeviceSecureStartService
AMDServiceConnectionGetSocket
AMDServiceConnectionGetSecureIOContext
AFCConnectionOpen
CFStringMakeConstantString 构造设备所需要的字符串类型,在CoreFundation.dll里面
至于函数原型,直接看上面的代码就能看出来,就不多说了。
至于AFC2服务只需要改一个地方:
iTunesApi::CFStringMakeConstantString("com.apple.afc") 改成iTunesApi::CFStringMakeConstantString("com.apple.afc2")即可
这两个服务有什么区别呢?
其中AFC服务是标准的文件系统,AFC2可以算是越狱文件系统了,AFC2服务更高级,
AFC服务所提供的根目录实际上是AFC2服务/var/mobile/Media目录
当然实际上我们一般只用得上AFC服务就足够了
- ios助手开发系列(五):文件操作系列2 - 操作文件和文件夹所需要开启的服务:AFC服务和AFC2服务
- 苹果助手开发随笔系列:3、后续功能所需要的服务
- ios助手开发系列(四):文件操作系列1 - 获取设备文件信息 AFCFileInfoOpen函数和AFCKeyValueRead函数
- ios开发系列之文件的写入读取,NSUserDefaults存储数据,NSFileManager操作文件和文件夹
- ios助手开发系列(六):文件操作系列3 - 文件上传和文件下载
- Android服务Service详解(作用,生命周期,AIDL)系列文章--服务绑定和开启混合使用
- shell常用操作命令系列:服务操作
- 开启服务和绑定服务
- WCF系列:服务的发布和使用
- 服务的用法和开启
- 探索SOA中服务的开发、接口和操作语义
- 文件和文件夹的操作
- 文件和文件夹的操作
- 文件和文件夹的操作
- redhat 的telnet服务开启操作
- ubuntu下开启samba服务和windows共享文件
- ubuntu下开启samba服务和windows共享文件
- AIX服务inetd的查看和操作
- unbound classpath container 'JRE System Library [Java SE6 (MacOS X Default)]' in project 'XXX'
- linux下如何设置JDK环境变量
- Combo Box
- 结构体的内存分配
- VMware linux 上网配置 虚拟机centos不能上网解决方案
- ios助手开发系列(五):文件操作系列2 - 操作文件和文件夹所需要开启的服务:AFC服务和AFC2服务
- Linux设备驱动开发环境的搭建【转】
- 面向对象概念 重载与重写(重写又称覆盖)
- msgpack[C++]使用笔记 和 msgpack/cPickle性能对比
- static作用
- @RequestMapping
- Android Tombstone/Crash的log分析和定位
- python使用web.py建立第一个hello world程序
- C语言sscanf函数的总结