2009-07-13 77 views
0

我需要为CE 6.0设备生成唯一的机器标识。在Windows操作系统上,我使用WMI来获取一些硬件标识符,从中我构建了这个ID。显然,Win CE不支持WMI,所以我正在寻找替代品。Windows CE设备的唯一机器标识

目前我正在玩的是我在Platform Builder中构建的操作系统映像,并在仿真器中测试了我的应用程序,之后我才会提供真正的WinCE设备。

我试过GetDeviceUniqueIDKernelIoControl(IOCTL_HAL_GET_DEVICEID,...,但它们都返回ERROR_NOT_SUPPORTED(0x80070032)。

  1. 我是否需要在wince目录中包含一些包才能启用此功能?
  2. 此限制仅适用于仿真器吗? (我的意思是,这可能是OEM正在实现真正的设备这个独特的ID功能?

  3. 你有任何其他的想法,我可以如何构建这个值吗?就像获取硬件/操作系列等,以及如何? 。

回答

2

如果”重新构建操作系统,那么你需要实现IOCTL,以便KernelIoControl返回一些东西。它的派生完全取决于你。我已经看到了MAC作为基础,以及板载闪存的序列号。

你会怎么做你的特定平台,我不能说,但作为X86及例如,您可能clone the code在%WINCEROOT & \ PLATFORM \ COMMON \ SRC \ X86 \ COMMON \ IOCTL \ devinfo.c和修改克隆号(不要修改通用代码,很明显)。

0

不知道,如果是旧帽子,但this thread似乎有关,似乎使用乡亲模拟器都得到“真正的前瞻性” ID提:S,和乡亲不断得到0

+0

我在搜索解决方案时也找到了该链接。它不清楚,但我怀疑那些得到0作为ID的人与我有同样的问题。其实,在我第一次尝试时,我也得到了0,但后来检查了HRESULT并注意到了错误。所以我认为他们也得到了一些错误代码(并忽略HRESULT)。 – 2009-07-13 14:37:50