无法获得 S.M.A.R.T.外部驱动器的信息

     2023-03-17     155

关键词:

【中文标题】无法获得 S.M.A.R.T.外部驱动器的信息【英文标题】:Cannot get S.M.A.R.T. information for external drives 【发布时间】:2014-09-13 07:23:03 【问题描述】:

我正在尝试获取外部 USB 驱动器的 SMART 信息。我正在使用以下查询来获取驱动器的温度,但是该查询始终返回集合中的单个对象,这是我的内部 HDD。

ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI",
"SELECT * FROM MSStorageDriver_ATAPISmartData");

foreach (ManagementObject queryObj in searcher.Get())

   if (queryObj["VendorSpecific"] != null)
   
       byte[] arrVendorSpecific = (byte[])(queryObj["VendorSpecific"]);
       string temp = arrVendorSpecific[115].ToString();
    
 

到目前为止,我已经尝试了来自不同供应商的 3 种不同的驱动器,但我获取信息的所有尝试都失败了。

我做错了什么,如何通过 WMI 获取外部驱动器的 SMART 信息?

编辑:我尝试了PassMarks's DiskCheckup,它能够获取所有驱动器的 SMART 信息。

编辑2:

深入挖掘我在Windows下的SmartMonToolsINSTALL文件中找到了这一段:

SCSI 和 USB 设备通过 SPTI 访问。特殊驱动支持 不是必需的。

现在我认为我需要的只是将其放入 WMI 查询中,有人可以帮忙吗?

【问题讨论】:

如果您下载第三方工具来查看 SMART 信息,它是否适用于那些外部驱动器? 是的,我只试过PassMark's DiskCheckup,它能够获取驱动器的SMART信息。 @MobyDisk 我在帖子中添加了更多信息。你能查一下吗? 【参考方案1】:

SMART 是 ATA 标准的一部分。甚至 WMI 类的名称也反映了这一点。

当您通过 USB 插入设备时,它会使用 USB 大容量存储协议与您的系统进行通信。它根本不支持SMART。通常,USB 连接的硬盘与 USB 连接的 pendrive 或 SD 卡没有什么不同,因此 SMART 在这里没有意义。 SCSI、Firewire 等也是如此,它们是不同的协议。你不知道另一端是什么,它可能根本不会说 ATA。

有些协议,比如 USB 硬盘使用的协议,允许 ATA 命令通过不同的协议层,正如您所说,SPTI 就是其中一种方法。虽然它被许多设备支持,但它是一种 hack,可能不是每个 USB 磁盘控制器都支持,甚至可能导致问题(任何 ATA 数据包可能会通过,这可能很危险) . RAID 设备可以使用其他专有协议来传递 ATA 命令。

因此,基本上,没有通用协议可以与这些设备通信,尽管我不能绝对肯定,但我很确定 WMI 不支持它,因为这是一项非常复杂的任务。

Smartmontools 拥有庞大的设备、磁盘和控制器数据库(请查看 drivedb.h 了解详情,它非常庞大),它经过测试并定期更新,这就是它知道如何与这些设备中的每一个通信的方式。基本上是低级设备巫术魔法。操作系统通常不需要知道所有这些东西,他们只需知道如何使用相应的驱动程序来使用 USB、Firewire、RAID 设备等。这些驱动程序通常不会跨越协议边界。

所以我建议你使用 smartmontools 并解析它的输出,它会让你免于很多痛苦。

【讨论】:

哇,谢谢你的解释,我真的很感激。 So I suggest that you use smartmontools and parse its output, it will save you from a lot of pain. 遗憾的是,根据他们当前的许可,我无法将 smartmontools 合并到商业应用程序中。将尝试与他们联系,看看是否有任何方法可以用于商业应用。 答案不正确(不再)。有可用的 USB 3.0 连接器允许通过 USAP(USB 连接 SCSI 协议)将 SCSI 命令传递到连接的驱动器。

无法获得vmci驱动程序的版本:句柄无效。

原文:无法获得VMCI驱动程序的版本:句柄无效。写在前面最近在电脑上安装了VMware虚拟机,在安装系统的使用,总提示错误“无法获得VMCI驱动程序的版本:句柄无效。”。最近刚买的电脑,也不会是系统的问题吧,为了装个... 查看详情

无法获得vmci驱动程序的版本:句柄无效的解决方法

关闭虚拟机,找到安装路径,用记事本打开.vmx结尾的文件将vmci0.present="TRUE"改为vmci0.present="FALSE"保存  查看详情

[转帖]目标管理的s.m.a.r.t.理念(代码片段)

目标管理的S.M.A.R.T.理念https://blog.csdn.net/gehantao/article/details/1593510    目标管理(MBO)是一种管理战略,它使用的是S.M.A.R.T.目标管理理念,分门别类地制定目标,其中包括目标的特殊性、可测量性、可实现性、现实... 查看详情

无法获得有关 Windows NT 组用户的信息

】无法获得有关WindowsNT组用户的信息【英文标题】:CouldnotobtaininformationaboutWindowsNTgroupuser【发布时间】:2010-11-1702:25:15【问题描述】:我正在使用脚本创建SQLServer复制。当我尝试执行时Thejobfailed.Unabletodetermineiftheowner(STAR\\moorer7)of... 查看详情

获得驱动器信息卷设备&&ring3得到磁盘文件系统(ntfswin10)

