找回密码
 加入
搜索
查看: 2333|回复: 8

[系统综合] 如何调用API 读取WIN10存储控制器信息

[复制链接]
发表于 2021-10-8 16:13:45 | 显示全部楼层 |阅读模式
本帖最后由 rally 于 2021-10-13 16:46 编辑

如图,NVMe  SSD ,想读取位置信息,不知道AU3相关的函数,还请赐教
这个地方,找到相关API 含税,但不知道如何调用,,


https://docs.microsoft.com/zh-cn ... g-with-nvme-devices用于处理 NVMe 驱动器的 Api
你可以使用以下通用 Api 在 Windows 10 中访问 NVMe 驱动器。 这些 Api 可在用户模式应用程序的 winioctl 中找到,对于内核模式驱动程序可在 ntddstor 中找到。 有关标头文件的详细信息,请参阅 [color=var(--theme-hyperlink)]标头文件
  • [color=var(--theme-hyperlink)]IOCTL _存储 _ 协议 _ 命令 :通过 存储 _ 协议 _ 命令 结构使用此 IOCTL 发出 NVMe 命令。 此 IOCTL 允许 NVMe 传递,并在 NVMe 中支持命令效果日志。 你可以将其用于特定于供应商的命令。 有关详细信息,请参阅 [color=var(--theme-hyperlink)]直通机制
  • [color=var(--theme-hyperlink)]存储 _协议 _ 命令 :此输入缓冲区结构包含一个 ReturnStatus 字段,该字段可用于报告以下状态值。
    • 存储 _ 协议 _ 状态 _ 挂起
    • 存储 _ 协议 _ 状态 _ 成功
    • 存储 _ 协议 _ 状态 _ 错误
    • 存储 _ 协议 _ 状态 _ 无效 _ 请求
    • 存储 _ 协议 _ 状态 _ 无 _ 设备
    • 存储 _ 协议 _ 状态 _ 忙碌
    • 存储 _ 协议 _ 状态 _ 数据 _ 超限
    • 存储 _ 协议 _ 状态 _ _ 资源不足
    • 存储 _ 协议 _ 状态 _ 不 _ 受支持
  • [color=var(--theme-hyperlink)]IOCTL _存储 _ 查询 _ 属性 :将此 IOCTL 与 存储 _ 属性 _ 查询 结构一起使用来检索设备信息。 有关详细信息,请参阅 [color=var(--theme-hyperlink)]特定于协议的查询 和 [color=var(--theme-hyperlink)]温度查询
  • [color=var(--theme-hyperlink)]存储 _属性 _ 查询 :此结构包括 " PropertyId " 和 " AdditionalParameters " 字段,用于指定要查询的数据。 在 PropertyId 字段中,使用 存储 _ 属性 _ ID 枚举来指定数据的类型。 使用 AdditionalParameters 字段来指定更多详细信息,具体取决于数据的类型。 对于特定于协议的数据,请在 AdditionalParameters 字段中使用 _ 特定于存储协议的 _ _ 数据 结构。 对于温度数据,请使用 AdditionalParameters 字段中的 存储 _ 温度 _ 信息 结构。
  • [color=var(--theme-hyperlink)]存储 _属性 _ ID :此枚举包含允许 IOCTL _ 存储 _ 查询 _ 属性 检索特定于协议和温度信息的新值。
    • StorageAdapterProtocolSpecificProperty:如果 ProtocolType = ProtocolTypeNvme,DataType = NVMeDataTypeLogPage,则调用方应请求512字节块的数据。
    • StorageDeviceProtocolSpecificProperty
    将这些特定于协议的属性 Id 之一与特定于 存储 _ 协议 _ 的 _ 数据 结合使用,以在 [color=var(--theme-hyperlink)]存储 _ 协议 _ 数据 _ 描述符 结构中检索特定于协议的数据。
    • StorageAdapterTemperatureProperty
    • StorageDeviceTemperatureProperty
    使用这些温度属性 Id 之一来检索 [color=var(--theme-hyperlink)]存储 _ 温度 _ 数据 _ 描述符 结构中的温度数据。
  • [color=var(--theme-hyperlink)]存储 _特定于协议的 _ _ 数据:当此结构用于 存储 _ 属性 _ 查询 的 AdditionalParameters 字段,并指定 [color=var(--theme-hyperlink)]存储 _ 协议 _ NVMe _ 数据 _ 类型枚举值时,检索 NVMe 特定数据。 在 _ _ 特定于 _ 存储协议的数据 结构的 "数据类型" 字段中,使用以下 存储 _ 协议 _ NVME _ 数据 _ 类型 值之一:
    • 使用 NVMeDataTypeIdentify 可获取标识控制器数据或标识命名空间数据。
    • 使用 NVMeDataTypeLogPage 获取日志页 (包括智能/运行状况数据) 。
    • 使用 NVMeDataTypeFeature 获取 NVMe 驱动器的功能。
  • [color=var(--theme-hyperlink)]存储 _温度 _ 信息 :此结构用于保存特定温度数据。 它在 存储 _ TEMERATURE _ 数据 _ 描述符 中用于返回温度查询的结果。
  • [color=var(--theme-hyperlink)]IOCTL _存储 _ 集 _ 温度 _ 阈值 :将此 IOCTL 与 存储 _ 温度 _ 阈值 结构配合使用可设置温度阈值。 有关详细信息,请参阅 [color=var(--theme-hyperlink)]行为更改命令
  • [color=var(--theme-hyperlink)]存储 _温度 _ 阈值 :此结构用作指定温度阈值的输入缓冲区。 OverThreshold 字段 (布尔) 指定 阈值 字段是超出阈值还是不 (; 否则,该值为低于阈值) 。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2021-10-8 23:51:48 | 显示全部楼层
