ios助手开发系列(四):文件操作系列1 - 获取设备文件信息 AFCFileInfoOpen函数和AFCKeyValueRead函数

前面的章节中已经讲了:设备监听、设备基本信息获取;

从这一章开始主要是讲一些我们最需要的功能,大概分为:

1、设备文件/文件夹;

2、设备相片;

3、设备应用程序;

4、设备音乐;

5、设备信息(短信、联系人);

以后有新的功能还会补充进来,由于每一个功能都不是一篇文章能够讲完的,都会分为几个小章节;

还有,这个系列的文章不是新手教程,只是给想做这一方面的同志们一份参考资料!

 

今天的这一章就是第一个功能的第一个小章节:获取设备文件信息

对应要讲的函数:

int AFCFileInfoOpen(HANDLE conn,char* path, HANDLE* data);

int AFCKeyValueRead(HANDLE data,HANDLE* key, HANDLE* value);

 

说明:

int AFCFileInfoOpen(HANDLE conn,char* path, HANDLE* data);

参数1:设备连接句柄;(不清楚的同志请参阅前面的章节内容)

参数2:设备文件路径参照  "/DCIM/100APPLE/IMG_0006.JPG";(是设备上的文件路径)

参数3:输出参数,返回数据的句柄,下一个函数需要用到;

返回值:0表示成功;

 

int AFCKeyValueRead(HANDLE data,HANDLE* key, HANDLE* value);

参数1:上个函数中的参数3;

参数2:输出参数;

参数3:输出参数;

返回值:0表示成功;

 

由于获取的文件信息是一个一个键值对,如 st_time = 198263546165;

 

所以我们需要一个链表结构保存文件信息:

typedef struct FileInfo{
	char key[MAX_PATH];
	char value[MAX_PATH];
	FileInfo* next;
} FI,*PFI;

 

下面是具体获取设备文件信息函数:

void GetFileInfomation(IOSFI* fi,char* path)
{
	FI *fi1,*fi2;
	fi = NULL;
	fi1=fi2=(IOSFI *)malloc(sizeof(IOSFI));
	HANDLE data;
	int ret = AFCFileInfoOpen(AFC,path,&data);
	if (ret ==0 && data!=NULL)
	{
		HANDLE hKey,hValue;
		hKey = hValue = NULL;
		while (AFCKeyValueRead(data,&hKey,&hValue)==0 &&hKey!=NULL && hValue!=NULL)
		{
			fi1=(FI *)malloc(sizeof(FI));
			strcpy(fi->key,(char *)(hKey));
			strcpy(fi->value,(char*)(hValue));
			if (fi == NULL)
				fi = fi1;
			else
				fi2->next = fi1;
			fi2 = fi1;
		}
	}
}

 

这样就获取到了设备上的文件基本信息,如创建时间,文件大小等等;

 

对了上面函数中有一个变量AFC是一个HANDLE变量,在下一篇文章中会讲到,是设备文件服务的一个句柄!

 

转载的人,请注明出处!谢谢!

你可能感兴趣的:(链表,ios助手)