1//GetLogicalDriveStrings.cpp:定义控制台应用程序的入口点。2//34#include"stdafx.h"5#include<Windows.h>6#include<iostream>78usingnamespacestd;910voidSub_1();//枚举计算机的卷--->磁盘&&NTFS(win10)111213in 查看详情

docker ERROR:对于 nginx 无法启动服务 nginx:驱动程序在编程外部连接时失败

】dockerERROR:对于nginx无法启动服务nginx:驱动程序在编程外部连接时失败【英文标题】:dockerERROR:fornginxCannotstartservicenginx:driverfailedprogrammingexternalconnectivityon【发布时间】:2018-11-1220:54:11【问题描述】:我是Docker的新手,并使用D... 查看详情

虚拟机关于vmware提示“无法获得vmci驱动程序的版本:句柄无效”的解决方案

...之后,刚要开启虚拟机进行操作系统的安装时,会出现“无法获得VMCI驱动程序的版本:句柄无效”的错误提示,如图1所示。(本人运行环境为Windows10,VMware12)650)this.width=650;"src="https://s2.51cto.com/wyfs02/M00/8F/1F/wKio 查看详情

bartender链接数据库提示:无法链接到数据库外部数据驱动程序中的意外错误#6670

bartender链接数据库提示:无法链接到数据库外部数据驱动程序(1)中的意外错误#6670650)this.width=650;"title="QQ图片20171119181327.png"src="https://s1.51cto.com/oss/201711/19/44db51da922c347268f519dbbc294a1e.png-wh_500x0-wm_3-wmp_4-s_3985 查看详情

从 kubelet 获得批准证书后,kubernetes 无法获取节点信息

】从kubelet获得批准证书后,kubernetes无法获取节点信息【英文标题】:kubenetescan\'nnotgetnodesinfoafterapprovecertificatefromkubelet【发布时间】:2021-03-2223:41:38【问题描述】:我用手动的方式安装kubernetes。在master批准kubelet的证书请求后,... 查看详情

在 XP 和 Windows 7 上的外部硬盘驱动器上运行 xampp

】在XP和Windows7上的外部硬盘驱动器上运行xampp【英文标题】:RunxampponexternalharddriveonXPandWindows7【发布时间】:2011-12-2420:53:24【问题描述】:我已在外部硬盘驱动器上安装了XAMPP。我的WindowsXP桌面可以从外部正常运行XAMPP。但是,... 查看详情

confluence6为外部用户管理获得支持

本页面描述了如果你在配置外部用户管理的时候遇到了问题,如何向Atlassian支持项目组寻求帮助。外部用户目录挂你包括ActiveDirectory,其他LDAP服务器,AtlassianCrowd或者一个Jira应用程序。有关帮助的更多信息,请参考页面:Troubles... 查看详情

启动vmware虚拟机报错:“无法获得vmci驱动程序的版本:句柄无效”(代码片段)

启动vmware虚拟机的时候报错:找到对应虚拟机的文件夹路径:用记事本打开CentOS64位.vmx,找到这么一行:vmci0.present="TRUE"把TRUE改成FALSE  查看详情

Raspbian Jessie:“apt-get upgrade”后无法再安装 NTFS 外部硬盘驱动器(保险丝设备丢失)

】RaspbianJessie:“apt-getupgrade”后无法再安装NTFS外部硬盘驱动器(保险丝设备丢失)【英文标题】:RaspbianJessie:CannotmountNTFSexternalharddriveanymoreafter\'apt-getupgrade\'(fusedeviceismissing)【发布时间】:2018-04-1016:49:23【问题描述】:在我今... 查看详情

JQuery 重新获得对外部弹出窗口的控制

...数据并进行购买。我遇到的问题是我的页面被隐藏了,我无法恢复对进程的控制,因 查看详情

无法加载驱动程序请问怎么办?

...不存在这个服务。解决办法:由于你提供的信息不充足,无法得知该驱动的较详细信息,比如是什么的驱动?生产厂商等等。只能建议一个方法,插入系统安装盘,然后在开始运行中输入sfc/scannow点确定即可。这样可以恢复受损和... 查看详情

Hibernate 4.1.2 HHH000342:无法获得与查询元数据的连接:没有为 jdbc:hsqldb:mem:test 找到合适的驱动程序

】Hibernate4.1.2HHH000342:无法获得与查询元数据的连接:没有为jdbc:hsqldb:mem:test找到合适的驱动程序【英文标题】:Hibernate4.1.2HHH000342:Couldnotobtainconnectiontoquerymetadata:Nosuitabledriverfoundforjdbc:hsqldb:mem:test【发布时间】:2012-04-0517:21:27【... 查看详情

在域驱动设计中使用外部 Web 服务

...想在我的域驱动设计项目中使用外部第三方Web服务,但我无法理解我应该在哪一层访问外部Web服务。在域服务中,但我不这么认为,因为域服务仅适用于域对象。但我的要求是,我必须根据来自外部web服务的输入执行操作列表,... 查看详情

除了 EAR 和 EJB,我还能从 Java EE 应用程序服务器中获得哪些在 Tomcat 之类的 servlet 容器中无法获得的信息?

...avaEE应用程序服务器中获得哪些在Tomcat之类的servlet容器中无法获得的信息?【英文标题】:BesidesEARandEJB,whatdoIgetfromaJavaEEappserverthatIdon\'tgetinaservletcontainerlikeTomcat?【发布时间】:2010-09-2102:47:36【问题描述】:我们使用Tomcat来托管... 查看详情