我需要为 CE 6.0 设备生成唯一的机器 ID。在 Windows 操作系统上,我使用 WMI 获取一些硬件标识符,我从中构造了这个 ID。显然,Win CE 不支持 WMI,因此我正在寻找替代方案。
目前我正在玩我在 Platform Builder 中构建的操作系统镜像并在模拟器中测试我的应用程序,稍后我将交付真正的 WinCE 设备。
我已经尝试了 GetDeviceUniqueID
和 KernelIoControl(IOCTL_HAL_GET_DEVICEID,...
但它们都返回了 ERROR_NOT_SUPPORTED
(0x80070032)。
- 我是否需要从 wince 目录中包含一些软件包才能启用此功能?
此限制是否仅适用于模拟器? (我的意思是,可能是 OEM 正在为真实设备实现这种唯一 ID 功能吗?
您是否还有其他想法可以构建此值?比如获取硬件/操作系统序列号等,如何获取?
最佳答案
如果您正在构建操作系统,则需要实现 IOCTL,以便 KernelIoControl 返回一些内容。它的派生方式完全取决于您。我看到MAC是base,还有板载flash的序列号。
我不能说你会如何为你的特定平台做到这一点,但作为 x86 的例子,你可能会 clone the code在 %WINCEROOT&\PLATFORM\COMMON\SRC\X86\COMMON\IOCTL\devinfo.c 并修改克隆(显然不要修改通用代码)。
关于c++ - Windows CE 设备的唯一机器 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1119574/