ios助手开发系列(二):第一步,设备连接
上一篇简单介绍了ios助手的调查方向,从这一篇开始,则是讲解ios助手的具体开发了。
废话不多说,ios助手大部分功能的实现都在iTunesMobileDevice.dll里面。这个助手进行的第一步就是要设备连接,只有连接设备之后才能做其他事情。
其中AMDeviceNotificationSubscribe函数,就是负责设备连接这一块的。
函数原型:
int AMDeviceNotificationSubscribe(void (*callback)(ConnectStateInfomation* state),UINT uint1,UINT uint2,UINT uint3,HANDLE *handle);
其中ConnectStateInfomation是一个结构体,该结构体的原型如下:
struct ConnectStateInfomation
{
HANDLE handle;
UINT state;
};
下面来讲解这个函数的具体情况:
此函数是注册一个回调函数,监听设备的连接状态,并将结构写入ConnectStateInfomation中,其中该结构中的handle是连接设备的句柄,state是连接的设备的状态,state为1的时候表示连接成功,为2的时候表示断开连接;
第1个参数,需要传入一个回调函数的指针,该回调函数的原型是:void (*callback)(ConnectStateInfomation* state);
第2、3、4个参数全部填0;
第5个参数是一个输出参数;也是连接设备的句柄;
使用示例:
...
HINSTANCE ____hDLL_iTunesMobileDevice;
WCHAR ____iTunesMobileDevice_path[MAX_PATH];
/*这一段是将dll路径写入环境变量,不然下面的LoadLibrary会加载失败*/
char *libvar;
char newlibvar[2048];
libvar = getenv("path");
sprintf(newlibvar,"path=%s",libvar);
strcat(newlibvar,";C:\\Program Files (x86)\\Common Files\\Apple\\Mobile Device Support");
strcat(newlibvar,";C:\\Program Files (x86)\\Common Files\\Apple\\Apple Application Support");
_putenv(newlibvar);
/*end*/
wcscpy(____iTunesMobileDevice_path,L"C:\\Program Files (x86)\\Common Files\\Apple\\Mobile Device Support\\iTunesMobileDevice.dll");
____hDLL_iTunesMobileDevice = ::LoadLibrary(____iTunesMobileDevice_path);
...
/*在这个函数里面下断点,有设备接入的时候,就会走到这里面来了,ios助手开发的第一步就算完成了*/
void OnCennect(ConnectStateInfomation* state)
{
HANDLE handle = state->handle;
int mystate = state->state;
}
...
HANDLE handle;
typedef int (*pFunc)(void (*callback)(ConnectStateInfomation* state),UINT uint1,UINT uint2,UINT uint3,HANDLE *handle);
pFunc AMDeviceNotificationSubscribe= NULL;
AMDeviceNotificationSubscribe=(pFunc)GetProcAddress(____hDLL_iTunesMobileDevice,"AMDeviceNotificationSubscribe");
if(AMDeviceNotificationSubscribe)
return AMDeviceNotificationSubscribe(OnCennect,0,0,0,handle);
...
其余的就在下一篇文章里面讲吧,如获取设备的基本信息等等
更多推荐
所有评论(0)