有什么方法可以使程序得到PDA的唯一标识,该怎么解决

有什么方法可以使程序得到PDA的唯一标识
请尽量说的详细点.



------解决方案--------------------
参考安装目录下samples\CPP\Win32\Cellcore\Extapi
------解决方案--------------------
KernelIoControl可以得到手记设备号。

从 Pocket PC 2000 开始, 微软就建议OEM厂商提供一个叫 KernelIoControl 的函数, 以便用户能访问Pocket PC 2002装置内建的序列号; 遗憾的是, 几乎没有厂商提供这个支持. 从 Pocket PC 2002 开始, 微软开始强制OEM厂商提供此函数.

但是现在的很多手机要访问类似的API都需要“特权”,一般情况下得到的都是空值。
------解决方案--------------------
http://www.cnblogs.com/upto/archive/2006/08/11/GetDeviceUniqueID.html
------解决方案--------------------
DWORD GetTSPLineDeviceID(const HLINEAPP hLineApp,
const DWORD dwNumberDevices,
const DWORD dwAPIVersionLow,
const DWORD dwAPIVersionHigh,
const TCHAR* const psTSPLineName)
{
DWORD dwReturn = 0xffffffff;
for(DWORD dwCurrentDevID = 0 ; dwCurrentDevID < dwNumberDevices ; dwCurrentDevID++)
{
DWORD dwAPIVersion;
LINEEXTENSIONID LineExtensionID;
if ( 0 == lineNegotiateAPIVersion(hLineApp,
dwCurrentDevID,
dwAPIVersionLow,
dwAPIVersionHigh,
&dwAPIVersion,
&LineExtensionID) )
{
LINEDEVCAPS LineDevCaps;
LineDevCaps.dwTotalSize = sizeof(LineDevCaps);
if(0 == lineGetDevCaps(hLineApp, dwCurrentDevID,
dwAPIVersion, 0, &LineDevCaps))
{
BYTE* pLineDevCapsBytes = new BYTE[LineDevCaps.dwNeededSize];
if(0 != pLineDevCapsBytes)
{
LINEDEVCAPS* pLineDevCaps = (LINEDEVCAPS*)pLineDevCapsBytes;
pLineDevCaps-> dwTotalSize = LineDevCaps.dwNeededSize;
if(0 == lineGetDevCaps(hLineApp, dwCurrentDevID,
dwAPIVersion, 0, pLineDevCaps))
{
if(0 == _tcscmp((TCHAR*)((BYTE*)pLineDevCaps+pLineDevCaps-> dwLineNameOffset),
psTSPLineName))
{
dwReturn = dwCurrentDevID;
}
}
delete[] pLineDevCapsBytes;
}
}
}
}
return dwReturn;
}

void DrawIMEI(XXX)
{
HLINEAPP hLineApp;
DWORD dwNumDevs;
DWORD dwAPIVersion = TAPI_API_HIGH_VERSION;
LINEINITIALIZEEXPARAMS stLineInitExParams;

DWORD dwTAPILineDeviceID;
DWORD dwExtVersion;
const DWORD dwMediaMode = LINEMEDIAMODE_DATAMODEM | LINEMEDIAMODE_INTERACTIVEVOICE;
HLINE hLine;
LINEGENERALINFO lviGeneralInfo;
LPBYTE pLineGeneralInfoBytes = NULL;
LPLINEGENERALINFO plviGeneralInfo;
LPTSTR tsSerialNumber;

memset(&stLineInitExParams, 0, sizeof(stLineInitExParams));
stLineInitExParams.dwTotalSize = sizeof(stLineInitExParams);
stLineInitExParams.dwOptions = LINEINITIALIZEEXOPTION_USEEVENT;

if ( lineInitializeEx(&hLineApp,
AfxGetApp()-> m_hInstance,
0,
0,
&dwNumDevs,
&dwAPIVersion,
&stLineInitExParams) == 0 )
{
dwTAPILineDeviceID = GetTSPLineDeviceID(hLineApp,