无忧启动论坛

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

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

    [复制链接]
721#
 楼主| 发表于 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
回复

使用道具 举报

722#
发表于 2025-12-28 14:46:48 | 只看该作者
wintoflash 发表于 2025-12-28 10:48
DebugPrint函数中,_tfopen_s(&fp, file, _T("ac"));改为_tfopen_s(&fp, file, _T("a, ccs=UTF-8"));就行 ...

setlocale( LC_ALL, "" );

将区域设置设定为默认值,该值是从操作系统获得的用户默认的 ANSI 代码页。 区域设置名称设置为由 GetUserDefaultLocaleName 返回的值。 代码页设置为由 GetACP 返回的值。
-------------
https://learn.microsoft.com/zh-c ... ocale?view=msvc-170

我也用这个,看资料完全没问题呀。优点明显

点评

在DLL里面用这个不合适。如果是/MD编译,setlocale会改变主程序的区域设置。  详情 回复 发表于 2025-12-28 19:59
回复

使用道具 举报

723#
 楼主| 发表于 2025-12-28 19:59:07 | 只看该作者
本帖最后由 wintoflash 于 2025-12-28 21:04 编辑
红毛樱木 发表于 2025-12-28 15:46
setlocale( LC_ALL, "" );

将区域设置设定为默认值,该值是从操作系统获得的用户默认的 ANSI 代码页。 ...

在DLL里面用这个不合适。如果是/MD编译,setlocale会改变主程序的区域设置。非东亚地区很多情况下用的是UTF-8代码页,不是ANSI。对于GUI程序影响还不是很大,对CLI程序影响很大。

点评

这样呀,那确实应该保持原样。 不过既然程序已经用 UNICODE 了,所以这里libcdi的 DebugPrint 直接用UNICODE更合适,也不要用UTF-8了  详情 回复 发表于 2025-12-28 20:15
回复

使用道具 举报

724#
发表于 2025-12-28 20:15:08 | 只看该作者
wintoflash 发表于 2025-12-28 19:59
在DLL里面用这个不合适。如果是/MD编译,setlocale会改变主程序的区域设置。非东亚地区很多情况下用的是U ...

这样呀,那确实应该保持原样。  不过既然程序已经用 UNICODE 了,所以这里libcdi的 DebugPrint 直接用UNICODE更合适,也不要用UTF-8了

点评

那也不行。傻福Windows的这个东西不支持输出中文宽字符  详情 回复 发表于 2025-12-28 22:32
回复

使用道具 举报

725#
发表于 2025-12-28 20:27:56 | 只看该作者

感谢分享
回复

使用道具 举报

726#
 楼主| 发表于 2025-12-28 22:32:18 | 只看该作者
红毛樱木 发表于 2025-12-28 21:15
这样呀,那确实应该保持原样。  不过既然程序已经用 UNICODE 了,所以这里libcdi的 DebugPrint 直接用UNI ...

那也不行。傻Windows的这个东西不支持输出中文宽字符
回复

使用道具 举报

727#
发表于 2025-12-29 14:56:04 | 只看该作者
cditest.c
中发现,之前获取磁盘个数的代码是:
  1. PHY_DRIVE_INFO* pdInfo;
  2. diskCount = GetDriveInfoList(FALSE, &pdInfo);;
复制代码


现在都代码是:
  1. diskCount = cdi_get_disk_count(cdiSmart);
复制代码


导致电脑中接入的U盘没有计算在内,这是故意的还是BUG?

点评

具体怎么处理我没想好。假设电脑有以下磁盘: HDD0 -> PhysicalDrive0 RAID -> PhysicalDrive1 (HDD1, HDD2) USB0 -> PhysicalDrive2 按照Windows口径,是3块硬盘 按照CrystalDiskInfo口径,根据启动选项有好几  详情 回复 发表于 2025-12-29 16:37
回复

使用道具 举报

728#
 楼主| 发表于 2025-12-29 16:37:24 | 只看该作者
红毛樱木 发表于 2025-12-29 15:56
cditest.c
中发现,之前获取磁盘个数的代码是:

