|
调用KernelIoControl即可.不过至于能否获得设备ID,并且获得的ID属于什么类型,则关系到驱动层的实现.而设备ID的实现,在不同的平台有不同,比如在夏普的LH71404的开发板中,设备ID位于platform.c中.不过本文目的不关注如何设置或编写设备ID,而仅仅是通过函数调用获得该设备ID而已.
DEVICE_ID有相关数据
通过下面一个简单的例子获得该设备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);
此时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;
}
pOutBuf是传入的存储缓冲区,dwBufSize是缓冲区大小,pDeviceID是接受设备ID的结构信息,函数返回值是读取的字节数,当为0的时候,很可能是函数读设备ID失败.
|
|