3287|5

84

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

依靠DeviceIoControl获得 的硬盘信息能区别pda设备吗? [复制链接]

依靠DeviceIoControl获得 的硬盘信息对于每一个pda设备 是唯一的吗?

最新回复

只要硬件能提供唯一ID,那么不管用什么驱动接口读到的都有效。 如果硬件上没有这个,那么不管用什么软件办法,都无法实现这个功能。 软件加密,另想办法了。  详情 回复 发表于 2008-7-8 21:21
点赞 关注

回复
举报

59

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
不是,硬盘没有唯一ID。只有生产商ID,型号ID。
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
生产商ID,型号ID 对于pda来说是唯一的吗?
typedef struct _STORAGE_IDENTIFICATION
{
        DWORD dwSize;
        DWORD dwFlags;
        DWORD dwManufactureIDOffset;
        DWORD dwSerialNumOffset;
} STORAGE_IDENTIFICATION, *PSTORAGE_IDENTIFICATION;
unsigned char* GetStroageID(LPCTSTR szDisk)
{
        //HANDLE hDisk = CreateFile(_T("DSK1:"), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
        HANDLE hDisk = CreateFile(szDisk, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
        if (!hDisk) return FALSE;

        PSTORAGE_IDENTIFICATION pStoreInfo = (PSTORAGE_IDENTIFICATION) new BYTE[3000];

        DWORD dwBytesRet;

        if (!DeviceIoControl(hDisk, IOCTL_DISK_GET_STORAGEID, NULL, 0, pStoreInfo, 3000, &dwBytesRet, NULL))
        {
                DWORD err = GetLastError();
                delete [] pStoreInfo;
                CloseHandle(hDisk);
                return FALSE;
        }

        BYTE *ManuID = (((BYTE *)pStoreInfo) + pStoreInfo->dwManufactureIDOffset);
        BYTE *SerialNo = (((BYTE *)pStoreInfo) + pStoreInfo->dwSerialNumOffset);

        return SerialNo;
}
这段代码,有没有错误?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
哦,是DSK接口呀,不一定是硬盘的。

底层的存储器提供统一的DSK接口,以供WINCE系统层调用。这个设备可以是任何BLOCK设备,包括硬盘,NAND,NOR,SD卡等等。

既然设备种类这么多,是否存在唯一的ID就难说了。至少通用的硬盘,常用的NOR FLASH,NAND FLASH是不存在每片“唯一”ID的,只存在生产商ID和芯片型号ID,这两个ID不是唯一的,只要是同一家买的这个型号,都一样。

有些存储器件会有,比如mSystem的mDOC就可以有唯一ID。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

5
 
一般来说,用哪个dsk,保证取到的 id是唯一的  ,或用其他方法实现这个(主要依靠这个实现应用软件的加密(通过id的加密算法))?
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

6
 
只要硬件能提供唯一ID,那么不管用什么驱动接口读到的都有效。
如果硬件上没有这个,那么不管用什么软件办法,都无法实现这个功能。

软件加密,另想办法了。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表