欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

wince sd卡读取id有有关问题

更新时间: 2014-01-05 03:10:41 责任编辑: Author_N1

 

wince SD卡读取ID有问题
wince SD卡读取ID有问题

#include <windows.h>

#include "winioctl.h"
#include "storemgr.h"

#define IOCTL_DISK_GET_STORAGEID CTL_CODE(FILE_DEVICE_DISK,0x709,METHOD_BUFFERED,FILE_ANY_ACCESS)

typedef struct _STORAGE_IDENTIFICATION
{
DWORD dwSize;
DWORD dwFlags;
DWORD dwManufactureIDOffset;
DWORD dwSerialNumOffset;
} STORAGE_IDENTIFICATION, *PSTORAGE_IDENTIFICATION;

inline bool GetStroageID(LPCTSTR szDisk, BYTE *SerialNo)
{
HANDLE hDisk = CreateFile(szDisk, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,  OPEN_EXISTING, 0, NULL);
if(!hDisk || hDisk ==INVALID_HANDLE_VALUE)
{
Com_PrintLog(LOG_TYPE_ERROR, LOG_MODULE_HMI, "[main][GetStroageID][CreateFile-->Fail]");
return false;
}
PSTORAGE_IDENTIFICATION pStoreInfo = (PSTORAGE_IDENTIFICATION) new BYTE[3000];
DWORD dwBytesRet = 0;
if (!DeviceIoControl(hDisk, IOCTL_DISK_GET_STORAGEID, NULL, 0, pStoreInfo, 3000, &dwBytesRet, NULL))
{
Com_PrintLog(LOG_TYPE_ERROR, LOG_MODULE_HMI, "[main][GetStroageID][DeviceIoControl fail]");
if(pStoreInfo)
{
delete [] pStoreInfo;
pStoreInfo = NULL;
}
CloseHandle(hDisk);
return false;
}
if(dwBytesRet == 0)
{
Com_PrintLog(LOG_TYPE_ERROR, LOG_MODULE_HMI, "[main][GetStroageID][dwBytesRet=0]");
if(pStoreInfo)
{
delete [] pStoreInfo;
pStoreInfo = NULL;
}
CloseHandle(hDisk);
return false;
}
BYTE *ManuID = (((BYTE *)pStoreInfo) + pStoreInfo->dwManufactureIDOffset);
BYTE *tempSerialNo = (((BYTE *)pStoreInfo) + pStoreInfo->dwSerialNumOffset);
Com_PrintLog(LOG_TYPE_ERROR, LOG_MODULE_HMI, "[main][GetStroageID][strcpy][tempSerialNo=%X,tempSerialNo_d=%d]",tempSerialNo,tempSerialNo);

strcpy((char *)SerialNo, (const char *)tempSerialNo);
Com_PrintLog(LOG_TYPE_ERROR, LOG_MODULE_HMI, "[main][GetStroageID][strcpy][SerialNo=%X]",SerialNo);

if(pStoreInfo)
{
delete [] pStoreInfo;
pStoreInfo = NULL;
}
CloseHandle(hDisk);

Com_PrintLog(LOG_TYPE_ERROR, LOG_MODULE_HMI, "[main][GetStroageID][return true]");
return true;
}

用查看工具在xp系统下看到 ID是 52583B32,但是打印出来的是 
tempSerialNo=%X,tempSerialNo_d   
tempSerialNo=22B72,tempSerialNo_d=142194
这数值对不上,是不是打印输出不对

--参考方法--
明显是你的 CE 下获取到的 ID 有问题。

试试偶在 CSDN 博客的代码:
http://blog.csdn.net/91program/article/details/6612675
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:10:41
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/19220/
本文WWW.DOC100.NET DOC100.NET版权所有。