无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: wintoflash
打印 上一主题 下一主题

[原创] 开源的硬件信息工具nwinfo [20260125]

    [复制链接]
691#
发表于 2025-12-16 15:09:31 | 只看该作者
1楼下载的最新版,运行程序后,再运行CPU-Z最新版,提示:





怎么样才能不干涉,2个同时运行呢

点评

删掉cpuid*.sys 下载1楼的HwIo驱动,解压到nwinfo同一目录  详情 回复 发表于 2025-12-16 15:59
回复

使用道具 举报

692#
发表于 2025-12-16 15:20:01 | 只看该作者
赞一个,一定要升起!
回复

使用道具 举报

693#
 楼主| 发表于 2025-12-16 15:59:07 | 只看该作者
0cat0 发表于 2025-12-16 16:09
1楼下载的最新版,运行程序后,再运行CPU-Z最新版,提示:

删掉cpuid*.sys
下载1楼的HwIo驱动,解压到nwinfo同一目录

点评

OK,没有问题了  详情 回复 发表于 2025-12-16 16:07
回复

使用道具 举报

694#
发表于 2025-12-16 16:07:45 | 只看该作者
wintoflash 发表于 2025-12-16 15:59
删掉cpuid*.sys
下载1楼的HwIo驱动,解压到nwinfo同一目录

OK,没有问题了
回复

使用道具 举报

695#
发表于 2025-12-16 20:20:57 | 只看该作者
好工具
回复

使用道具 举报

696#
发表于 2025-12-16 20:55:36 | 只看该作者
开源的硬件信息工具nwinfo [20251204]。感谢分享!
回复

使用道具 举报

697#
发表于 2025-12-17 02:56:48 | 只看该作者
wintoflash 发表于 2025-12-16 09:40
是的。和nwinfo分别放两个仓库不方便开发,所以直接全放nwinfo里面了。

另外读取部分磁盘SMART的时候还是需要WMI。如果前面没初始化,还是得卡半天。。。
---------------------------
应该就是这地方的磁盘号没获取正确,导致别的信息都要从后面重新获取的吧。
整个逻辑不知道是啥样的,定位改这个问题我就折腾了一天一夜。。。。 主要还是我太菜了

点评

还是不要在这上面纠结吧。万一哪天作者又更新了,这些全都得重新改。 我都在研究怎么把那个C#的项目改成Native AOT编译了。  详情 回复 发表于 2025-12-17 09:29
回复

使用道具 举报

698#
 楼主| 发表于 2025-12-17 09:29:55 | 只看该作者
红毛樱木 发表于 2025-12-17 03:56
另外读取部分磁盘SMART的时候还是需要WMI。如果前面没初始化,还是得卡半天。。。
-------------------- ...

还是不要在这上面纠结吧。万一哪天作者又更新了,这些全都得重新改。
我都在研究怎么把那个C#的项目改成Native AOT编译了。

点评

试试,看看还有哪里遗漏的地方。 stdafx.h 里的系统版本限制应该也可以解除了  详情 回复 发表于 2025-12-17 18:35
别啊别啊。 把这个改了提交给作者,吹牛必须比他快。 我在改在改  详情 回复 发表于 2025-12-17 12:15
回复

使用道具 举报

699#
发表于 2025-12-17 12:15:00 | 只看该作者
wintoflash 发表于 2025-12-17 09:29
还是不要在这上面纠结吧。万一哪天作者又更新了,这些全都得重新改。
我都在研究怎么把那个C#的项目改成 ...

别啊别啊。    把这个改了提交给作者,吹牛必须比他快。  我在改在改
回复

使用道具 举报

700#
发表于 2025-12-17 18:35:47 | 只看该作者
本帖最后由 红毛樱木 于 2025-12-18 21:57 编辑
wintoflash 发表于 2025-12-17 09:29
还是不要在这上面纠结吧。万一哪天作者又更新了,这些全都得重新改。
我都在研究怎么把那个C#的项目改成 ...

AtaSmart.zip (59.49 KB, 下载次数: 6)


试试,看看还有哪里遗漏的地方。
stdafx.h 里的系统版本限制应该也可以解除了
--------------
优化了一下
AtaSmart_20251218.zip (60.22 KB, 下载次数: 0)


点评

老哥牛逼,我有空试下。最近流感了没怎么搞。  详情 回复 发表于 2025-12-17 21:00
回复

使用道具 举报

