WinCE获取SD卡序列号

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 04:47 点击:

//=====================================================================
//TITLE:
//    WinCE获取SD卡序列号
//AUTHOR:
//    norains
//DATE:
//    Thursday  25-February-2011
//Environment:
//    Visual Studio 2005
//    Windows CE 6.0
//    Telechips TCC89x
//=====================================================================

     WinCE的设备,估计会和SD卡打交道的应该不在少数。特别是一些软件,比如导航地图之类,加密数据用的就是SD卡的序列号。不过,严格来说,在WinCE下面并没有专门针对于SD卡序列号的获取函数,而是针对Storage的。只不过SD卡也是Storage的一种,所以自然也能够被获取。

     SD卡序列号的获取,是需要通过驱动的的。这么一说的话,熟悉的朋友可能就明白流程了:首先调用CreateFile打开驱动,接着使用DeviceIoControl来获取序列号,最后则是调用CloseHandle进行关闭。

     一步一步来,先看看CreateFile的调用,如:
 HANDLE hDisk = CreateFile(TEXT("DSK2:"),
                           GENERIC_READ,
                           FILE_SHARE_READ | FILE_SHARE_WRITE,
                           NULL,
                           OPEN_EXISTING,
                           0,
                           NULL);

     这段代码没什么问题,可能大家比较关心的是"DSK2:"这个参数的来源。或是说,我如何确定这个参数。很多朋友可能会错认为,当我们SD卡插入到设备中,在"我的设备"会出现"Storage Card"分区,那么CreateFile的第一个形参就应该是它。但实际上这样是错误的,传入的形参并不是分区名,而应该是驱动名。而这个驱动名的确认,可以通过"控制面板"的"存储器"确认,如图:

\


     图中的"DSK1:"是设备中NAND FLASH的驱动,而"DSK2:"则是SD卡的。可能有朋友问了,我如何判断哪个是SD卡的呢?其实这是一个很简单的事情:没插入SD卡的时候查看一次,插入SD卡的时候再查看一次,多出的那个就是SD卡了。囧~

 接着我们就必须调用DeviceIoControl函数了,如下代码所示:
PSTORAGE_IDENTIFICATION pStoreInfo = (PSTORAGE_IDENTIFICATION) new BYTE[300]; 

DeviceIoControl(hDisk,  
                IOCTL_DISK_GET_STORAGEID,  
                NULL,  
                0,  
                pStoreInfo,  
                BUFFER_SIZE,  
                &dwBytesRet,  
                NULL);

     IOCTL_DISK_GET_STORAGEID是设备请求标识符,这个应该也好理解。如果你的代码编译时该标识符没有定义,那么你应该是没有包含Diskio.h文件。可能比较费解的是pStoreInfo,为什么要new个300byte的空间,然后又转换为PSTORAGE_IDENTIFICATION

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • cocos2d-x学习笔记(19)--label 、label atlas
      • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
      • Cocos2d-x学习(一):HelloWorld
      • cocos2dx在xcode下开发,编译到android上(2)
      • cocos2d 设置屏幕默认方向
      • Cocos2d-x 2.0 之 Actions “三板斧” 之一
      • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
      • cocos2d-x学习笔记(18)--游戏打包(windows平台)
      • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1