具体怎么处理我没想好。假设电脑有以下磁盘:
HDD0 -> PhysicalDrive0
RAID -> PhysicalDrive1 (HDD1, HDD2)
USB0 -> PhysicalDrive2
按照Windows口径,是3块硬盘
按照CrystalDiskInfo口径,根据启动选项有好几种可能:
1块硬盘(HDD0)
2块硬盘(HDD0, RAID)
3块硬盘(HDD0, HDD1, HDD2)
4块硬盘(HDD0, HDD1, HDD2, RAID)

点评

还有一个问题需要处理考虑一下了。 RAID模式里的硬盘, cdi_get_int 返回的都是 -1,这时候想要通过磁盘号获取smart信息就头大了,因为全部是 -1  详情 回复 发表于 2025-12-29 17:25
回复

使用道具 举报

729#
发表于 2025-12-29 17:25:04 | 只看该作者
wintoflash 发表于 2025-12-29 16:37
具体怎么处理我没想好。假设电脑有以下磁盘:
HDD0 -> PhysicalDrive0
RAID -> PhysicalDrive1 (HDD1,  ...

还有一个问题需要处理考虑一下了。
RAID模式里的硬盘, cdi_get_int 返回的都是 -1,这时候想要通过磁盘号获取smart信息就头大了,因为全部是 -1

点评

这是因为它们根本没有磁盘号,不能通过PhysicalDriveX来访问。要想搞清楚它们对应的是哪个raid得把各种驱动都逆向了才行。 其实CrystalDiskInfo还有一个坑。有的raid驱动是和CrystalDiskInfo开发者有合作的,要提供  详情 回复 发表于 2025-12-29 18:08
回复

使用道具 举报

730#
 楼主| 发表于 2025-12-29 18:08:07 | 只看该作者
红毛樱木 发表于 2025-12-29 18:25
还有一个问题需要处理考虑一下了。
RAID模式里的硬盘, cdi_get_int 返回的都是 -1,这时候想要通过磁盘 ...

这是因为它们根本没有磁盘号,不能通过PhysicalDriveX来访问。要想搞清楚它们对应的是哪个raid得把各种驱动都逆向了才行。
其实CrystalDiskInfo还有一个坑。有的raid驱动是和CrystalDiskInfo开发者有合作的,要提供证书才能拿到信息。你第三方编译的没证书就吃大粪去吧。

点评

和磁盘控制器之间的通信证书? 还是单纯的程序自己有签名证书就行?  详情 回复 发表于 2025-12-29 18:18
回复

使用道具 举报

731#
发表于 2025-12-29 18:18:29 | 只看该作者
wintoflash 发表于 2025-12-29 18:08
这是因为它们根本没有磁盘号,不能通过PhysicalDriveX来访问。要想搞清楚它们对应的是哪个raid得把各种驱 ...

和磁盘控制器之间的通信证书?   还是单纯的程序自己有签名证书就行?

点评

这个影响不大。CrystalDiskInfo需要AMD_RC2t7这个私有库来获取AMD RAID的SMART。 这个库根据许可协议除了CrystalDiskInfo开发者,其他人都不能分发。本身做合规项目的话,不用考虑就行了。 libcdi中没启用这个的  详情 回复 发表于 2025-12-29 19:32
回复

使用道具 举报

732#
 楼主| 发表于 2025-12-29 19:32:04 | 只看该作者
本帖最后由 wintoflash 于 2025-12-29 21:40 编辑
红毛樱木 发表于 2025-12-29 19:18
和磁盘控制器之间的通信证书?   还是单纯的程序自己有签名证书就行?

这个影响不大。CrystalDiskInfo需要AMD_RC2t7这个私有库来获取AMD RAID的SMART。
这个库根据许可协议除了CrystalDiskInfo开发者,其他人都不能分发。
・本ライブラリを複製、改変、又は、逆コンパイル、逆アセンブル、復号化、又は他の方法のリバースエンジニアリングを行ってはなりません。
・本ライブラリは、開発者による自身の複製権をもってのみ配布され、再配布は許可されません。本ライブラリを使用するソフトウェアの配布物の中に、本ライブラリのバイナリを含めることはできません。
・本ライブラリ、または本ライブラリに類似する内容、本ライブラリと混同する内容を、本開発者以外がストアなどに登録することは禁止です。
・本ライブラリを利用するソフトウェアは、ソースコードを公開しなくてもよいですが、意図的に悪意のある内容であってはなりません。
・本ライブラリは、ライセンスを遵守する場合に限り、商用ソフトウェアで利用可能です。ただし、このライブラリの機能そのものを販売してはなりません。

libcdi中没启用这个的支持,实际上CDI_FLAG_ENABLE_AMD_RC2这个flag是无效的。
回复

使用道具 举报

733#
发表于 2026-1-1 15:53:53 | 只看该作者
爱分享的人最帅
回复

使用道具 举报

734#
 楼主| 发表于 2026-1-1 21:06:23 | 只看该作者
20260101更新v1.5.3
  1. [DEV] 添加动态链接库(libnw.dll)方便开发者调用,暂时不保证API稳定性。下载:https://nightly.link/a1ive/nwinfo/workflows/msbuild/master/NWinfo%20Library.zip
  2. [ALL] 为libcdi启用CSMI (感谢@红毛樱木)
  3. [ALL] 支持获取BIOS CPU微码版本
  4. [CLI] 添加--sensor选项,用于读取所有支持的传感器数据
  5. [CLI] --display选项允许加载本地EDID dump文件
  6. [GUI] 添加/debug命令行选项用于输出调试信息
  7. [GUI] 添加传感器视图
复制代码

百度,我澡称冯了个https://xzfw39.xiazaifuwu.cn/side6746.html


点评

这是被拿去收割了?  详情 回复 发表于 2026-1-1 21:18
回复

使用道具 举报

735#
发表于 2026-1-1 21:18:00 | 只看该作者
wintoflash 发表于 2026-1-1 21:06
20260101更新v1.5.3

百度,我澡称冯了个福:https://xzfw39.xiazaifuwu.cn/side6746.html

这是被拿去收割了?

点评

这玩意就是骗钱的收费安装器,要花19元才能安装。  详情 回复 发表于 2026-1-1 22:30
回复

使用道具 举报

736#
 楼主| 发表于 2026-1-1 22:30:54 | 只看该作者
527104427 发表于 2026-1-1 22:18
这是被拿去收割了?

这玩意就是骗钱的收费安装器,要花19元才能安装。
回复

使用道具 举报

737#
发表于 7 天前 | 只看该作者
多谢更新分享
回复

使用道具 举报

738#
发表于 7 天前 | 只看该作者
不知道是不是BUG,每次点刷新按钮都自动退出,如图:


点评

v1.5.4已修复  详情 回复 发表于 4 天前
元旦放完假了再修  详情 回复 发表于 7 天前
回复

使用道具 举报

739#
发表于 7 天前 | 只看该作者
新年第一更,支持一波
回复

使用道具 举报

740#
 楼主| 发表于 7 天前 | 只看该作者
0cat0 发表于 2026-1-2 10:43
不知道是不是BUG,每次点刷新按钮都自动退出,如图:

元旦放完假了再修

点评

辛苦了  详情 回复 发表于 6 天前
回复

使用道具 举报

741#
发表于 7 天前 | 只看该作者
Awesome!
回复

使用道具 举报

742#
发表于 7 天前 | 只看该作者
AtaSmart_20260102.20.14.zip (60.33 KB, 下载次数: 3)

改动了一些。

之前的代码套到 CrystalDiskInfo 中会识别不出来硬盘容量。
调整了一些细节,我自己也放一个上git 上了

https://github.com/DriverTerminator/CrystalDiskInfo_Cfgmgr32

点评

大过年还在研究啊  详情 回复 发表于 6 天前
回复

使用道具 举报

743#
发表于 6 天前 | 只看该作者
wintoflash 发表于 2026-1-2 16:56
元旦放完假了再修

辛苦了
回复

使用道具 举报

744#
发表于 6 天前 | 只看该作者
谢谢分享收藏了
回复

使用道具 举报

745#
 楼主| 发表于 6 天前 | 只看该作者
红毛樱木 发表于 2026-1-2 21:22
改动了一些。

之前的代码套到 CrystalDiskInfo 中会识别不出来硬盘容量。

大过年还在研究啊

点评

nwinfo也加上 ARM64和ARM的编译呗  详情 回复 发表于 5 天前
回复

使用道具 举报

746#
发表于 5 天前 | 只看该作者
wintoflash 发表于 2026-1-3 12:59
大过年还在研究啊

nwinfo也加上 ARM64和ARM的编译呗

点评

红毛用的什么ARM64设备啊? 我看鲲鹏920性价比还行,就是跑WOA缺驱动有点痛苦:https://github.com/dixyes/d920s10 我之前有个一加手机能刷WOA,结果刷机的时候typec口接触不良导致砖了。 ARM64可以考虑,ARM就  详情 回复 发表于 5 天前
回复

使用道具 举报

747#
 楼主| 发表于 5 天前 | 只看该作者
红毛樱木 发表于 2026-1-4 20:53
nwinfo也加上 ARM64和ARM的编译呗

红毛用的什么ARM64设备啊?
我看鲲鹏920性价比还行,就是跑WOA缺驱动有点痛苦:https://github.com/dixyes/d920s10
我之前有个一加手机能刷WOA,结果刷机的时候typec口接触不良导致砖了。

ARM64可以考虑,ARM就没必要了吧,市面上应该不存在这玩意了。
libcpuid已经支持ARM了,只是缺个合适的驱动。

点评

mac mini 3000多 macos 里vmware虚拟机安装windows 11 ARM  详情 回复 发表于 3 天前
之前还在公司的时候,做ARM64 Windows PE的时候专门买了台设备,华为的MateBook E Go,骁龙处理器的。 不在公司了,现在手上也没设备玩了,之前也还有一台 联想Win8 RT的设备用来测 ARM,知识触摸屏坏了也不知道扔  详情 回复 发表于 5 天前
回复

使用道具 举报

748#
发表于 5 天前 | 只看该作者
wintoflash 发表于 2026-1-4 20:17
红毛用的什么ARM64设备啊?
我看鲲鹏920性价比还行,就是跑WOA缺驱动有点痛苦:https://github.com/dixy ...

之前还在公司的时候,做ARM64 Windows PE的时候专门买了台设备,华为的MateBook E Go,骁龙处理器的。   不在公司了,现在手上也没设备玩了,之前也还有一台 联想Win8 RT的设备用来测 ARM,知识触摸屏坏了也不知道扔哪去了。
加上ARM64和ARM的编译选项呗,让有需要的人自己编译生成,比如我  我有强迫症

点评

github加上ARM64的了,只有libcdi和cditest能编译成功。 主要问题还是libcpuid。ARM64下Windows不允许用户态程序执行mrs MIDR_EL1指令,得先搞个驱动。  详情 回复 发表于 4 天前
有没有办法搞到EV,给驱动过WHQL?  详情 回复 发表于 5 天前
回复

使用道具 举报

749#
 楼主| 发表于 5 天前 | 只看该作者
红毛樱木 发表于 2026-1-4 21:41
之前还在公司的时候,做ARM64 Windows PE的时候专门买了台设备,华为的MateBook E Go,骁龙处理器的。    ...

有没有办法搞到EV,给驱动过WHQL?

点评

有EV,支持驱动,但是无WHQL  详情 回复 发表于 4 天前
自己注册公司买带驱动签名的证书,大概4K多一年。建议淘宝找卖家单次付费签名包WHQL和UEFI安全启动模式,几百一次吧。驱动一般也不改来改去的  详情 回复 发表于 5 天前
回复

使用道具 举报

750#
发表于 5 天前 | 只看该作者
wintoflash 发表于 2026-1-4 20:56
有没有办法搞到EV,给驱动过WHQL?

自己注册公司买带驱动签名的证书,大概4K多一年。建议淘宝找卖家单次付费签名包WHQL和UEFI安全启动模式,几百一次吧。驱动一般也不改来改去的
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2026-1-9 08:34

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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