Dear gurus,
I would appreciate if you couls share with me a piece of VB code that retrieves the IMEI or UUID of a Pocket PC device.
Regards,
E.T.
Dear gurus,
I would appreciate if you couls share with me a piece of VB code that retrieves the IMEI or UUID of a Pocket PC device.
Regards,
E.T.
How to retrieve IMEI or UUID of a Pocket PC device using VB .NET (Windows Mobile 2003 or later)
Robert.Altland
Hi,
Add a module to your project and name it as you like, then copy the following code into it:
Imports
SystemImports
System.CollectionsImports
System.ComponentModelImports
System.DiagnosticsImports
System.Runtime.InteropServicesImports
System.TextModule
Module1 Declare Function KernelIoControl Lib "CoreDll.dll" (ByVal dwIoControlCode As Int32, ByVal lpInBuf As IntPtr, ByVal nInBufSize As Int32, ByVal lpOutBuf() As Byte, ByVal nOutBufSize As Int32, ByRef lpBytesReturned As Int32) As Boolean Public METHOD_BUFFERED As Int32 = 0 Public FILE_ANY_ACCESS As Int32 = 0 Public FILE_DEVICE_HAL As Int32 = &H101 Const ERROR_NOT_SUPPORTED As Int32 = &H32 Const ERROR_INSUFFICIENT_BUFFER As Int32 = &H7A
Public IOCTL_HAL_GET_DEVICEID As Int32 = (&H10000 * FILE_DEVICE_HAL) Or (&H4000 * FILE_ANY_ACCESS) Or (&H4 * 21) Or METHOD_BUFFERED
Public Function GetDeviceID() As String Dim outbuff(19) As Byte Dim dwOutBytes As Int32 Dim done As Boolean = False Dim nBuffSize As Int32 = outbuff.Length BitConverter.GetBytes(nBuffSize).CopyTo(outbuff, 0)dwOutBytes = 0
While Not done If KernelIoControl(IOCTL_HAL_GET_DEVICEID, IntPtr.Zero, 0, outbuff, nBuffSize, dwOutBytes) Thendone =
True Else Dim [error] As Integer = Marshal.GetLastWin32Error() Select Case [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) Case Else Throw New Win32Exception([error], "Unexpected error") End Select End If End While Dim dwPresetIDOffset As Int32 = BitConverter.ToInt32(outbuff, &H4) ' DEVICE_ID.dwPresetIDOffset Dim dwPresetIDSize As Int32 = BitConverter.ToInt32(outbuff, &H8) ' DEVICE_ID.dwPresetIDSize Dim dwPlatformIDOffset As Int32 = BitConverter.ToInt32(outbuff, &HC) ' DEVICE_ID.dwPlatformIDOffset Dim dwPlatformIDSize As Int32 = BitConverter.ToInt32(outbuff, &H10) ' DEVICE_ID.dwPlatformIDBytes Dim sb As New StringBuilder Dim i As Integer For i = dwPresetIDOffset To (dwPresetIDOffset + dwPresetIDSize) - 1sb.Append(
String.Format("{0:X2}", outbuff(i))) Next isb.Append(
"-") For i = dwPlatformIDOffset To (dwPlatformIDOffset + dwPlatformIDSize) - 1sb.Append(
String.Format("{0:X2}", outbuff(i))) Next i Return sb.ToString() End FunctionEnd
ModuleNow, from your application just do something like this:
Dim
result As String = GetDeviceID()MsgBox(result)
Hope it helps,
Jose Adell
A Bodnar
cross post. check your other post on this topic, I've posted a link that provides your answer.