精易论坛

标题: 易语言判断硬盘类型源码 [打印本页]

作者: 苏轶    时间: 2025-7-19 15:04
标题: 易语言判断硬盘类型源码
因为有人要求,所以我就写了一个(参考了网上的信息)它可以直接判断磁盘类型:HDD/SSD/USB。
使用方法是什么呢?还是我们的老朋友DeviceIoControl!

硬盘类型.e

11.19 KB, 下载次数: 46, 下载积分: 精币 -2 枚


作者: jysoft2022    时间: 2025-7-19 15:33
感谢分享
作者: 萧然    时间: 2025-7-19 15:53
感谢分享
作者: qqmqqg    时间: 2025-7-19 16:02
66666666666666666666666
作者: hxq7311    时间: 2025-7-19 16:24
66666666666666
作者: 花小旭    时间: 2025-7-19 16:37
支持支持支持
作者: ︷蚁︷    时间: 2025-7-19 18:15
感谢分享              
作者: ljx111    时间: 2025-7-19 18:34
感谢分享
作者: 汉族    时间: 2025-7-19 20:12
支持大佬  
作者: tofu1207    时间: 2025-7-19 20:16
66666666666666666666666666
作者: 遂心    时间: 2025-7-19 20:34
        支持开源~!感谢分享
作者: tofu1207    时间: 2025-7-19 20:58
感谢分享
作者: 艾玛克138    时间: 2025-7-19 21:12
坚持学习,支持论坛
作者: bianyuan456    时间: 2025-7-19 23:09
已经顶贴,感谢您对论坛的支持!
作者: renhe2018    时间: 2025-7-20 03:13
不错呦。很强大的
作者: 豆豆灰常开心    时间: 2025-7-20 07:01
下个学习一下
作者: 查过    时间: 2025-7-20 07:06
已经顶贴,感谢您对论坛的支持!
作者: year1970    时间: 2025-7-20 07:08
感谢分享
作者: 艾玛克138    时间: 2025-7-20 16:07
感谢楼主分享
作者: 杀忍666    时间: 2025-7-20 16:44
没有效果,别下别下别下别下别下别下
作者: cunanhai    时间: 2025-7-20 16:45
wdc wd10ezex-75wn4a0 被识别为SSD 不知道为什么
作者: 苏轶    时间: 2025-7-20 17:13
cunanhai 发表于 2025-7-20 16:45
wdc wd10ezex-75wn4a0 被识别为SSD 不知道为什么

西数也出过SSD的,但如果是HDD的话我就不知道了
作者: 苏轶    时间: 2025-7-20 17:14
杀忍666 发表于 2025-7-20 16:44
没有效果,别下别下别下别下别下别下

你要以管理员权限运行。
作者: cunanhai    时间: 2025-7-20 17:22
苏轶 发表于 2025-7-20 17:13
西数也出过SSD的,但如果是HDD的话我就不知道了

我们注意到在子程序“取硬盘类型”中,最后通过取字节集中间(OutBuffer, 21, 1)取一个字节,然后将其作为逻辑型(即0或1)来判断是SSD还是HDD。但是根据STORAGE_DEVICE_DESCRIPTOR结构,判断SSD还是HDD通常是通过STORAGE_ADAPTER_DESCRIPTOR或者STORAGE_PROPERTY_QUERY来获取的,而这里使用的是STORAGE_DEVICE_DESCRIPTOR,并且直接取偏移21的字节(即STORAGE_DEVICE_DESCRIPTOR结构中的DeviceType成员)。
然而,在STORAGE_DEVICE_DESCRIPTOR结构中,DeviceType成员位于偏移量0的位置(因为是第一个成员),而后面是DeviceTypeModifier、RemovableMedia等成员。实际上,在Windows的存储设备属性cha询中,我们通常使用STORAGE_PROPERTY_QUERY来获取STORAGE_DEVICE_DESCRIPTOR结构,该结构包含一个RemovableMedia成员(在偏移量21处)和一个CommandQueueing成员(在偏移量25处)等。
但是,判断磁盘是SSD还是HDD,通常使用属性cha询来获取STORAGE_ADAPTER_DESCRIPTOR结构(用于适配器)或者STORAGE_DEVICE_ID_DESCRIPTOR(设备ID)并不直接。实际上,更常见的方法是通过cha询设备旋转速度(RotationRate)或者通过设备属性中的介质类型(MediaType)来判断。
然而,在代码中,我们注意到最后是通过取偏移21的字节(即RemovableMedia)来作为判断依据?这显然是不对的。RemovableMedia表示设备是否是可移动的,而不是表示介质类型。
实际上,在STORAGE_DEVICE_DESCRIPTOR结构中,并没有直接表示是SSD还是HDD的字段。但是,我们可以通过cha询设备的旋转速率(RotationRate)来判断:如果旋转速率为1,则表示非旋转介质(如SSD),旋转速率大于1则表示HDD。或者,我们可以通过cha询设备属性中的介质类型(MediaType)来判断。
因此,代码中的逻辑有误。

DEEPSEEK说的
作者: 苏轶    时间: 2025-7-20 18:25
cunanhai 发表于 2025-7-20 17:22
我们注意到在子程序“取硬盘类型”中,最后通过取字节集中间(OutBuffer, 21, 1)取一个字节,然后将其作为 ...

我的代码刚好也是DeepSeek写的
作者: cunanhai    时间: 2025-7-20 18:39
苏轶 发表于 2025-7-20 18:25
我的代码刚好也是DeepSeek写的

没有以前耗用量,现在总自我矛盾
作者: 豆豆灰常开心    时间: 2025-7-21 07:11
感谢楼主分享!
作者: 查过    时间: 2025-7-21 07:15
感谢发布原创作品,精易因你更精彩!6666666666666
作者: 夏亿    时间: 2025-7-21 12:50
感谢分享
作者: please    时间: 2025-7-22 09:36
感谢分享,支持开源!!!
作者: 851939712    时间: 2025-7-23 01:04
谢谢分享谢谢分享谢谢分享谢谢分享谢谢分享
作者: alanwoo    时间: 2025-7-23 09:10
支持开源~!感谢分享
作者: please    时间: 2025-7-23 09:37
感谢分享,支持开源!!!
作者: please    时间: 2025-7-24 09:39
感谢分享,支持开源!!!
作者: lm88818    时间: 2025-7-25 09:08
支持开源~!感谢分享
作者: lxn2wyf    时间: 2025-7-25 09:32
开源精神必须支持,大家一起努力~
作者: 温柔小仙女    时间: 2025-7-25 22:05
        感谢分享,很给力!~
作者: a358498501    时间: 2025-7-25 23:29
   支持开源~!感谢分享
作者: 风一样存在    时间: 2025-7-26 08:27
支持开源~!感谢分享




欢迎光临 精易论坛 (https://bbs.ijingyi.com/) Powered by Discuz! X3.4