701#
 楼主| 发表于 2025-12-17 21:00:38 | 只看该作者
红毛樱木 发表于 2025-12-17 19:35
试试,看看还有哪里遗漏的地方。
stdafx.h 里的系统版本限制应该也可以解除了

老哥牛逼,我有空试下。最近流感了没怎么搞。

点评

我感觉可以改造的更彻底,第一次枚举设备列表初始化的时候,把后面的所有数据一次性填完,然后把后面的代码可以全抛弃了  详情 回复 发表于 2025-12-18 13:37
回复

使用道具 举报

702#
发表于 2025-12-18 13:37:23 来自手机 | 只看该作者
wintoflash 发表于 2025-12-17 21:00
老哥牛逼,我有空试下。最近流感了没怎么搞。

我感觉可以改造的更彻底,第一次枚举设备列表初始化的时候,把后面的所有数据一次性填完,然后把后面的代码可以全抛弃了
回复

使用道具 举报

703#
发表于 2025-12-26 16:39:48 | 只看该作者
老铁  看你github里 1.5.2是有问题下架了还是准备大改 咋没发布新的测试版了

点评

为了防止AI胡乱引用,不再每次推送代码的同时发布release了。 最新构建(包括exe和动态库)可以在actions里面下载,比如 https://github.com/a1ive/nwinfo/actions/runs/20516653177。这样方便下载历史版本进行比较  详情 回复 发表于 2025-12-26 20:44
回复

使用道具 举报

704#
发表于 2025-12-26 20:10:07 | 只看该作者
继续完善
AtaSmart_20251226.zip (59.94 KB, 下载次数: 3)

点评

话说你那边测试可以正常识别用Intel RST组了RAID的硬盘吗?我有两个盘组了RAID,libcdi好像只能识别那个RAID设备,识别不到它下面的两个盘。CrystalDiskInfo可以。  详情 回复 发表于 2025-12-26 21:49
可以啊。快了3.5秒。 [attachimg]569744[/attachimg] CAtaSmart::GetSmartInfoWmi 这里面也用到了WMI,不嫌麻烦的话也可以看看。  详情 回复 发表于 2025-12-26 20:37
回复

使用道具 举报

705#
 楼主| 发表于 2025-12-26 20:37:21 | 只看该作者

可以啊。快了3.5秒。

CAtaSmart::GetSmartInfoWmi 这里面也用到了WMI,不嫌麻烦的话也可以看看。

点评

CAtaSmart::GetSmartInfoWmi ---------- 我测试好像代码跑不到这里。  详情 回复 发表于 2025-12-26 21:01
回复

使用道具 举报

706#
 楼主| 发表于 2025-12-26 20:44:07 | 只看该作者
2012jiashanni 发表于 2025-12-26 17:39
老铁  看你github里 1.5.2是有问题下架了还是准备大改 咋没发布新的测试版了

为了防止AI胡乱引用,同时为了将来上架微软商店,不再每次推送代码的同时发布release了。
最新构建(包括exe和动态库)可以在actions里面下载,比如 https://github.com/a1ive/nwinfo/actions/runs/20516653177。这样方便下载历史版本进行比较。
也可以用下面的链接直接下载最新构建:
DLL动态库:https://nightly.link/a1ive/nwinf ... /master/Library.zip
nwinfo.exe:https://nightly.link/a1ive/nwinf ... d/master/nwinfo.zip
回复

使用道具 举报

707#
发表于 2025-12-26 21:01:36 | 只看该作者
wintoflash 发表于 2025-12-26 20:37
可以啊。快了3.5秒。

CAtaSmart::GetSmartInfoWmi 这里面也用到了WMI,不嫌麻烦的话也可以看看。

CAtaSmart::GetSmartInfoWmi
----------
我测试好像代码跑不到这里。

点评

CAtaSmart::GetSmartAttributeSi 打不开句柄时会走GetSmartAttributeWmi,然后走到GetSmartInfoWmi,概率很低。 Silicon Image的设备会用到。 查了一下,Silicon Image是生产SATA RAID卡的厂商,2015年倒闭了。那  详情 回复 发表于 2025-12-26 21:45
回复

使用道具 举报

708#
 楼主| 发表于 2025-12-26 21:45:48 | 只看该作者
红毛樱木 发表于 2025-12-26 22:01
CAtaSmart::GetSmartInfoWmi
----------
我测试好像代码跑不到这里。