不知道读取位置信息有啥用,但是首先想到了通过WMI方式查询,不过没找到对应的类,帮顶一下
 楼主| 发表于 2021-10-10 09:52:55 | 显示全部楼层
也没有找到对应的说明,不知道磁盘控制器和存储控制器有什么差异,读这个位置信息主要想知道NVME挂在哪个总线上面,以此做区分,可以卸载盘。只找到liux下的操作,不知道WINDOWS上如何读取相应的信息  
https://blog.weixiaoline.com/956.html
发表于 2021-10-24 21:26:16 | 显示全部楼层
本帖最后由 gyp2000 于 2021-10-24 21:36 编辑

下载一个程序 devcon64.exe
然后使用命令行:
devcon64 find =SCSIADAPTER *PCI*
可以返回设备信息。



然后读取注册表项目中的 键值 LocationInformation
就可以获取他的硬件位置信息


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2021-10-24 21:53:07 | 显示全部楼层
gyp2000 发表于 2021-10-24 21:26
下载一个程序 devcon64.exe
然后使用命令行:
devcon64 find =SCSIADAPTER *PCI*

你这不是可以直接读注册表吗…… 上面返回的信息在注册表都有吧~
 楼主| 发表于 2021-10-30 21:27:57 | 显示全部楼层
afan 大大,能给行代码参考一下吗?读取注册表是最直接的              gpy2000是否考虑先列出物理地址,再根据物理地址来读取相应的位置信息。
发表于 2021-10-30 21:43:10 | 显示全部楼层
rally 发表于 2021-10-30 21:27
afan 大大,能给行代码参考一下吗?读取注册表是最直接的              gpy2000是否考虑先列出物理地址,再 ...

我没用这系统… 你自己到注册表搜一下不就知道位置了~
 楼主| 发表于 2021-10-30 21:55:35 | 显示全部楼层
好,我试试,感谢afan大大 和 gpy2000 的指点
 楼主| 发表于 2021-11-13 16:07:35 | 显示全部楼层
gyp2000 发表于 2021-10-24 21:26
下载一个程序 devcon64.exe
然后使用命令行:
devcon64 find =SCSIADAPTER *PCI*

能帮上传您这个Devcon64.exe版本吗?我这样读出来的是全部的PCI硬件设备,并不单只有NVMe盘,
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 22:12 , Processed in 0.076382 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表