请问在evc里怎么读取sd卡的硬件号啊

ruofeich 2005-11-21 11:13:44
ppc是2003的系统,如何读取sd卡的号,请高手帮忙啊,谢谢
...全文
119 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldbone 2005-12-15
  • 打赏
  • 举报
回复
请问楼上,你的开发环境是什么?PPC2003?CTL_CODE和METHOD_BUFFERED, FILE_ANY_ACCESS都没有定义???
gaoxiaoning 2005-11-23
  • 打赏
  • 举报
回复
typedef struct _STORAGE_IDENTIFICATION {
DWORD dwSize;
DWORD dwFlags;
DWORD dwManufactureIDOffset;
DWORD dwSerialNumOffset;
} STORAGE_IDENTIFICATION, *PSTORAGE_IDENTIFICATION;


TCHAR tzCFCardID[22];
TCHAR tzError[50];
HANDLE hCard = CreateFile(TEXT("DSK1:"), //设备标识DISK1由查询注册表获得
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);

if(hCard)
{
int i = 0;
PSTORAGE_IDENTIFICATION pStoreInfo;
pStoreInfo=(STORAGE_IDENTIFICATION *)LocalAlloc(LMEM_ZEROINIT,3000);

DWORD dwGetBytes;
if (DeviceIoControl(hCard,
CTL_CODE(0x0007, 0x0709, METHOD_BUFFERED, FILE_ANY_ACCESS), // 关键行:指定IOCTL
NULL,
0,
(LPVOID)pStoreInfo,
3000,
&dwGetBytes,
NULL)
!=FALSE)
{
if(dwGetBytes > 0)
{
i = 0;
int j = 0;
if(pStoreInfo->dwSerialNumOffset < dwGetBytes)
{
BYTE* SerialNo=(((BYTE *)pStoreInfo)+pStoreInfo->dwSerialNumOffset);
while (SerialNo[i]!=0 && i<(int)(dwGetBytes-pStoreInfo->dwSerialNumOffset) && i<22)
{
if(SerialNo[i] < '0' || SerialNo[i] > 'z')
{
j++;
}
else
{
tzCFCardID[i - j]=(TCHAR)SerialNo[i];
}
i++;
}
}
tzCFCardID[i - j]=0;
}
}
else
{
wsprintf(tzError, TEXT("查询储存卡ID失败,错误号%lu!"), GetLastError());
AfxMessageBox(tzError);
LocalFree(pStoreInfo);
CloseHandle(hCard);
return ;
}
LocalFree(pStoreInfo);
CloseHandle(hCard);
AfxMessageBox(tzCFCardID);
}

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