Constant ID in Pocket PC

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Hi all,

Does anyone know that is there any constant ID in Pocket PC can be used to
identify the device?

Understand that WM5 is having Device ID in the kernel. How bout Pocket PC
2002 and 2003?

Thanks.
 
Venedict said:
Hi all,

Does anyone know that is there any constant ID in Pocket PC can be used to
identify the device?

Understand that WM5 is having Device ID in the kernel. How bout Pocket PC
2002 and 2003?

Thanks.
Those of you writing code for PocketPCs might be
interested in the following class I've put together (in
C#) which gets the Device ID and Device Name:

public class DeviceID {
private static Int32 METHOD_BUFFERED = 0;
private static Int32 FILE_ANY_ACCESS = 0;
private static Int32 FILE_DEVICE_HAL = 0x00000101;
private const Int32 ERROR_NOT_SUPPORTED = 0x32;
private const Int32 ERROR_INSUFFICIENT_BUFFER = 0x7A;
private static Int32 IOCTL_HAL_GET_DEVICEID =
((FILE_DEVICE_HAL) << 16) | ((FILE_ANY_ACCESS) << 14)`| ((21) << 2) |
(METHOD_BUFFERED);
[DllImport("coredll.dll", SetLastError=true)]
private static extern bool KernelIoControl(Int32 dwIoControlCode,
IntPtr lpInBuf, Int32 nInBufSize, byte[] lpOutBuf,
Int32 nOutBufSize, ref Int32 lpBytesReturned);
private static string _GetDeviceID()
{
byte[] outbuff = new byte[20];
Int32 dwOutBytes;
bool done = false;
Int32 nBuffSize = outbuff.Length;
BitConverter.GetBytes(nBuffSize).CopyTo(outbuff, 0);
dwOutBytes = 0;
// Loop until the device ID is retrieved or an error occurs.
while (! done)
{
if (KernelIoControl(IOCTL_HAL_GET_DEVICEID, IntPtr.Zero,
0, outbuff, nBuffSize, ref dwOutBytes))
{
done = true;
}
else
{
int error = Marshal.GetLastWin32Error();
switch (error)
{
case ERROR_NOT_SUPPORTED:
throw new NotSupportedException(
"IOCTL_HAL_GET_DEVICEID is not supported on this device",
new Win32Exception(error));
case ERROR_INSUFFICIENT_BUFFER:
nBuffSize = BitConverter.ToInt32(outbuff, 0);
outbuff = new byte[nBuffSize];
BitConverter.GetBytes(nBuffSize).CopyTo(outbuff, 0);
break;
default:
throw new Win32Exception(error, "Unexpected error");
}}}
// Copy the elements of the DEVICE_ID structure.
Int32 dwPresetIDOffset = BitConverter.ToInt32(outbuff, 0x4);
Int32 dwPresetIDSize = BitConverter.ToInt32(outbuff, 0x8);
Int32 dwPlatformIDOffset = BitConverter.ToInt32(outbuff, 0xc);
Int32 dwPlatformIDSize = BitConverter.ToInt32(outbuff, 0x10);
StringBuilder sb = new StringBuilder();
for (int i = dwPresetIDOffset;
i < dwPresetIDOffset + dwPresetIDSize; i++)
{
sb.Append(String.Format("{0:X2}", outbuff));
}
sb.Append("-");
for (int i = dwPlatformIDOffset;
i < dwPlatformIDOffset + dwPlatformIDSize; i ++ )
{
sb.Append( String.Format("{0:X2}", outbuff));
}
return sb.ToString();
}
//private void DeviceID_Load(object sender, System.EventArgs e)
public string GetDeviceName
{
get{return System.Net.Dns.GetHostName();}
}
public string GetDeviceID
{
get{return _GetDeviceID();
}}}
 
Back
Top