I have just implemented such a thing for my app, though not specifically for
the Sprint 6700.
For earlier operating systems than WM5, the call to the DeviceID via
IOCTL_HAL_GET_DEVICEID did give a DeviceID in most cases but was dependent
on whether the OEM had supplied one for that device.
Since IOCTL_HAL_GET_DEVICEID is a kernel call in WM5, it is now privileged
and so only apps that run in privileged mode can successfully call it. WM5
has provided another function, GetDeviceUniqueID(), so that a wider number
of apps can get a unique DeviceID, and do not specifically have to be
running in privileged mode.
The design for a unique ID has changed with this new function. Your app now
passes a unique identifier, more than 8 characters, and it will always
return a 20-character unique number for your app even if the device is hard
reset. Another app would pass yet another app identifier to the same device
and get a different GetDeviceUniqueID(). So, for each app, a unique DeviceID
is now given. I had to modify my app for the way I get the DeviceID if my
app was loaded into a WM5 device, since it is unsigned at the moment.
While this new function seems to work on other WM5 devices for my app, I
cannot say whether it specifically works on the Sprint 6700 but since it
uses WM5, I would expect it to work in the same way.
Regards,
Neville Lang