CAtaSmart::GetSmartAttributeSi 打不开句柄时会走GetSmartAttributeWmi,然后走到GetSmartInfoWmi,概率很低。
Silicon Image的设备会用到。
查了一下,Silicon Image是生产SATA RAID卡的厂商,2015年倒闭了。那没事了,可以全删掉。
回复

使用道具 举报

709#
 楼主| 发表于 2025-12-26 21:49:49 | 只看该作者

话说你那边测试可以正常识别用Intel RST组了RAID的硬盘吗?我有两个盘组了RAID,libcdi好像只能识别那个RAID设备,识别不到它下面的两个盘。CrystalDiskInfo可以。

点评

我借到一个设备远程试了下。 用你的原始的 libcdi 也识别不了RAID 0下的盘, CrystalDiskInfo 是可以的。  详情 回复 发表于 2025-12-27 14:28
我的两个NVME盘是挂在VMD模式(等同于RST吧)下的,仅仅是挂在下面,没真组RAID,我这里目前可以识别正常。今晚我改后发上来的新的cpp也不能识别你的RST下的盘吗?  详情 回复 发表于 2025-12-26 22:32
回复

使用道具 举报

710#
发表于 2025-12-26 22:12:44 | 只看该作者
不错的工具,很专业和实用!
回复

使用道具 举报

711#
发表于 2025-12-26 22:32:26 | 只看该作者
wintoflash 发表于 2025-12-26 21:49
话说你那边测试可以正常识别用Intel RST组了RAID的硬盘吗?我有两个盘组了RAID,libcdi好像只能识别那个R ...

我的两个NVME盘是挂在VMD模式(等同于RST吧)下的,仅仅是挂在下面,没真组RAID,我这里目前可以识别正常。今晚我改后发上来的新的cpp也不能识别你的RST下的盘吗?

点评

也不能。没组raid之前是可以的。组raid之后只能识别到一个盘,smart无效。  详情 回复 发表于 2025-12-26 22:34
回复

使用道具 举报

712#
 楼主| 发表于 2025-12-26 22:34:10 | 只看该作者
红毛樱木 发表于 2025-12-26 23:32
我的两个NVME盘是挂在VMD模式(等同于RST吧)下的,仅仅是挂在下面,没真组RAID,我这里目前可以识别正常。 ...

也不能。没组raid之前是可以的。组raid之后只能识别到一个raid盘,smart无效。

点评

我忘记真实的RAID模式下,磁盘是不是被这里过滤掉了。你看下  详情 回复 发表于 2025-12-27 00:04
哦哦哦,那需要再看看代码再研究下,应该是靠后的代码问题,有空再继续。  详情 回复 发表于 2025-12-26 23:22
回复

使用道具 举报

713#
发表于 2025-12-26 23:22:37 | 只看该作者
wintoflash 发表于 2025-12-26 22:34
也不能。没组raid之前是可以的。组raid之后只能识别到一个raid盘,smart无效。

哦哦哦,那需要再看看代码再研究下,应该是靠后的代码问题,有空再继续。
回复

使用道具 举报

714#
发表于 2025-12-27 00:04:55 | 只看该作者
wintoflash 发表于 2025-12-26 22:34
也不能。没组raid之前是可以的。组raid之后只能识别到一个raid盘,smart无效。
  1. if ((DoCM_Get_DevNode_Registry_PropertyW(&dnDevInst, (DEVINSTID_W)DeviceInstanceId, CM_DRP_CLASSGUID, szClassGUID) == CR_SUCCESS) && (!_wcsicmp(szClassGUID, L"{4d36e967-e325-11ce-bfc1-08002be10318}") || !_wcsicmp(szClassGUID, L"{4d36e96a-e325-11ce-bfc1-08002be10318}") || !_wcsicmp(szClassGUID, L"{4d36e97b-e325-11ce-bfc1-08002be10318}") || !_wcsicmp(szClassGUID, L"{36fc9e60-c465-11cf-8056-444553540000}") || !_wcsicmp(szClassGUID, L"{6bdd1fc1-810f-11d0-bec7-08002be2092f}") || !_wcsicmp(szClassGUID, L"{a0a588a4-c46f-4b37-b7ea-c82fe89870c6}")))
复制代码


我忘记真实的RAID模式下,磁盘是不是被这里过滤掉了。你看下

回复

使用道具 举报

715#
发表于 2025-12-27 14:28:13 | 只看该作者
本帖最后由 红毛樱木 于 2025-12-27 15:29 编辑
wintoflash 发表于 2025-12-26 21:49
话说你那边测试可以正常识别用Intel RST组了RAID的硬盘吗?我有两个盘组了RAID,libcdi好像只能识别那个R ...

我借到一个设备远程试了下。 用你的原始的 libcdi(好像一直有这个问题,一直不行) 也识别不了RAID 0下的盘,  CrystalDiskInfo 是可以的。--------
暂时定位到和
DWORD CsmiType = 0;
有关,因为会导致  BOOL CAtaSmart::AddDiskCsmi(INT scsiPort)  直接
if(CsmiType == CSMI_TYPE_DISABLE)
{
        return FALSE;
}

--------
另外测试
CrystalDiskInfo 可以是因为默认勾选了  Intel/AMD RAID (CSMI) ,如果去掉这个勾选项则一样不能识别。

点评

OK。 在cdi_init_smart中,ptr->Init的前面加上 就可以检测到了。  详情 回复 发表于 2025-12-27 19:11
回复

使用道具 举报

716#
发表于 2025-12-27 14:55:30 | 只看该作者
请问最新测试版是不支持cpuidx64.sys了吗 我命令行运行后显示     Driver: 'NOT FOUND' 而使用HwIox64.sys后则正常

点评

[attachimg]569784[/attachimg] 没有问题啊  详情 回复 发表于 2025-12-27 18:40
回复

使用道具 举报

717#
 楼主| 发表于 2025-12-27 18:40:16 | 只看该作者
2012jiashanni 发表于 2025-12-27 15:55
请问最新测试版是不支持cpuidx64.sys了吗 我命令行运行后显示     Driver: 'NOT FOUND' 而使用HwIox64.sys ...


没有问题啊
回复

使用道具 举报

718#
 楼主| 发表于 2025-12-27 19:11:18 | 只看该作者
红毛樱木 发表于 2025-12-27 15:28
我借到一个设备远程试了下。 用你的原始的 libcdi(好像一直有这个问题,一直不行) 也识别不了RAID 0下 ...

OK。
在cdi_init_smart中,ptr->Init的前面加上
  1. ptr->CsmiType = CAtaSmart::CSMI_TYPE_ENABLE_AUTO;
复制代码

就可以检测到了。

点评

另外还有一个发现。 我测试日志模式下, DebugPrint 在有中文的时候写入log文件乱码了,CrystalDiskInfo 没有乱码。都是ANSI的.log文本  详情 回复 发表于 2025-12-27 19:28
回复

使用道具 举报

719#
发表于 2025-12-27 19:28:08 | 只看该作者
本帖最后由 红毛樱木 于 2025-12-27 19:30 编辑
wintoflash 发表于 2025-12-27 19:11
OK。
在cdi_init_smart中,ptr->Init的前面加上

另外还有一个发现。
我测试日志模式下,  DebugPrint 在有中文的时候写入log文件乱码了,CrystalDiskInfo 没有乱码。都是ANSI的.log文本-----------
看你解决了,那应该在 CDI_FLAG_ENABLE_xx 那里加多几个开关了。

点评

DebugPrint函数中,_tfopen_s(&fp, file, _T("ac"));改为_tfopen_s(&fp, file, _T("a, ccs=UTF-8"));就行了。 CrystalDiskInfo 不乱码,是因为执行了_tsetlocale(LC_ALL, _T(""));。但是我觉得这种操作会带来副作用  详情 回复 发表于 2025-12-28 10:48
回复

使用道具 举报

720#
 楼主| 发表于 2025-12-28 10:48:26 | 只看该作者
红毛樱木 发表于 2025-12-27 20:28
另外还有一个发现。
我测试日志模式下,  DebugPrint 在有中文的时候写入log文件乱码了,CrystalDiskInf ...

DebugPrint函数中,_tfopen_s(&fp, file, _T("ac"));改为_tfopen_s(&fp, file, _T("a, ccs=UTF-8"));就行了。
CrystalDiskInfo 不乱码,是因为执行了_tsetlocale(LC_ALL, _T(""));。但是我觉得这种操作会带来副作用。

点评

setlocale( LC_ALL, "" ); 将区域设置设定为默认值,该值是从操作系统获得的用户默认的 ANSI 代码页。 区域设置名称设置为由 GetUserDefaultLocaleName 返回的值。 代码页设置为由 GetACP 返回的值。 ----------  详情 回复 发表于 2025-12-28 14:46
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2026-3-2 12:54

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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