4127|4

81

帖子

0

TA的资源

禁止访问

楼主
 
提示: 作者被禁止或删除 内容自动屏蔽
点赞 关注

回复
举报

62

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
一般都是取设备id的。

lz直接搜一下就有了。baidu或eeworld中,这个讨论过无数次了。
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
如何具体做,我找了半天没有发现?
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
“cpu 能区别的唯一标识号”,如果CPU本身没有“唯一标识号”,那么哪个函数都无法实现。奇怪,这个问题好像提过很多次了吧?

转高手norains的一篇

  1. //========================================================================
  2. //TITLE:
  3. //    WinCE获取设备ID
  4. //AUTHOR:
  5. //    norains
  6. //DATE:
  7. //    Sunday  4-November-2007
  8. //Environment:
  9. //        EVC4.0 + Windows CE 5.0 Standard SDK
  10. //========================================================================

  11.     在Wince下获取设备ID(Device ID)并不困难,只要简单地调用KernelIoControl即可.不过至于能否获得设备ID,并且获得的ID属于什么类型,则关系到驱动层的实现.而设备ID的实现,在不同的平台有不同,比如在夏普的LH71404的开发板中,设备ID位于platform.c中.不过本文目的不关注如何设置或编写设备ID,而仅仅是通过函数调用获得该设备ID而已.
  12.    
  13.     首先我们来看看设备ID在winCE下的定义:

  14.     typedef struct _DEVICE_ID {
  15.     DWORD   dwSize;
  16.     DWORD   dwPresetIDOffset;
  17.     DWORD   dwPresetIDBytes;
  18.     DWORD   dwPlatformIDOffset;
  19.     DWORD   dwPlatformIDBytes;
  20. } DEVICE_ID, *PDEVICE_ID;
  21.      结构清晰明了,而我们所要关注的仅仅是这两个字段:dwPlatformIDOffset和dwPlatformIDBytes.
  22.    
  23.     现在假设我们有一个平台,该平台的设备ID为一个字符串:"MyDeviceId",那么我们可以通过下面一个简单的例子获得该设备ID:

  24.     char szBuf[MAX_PATH] = {0};
  25.     DEVICE_ID devID = {0};
  26.     GetDeviceID((BYTE *)szBuf,MAX_PATH,&devID);
  27.     char szDeviceID[MAX_PATH] = {0};
  28.     strcpy(szDeviceID,szBuf + devID.dwPlatformIDOffset);
  29.     此时szDeviceID中存储的字符串就是"MyDeviceId".
  30.    
  31.     代码中的GetDeviceID是自己写的一个获取ID函数,该代码如下:     DWORD GetDeviceID(BYTE *pOutBuf,DWORD dwBufSize,DEVICE_ID *pDeviceID)
  32.         {
  33.             DWORD dwRead = 0;
  34.             if(KernelIoControl(IOCTL_HAL_GET_DEVICEID, NULL, 0, pOutBuf, dwBufSize, &dwRead) == FALSE)
  35.             {
  36.                 return 0;
  37.             }
  38.         
  39.             pDeviceID = (PDEVICE_ID)pOutBuf;
  40.         
  41.             return dwRead;
  42.         }
  43.   pOutBuf是传入的存储缓冲区,dwBufSize是缓冲区大小,pDeviceID是接受设备ID的结构信息,函数返回值是读取的字节数,当为0的时候,很可能是函数读设备ID失败.调用方法很简单,可参考上文的例子.
  44.   
  45.   代码中出现的IOCTL_HAL_GET_DEVICEID是WinCE下定义的宏,专注于获取设备ID,该宏的定义如下:
  46.   #define IOCTL_HAL_GET_DEVICEID      CTL_CODE(FILE_DEVICE_HAL, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
  47.   
  48.   最后需要说的是,要使该段代码工作正常,尚且需要包含该头文件:Pkfuncs.h
复制代码
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

5
 
谢谢斑竹的回答,这个 szDeviceID对于不同厂家的pda来说,1 是不是都存在? 2 是不是唯一的?
还有 顺便问以下: 这个与BOOL DeviceIoControl(
  HANDLE hDevice,
  DWORD dwIoControlCode,
  LPVOID lpInBuffer,
  DWORD nInBufferSize,
  LPVOID lpOutBuffer,
  DWORD nOutBufferSize,
  LPDWORD lpBytesReturned,
  LPOVERLAPPED lpOverlapped
);
有没有差别? 用哪个合理,效果好?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表