您的位置:首页 > 其它

获取Mobile设备唯一ID

2013-02-26 16:33 465 查看
最近需要对Mobile软件进行版本控制,自然就想到获取Mobile设备唯一的ID。通过在网上查找资料,现在已经基本完成了。

目前最有效的一个方法是调用


GetDeviceUniqueID

这个API函数来获取ID。
下面这篇文章对这个函数的使用介绍的很清楚:

/*
HRESULT GetDeviceUniqueID(
LPBYTE pbApplicationData,
DWORD cbApplictionData,
DWORD dwDeviceIDVersion,
LPBYTE pbDeviceIDOutput,
DWORD* pcbDeviceIDOutput
);
*/
[DllImport("coredll.dll")]
private extern static int GetDeviceUniqueID([In, Out] byte[]
appdata,
int cbApplictionData,
int dwDeviceIDVersion,
[In, Out] byte[] deviceIDOuput,
out uint pcbDeviceIDOutput);

private byte[] GetDeviceID(string AppString)
{
// Call the GetDeviceUniqueID
byte[] AppData = new byte[AppString.Length];
for (int count = 0; count < AppString.Length; count++)
AppData[count] = (byte)AppString[count];
int appDataSize = AppData.Length;
byte[] DeviceOutput = new byte[20];
uint SizeOut = 20;
GetDeviceUniqueID(AppData, appDataSize, 1, DeviceOutput, out SizeOut);
return DeviceOutput;
}

通过调用coredll.dll中的GetDeviceUniqueIDAPI函数,可以得到设备唯一ID。
我在使用这个函数时,一直对AppString这个参数不理解,查找多个资料,也没有详细的说明。后来经过多次尝试,总算有点收获。
参数AppString代表应用程序名称,可以为一定长度的任何有效字符串。
比如,可以给AppString赋值"MyAppString",调用此函数后,可以得到有效的设备ID。
但是这个字符串的长度必须要满足在一定的范围之内,不能太长,也不能太短。
如果赋值"MyApp",得到的是空字符串;如果赋值"AppStringString",得到的是乱码。太短不行,太长也不行。
我在项目中使用的是"MyAppString",其他的字符串暂时没有试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: