WinCE获取设备ID
来源:互联网 发布:qq邮箱搜索软件 编辑:程序博客网 时间:2024/05/16 16:05
//========================================================================
//TITLE:
// WinCE获取设备ID
//AUTHOR:
// norains
//DATE:
// Sunday 4-November-2007
//Environment:
// EVC4.0 + Windows CE 5.0 Standard SDK
//========================================================================
在Wince下获取设备ID(Device ID)并不困难,只要简单地调用KernelIoControl即可.不过至于能否获得设备ID,并且获得的ID属于什么类型,则关系到驱动层的实现.而设备ID的实现,在不同的平台有不同,比如在夏普的LH71404的开发板中,设备ID位于platform.c中.不过本文目的不关注如何设置或编写设备ID,而仅仅是通过函数调用获得该设备ID而已.
首先我们来看看设备ID在winCE下的定义:
typedef struct _DEVICE_ID {
DWORD dwSize;
DWORD dwPresetIDOffset;
DWORD dwPresetIDBytes;
DWORD dwPlatformIDOffset;
DWORD dwPlatformIDBytes;
} DEVICE_ID, *PDEVICE_ID;
DWORD dwSize;
DWORD dwPresetIDOffset;
DWORD dwPresetIDBytes;
DWORD dwPlatformIDOffset;
DWORD dwPlatformIDBytes;
} DEVICE_ID, *PDEVICE_ID;
结构清晰明了,而我们所要关注的仅仅是这两个字段:dwPlatformIDOffset和dwPlatformIDBytes.
现在假设我们有一个平台,该平台的设备ID为一个字符串:"MyDeviceId",那么我们可以通过下面一个简单的例子获得该设备ID:
char szBuf[MAX_PATH] = {0};
DEVICE_ID devID = {0};
GetDeviceID((BYTE *)szBuf,MAX_PATH,&devID);
char szDeviceID[MAX_PATH] = {0};
strcpy(szDeviceID,szBuf + devID.dwPlatformIDOffset);
DEVICE_ID devID = {0};
GetDeviceID((BYTE *)szBuf,MAX_PATH,&devID);
char szDeviceID[MAX_PATH] = {0};
strcpy(szDeviceID,szBuf + devID.dwPlatformIDOffset);
此时szDeviceID中存储的字符串就是"MyDeviceId".
代码中的GetDeviceID是自己写的一个获取ID函数,该代码如下:
DWORD GetDeviceID(BYTE *pOutBuf,DWORD dwBufSize,DEVICE_ID *pDeviceID)
{
DWORD dwRead = 0;
if(KernelIoControl(IOCTL_HAL_GET_DEVICEID, NULL, 0, pOutBuf, dwBufSize, &dwRead) == FALSE)
{
return 0;
}
pDeviceID = (PDEVICE_ID)pOutBuf;
return dwRead;
}
{
DWORD dwRead = 0;
if(KernelIoControl(IOCTL_HAL_GET_DEVICEID, NULL, 0, pOutBuf, dwBufSize, &dwRead) == FALSE)
{
return 0;
}
pDeviceID = (PDEVICE_ID)pOutBuf;
return dwRead;
}
pOutBuf是传入的存储缓冲区,dwBufSize是缓冲区大小,pDeviceID是接受设备ID的结构信息,函数返回值是读取的字节数,当为0的时候,很可能是函数读设备ID失败.调用方法很简单,可参考上文的例子.
代码中出现的IOCTL_HAL_GET_DEVICEID是WinCE下定义的宏,专注于获取设备ID,该宏的定义如下:
#define IOCTL_HAL_GET_DEVICEID CTL_CODE(FILE_DEVICE_HAL, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
最后需要说的是,要使该段代码工作正常,尚且需要包含该头文件:Pkfuncs.h
- WinCE获取设备ID
- WINCE 获取设备ID
- WINCE获取设备ID
- wince设备上获取sd卡的id号
- Android 获取设备ID
- 获取android设备id
- 获取设备范例ID
- 获取手机设备ID
- Android获取设备ID
- 获取设备ID
- 如何获取设备ID
- android 获取设备Id
- iOS 获取设备id
- 获取设备id
- 获取手机设备id
- android-获取设备id
- IOS获取设备 ID
- 获取Mobile设备唯一ID
- 愉快的管理课程
- 关于域控制器的管理
- UpdateData、Invalidate、InvalidateRect和UpdateWindow
- windows XP professional如何连接到域
- QUicKSort 快速排序算法 c实现
- WinCE获取设备ID
- C#基础概念二十五问
- 数学函数备忘录
- 现在时间是22点31分
- 串口编程入门
- 哈夫曼编码程序
- 带统计的表的行列转换问题
- 1+2+3+...+100=5050
- Linux 的基本文件说明