GreenTco https://passport2.21ic.com/?49073 [收藏] [复制] [RSS]

日志

Citrine 今日(1)

已有 2044 次阅读2010-11-24 13:36 |个人分类:硬盘探索|系统分类:兴趣爱好| SCSI, SAS, 硬盘, 工具软件, 固件

Citrine,起源于2005年。2010年,沉睡5年的Citrine重新搬上我的桌面。


  重写Citrine的初步规划,取消aspi32调用,改用Windows API函数。至于软件功能嘛?由着兴趣来,想要什么就做什么,一点一点往上加。


  经过一段时间的努力,软件已有很大改观,完全API函数不仅实现原有功能(原始版功能也太简单了),还加入了一些新功能。


v0.1.0.1(2010-10-16)
费了老大劲琢磨Windows API,翻了好几遍WIN SDK,终于有点收获,调用SetupAPI已实现的包括尚未完善的功能:


  • 扫描硬盘控制器ATA、SATA、SCSI、SAS、PCMCIA、USBSTOR
  • 扫描硬盘控制器挂接的硬盘(包括U盘、存储卡)

    探索和发现:虚拟机真的很好用,在没有SCSI控制器的本本上完成了编程和SCSI控制器的扫描测试。


    这是软件界面图,可以看出和原始版的不同。



    v0.1.0.3(2010-10-22)
    工具栏图标改成32*32,界面看上去稍稍漂亮了一些。多学了几招API,可以用DeviceIOControl实现更强大的功能。这个版本经测试不能读取U盘的厂家信息,继续研究中。


  • 调用IOCTL_STORAGE_QUERY_PROPERTY读取硬盘柱面数、磁道数、扇区数,计算硬盘总容量
  • 调用SCSI READ CAPACITY(25h)获取硬盘容量,正常情况下比上面计算的容量稍大 
  • SCSI命令测试(可选6、10、12字节命令)
  • 调用SCSI READ(28h)读取物理扇区数据,只测试了ATA、SATA硬盘


    v0.1.0.6(2010-10-26)
    调整了一下界面,缩小操作记录框,磁盘列表显示更多信息,可以读取U盘信息了。


  • 调用SCSI INQUIRY(12h)读取硬盘序列号
  • 硬盘信息增加了接口类型(ATA、SCSI、USB、SAS……)
  • 增加了SCSI固件下载进度条显示(尚未全面测试)

    探索和发现:执行SCSI READ(28h)读不了SAS硬盘数据,系统会返回“由于I/O设备错误,无法运行此项请求。”,原因不明。


     


    v0.1.0.10(2010-11-16)
    调整了一下界面,中间一条空白预留将来之用,固件下载功能通过基本测试,增加了SCSI操作返回信息。




    v0.1.0.13(2010-12-14)
    又调整了一下界面,增加了特殊功能页和硬盘配置文件,所有新功能尚在开发中。


    v0.1.0.20(2010-12-24)
    从软件界面看和上个版本没有多大改动,实际上一切的变化在悄悄进行。



  • 新增支持16字节长度的SCSI命令
  • 新增CFW专用固件格式,支持固件文件描述信息
  • 新增BIN格式固件转换成CFW格式固件功能
  • 改用ReadFile读取硬盘物理扇区数据,兼容性应该会很好

    探索和发现:IOCTL_SCSI_GET_INQUIRY_DATA在通过ATA、SCSI硬盘测试后,依然如28h命令一样没有通过SAS硬盘测试,系统返回错误信息“函数不正确。”。



     


  • 路过

    鸡蛋

    鲜花

    握手

    雷人

    评论 (0 个评论)