Re: 取得PPC2003设备机身设备序号的EVC程序和代码

Embedded VC

取得PPC2003设备机身设备序号的EVC程序和代码


MacintoshM 2006-05-14, 11:55
主要是使用KernelIOControl这个函数
CString GetSerialNumberFromKernelIoControl()
{
        DWORD dwOutBytes;
        const int nBuffSize = 4096;
        byte arrOutBuff[nBuffSize];

        BOOL bRes = ::KernelIoControl(IOCTL_HAL_GET_DEVICEID,
                                     0, 0, arrOutBuff, nBuffSize, &dwOutBytes);

        if (bRes)
        {
                CString strDeviceInfo;
                for (unsigned int i = 0; i<dwOutBytes; i++)
                {
                        CString strNextChar;
                        strNextChar.Format(TEXT("%02X"), arrOutBuff);
                        strDeviceInfo += strNextChar;
                }
                CString strDeviceId =
                        strDeviceInfo.Mid(40,2) +
                        strDeviceInfo.Mid(45,9) +
                        strDeviceInfo.Mid(70,6);

                return strDeviceId;
        }
        else
        {
                return _T("");
        }
}

Re: 取得PPC2003设备机身设备序号的EVC程序和代?


枫叶 2006-11-26, 1:47
顶,这个有用

Re: 取得PPC2003设备机身设备序号的EVC程序和代码


IMGGTOO 2007-04-03, 15:15
下载了,就得顶!!!

Re: 取得PPC2003设备机身设备序号的EVC程序和代码


IMGGTOO 2007-04-03, 16:08
程序在模拟器上可以正确运行.

问楼主个问题:我在MSDN上查了"KernelIoControl"这个函数,
"
Requirements
OS Versions: Windows CE 2.10 and later.
Header: Pkfuncs.h.
Link Library: Coredll.lib.

"

但是我添加了#include "Pkfuncs.h",却提示找不到这个头文件.楼主使用这个函数的方法好奇怪,能否简单的解释下?

另外,获取的数据,固定取其中几位:CString strDeviceId =
strDeviceInfo.Mid(40,2) +
strDeviceInfo.Mid(45,9) +
strDeviceInfo.Mid(70,6);

这也是确定的吗?

Re: 取得PPC2003设备机身设备序号的EVC程序和代码


sunboywxp 2007-11-30, 21:33
为什么我下载下来在wince4.2下不能运行呢?提示缺少组件。还需要什么dll?

Re: 取得PPC2003设备机身设备序号的EVC程序和代码


梦书 2008-01-17, 15:10
Pkfuncs.h 在SDK的目录下是找不到的 ,因为函数KernelIoControl是特权的 API,一般只有OEM厂商才有,不过 你可以在网上搜索到该函数的用法,其实很简单,只要知道其原型以及自己定义 一些宏即可,MS已经 提供了实现该函数的库但没有 提供头文件.
MSN:fzlbqiang@hotmail.com
Blog:http://www.cnblogs.com/mengshu-lbq
Copy Left WinFans(R)

Powered by Community Server Powered by CnForums.Net