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

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

   火... [复制链接]
 楼主| 发表于 2025-8-13 13:45:04 | 显示全部楼层
冰华 发表于 2025-8-13 12:18
可否加上网卡的MAC地址信息,以便一目了然

本来就有。
回复

使用道具 举报

发表于 2025-8-14 12:53:12 | 显示全部楼层
非常感谢
回复

使用道具 举报

发表于 2025-8-14 13:09:46 | 显示全部楼层
路过看看
回复

使用道具 举报

发表于 2025-8-18 16:49:37 | 显示全部楼层
老大! RtlGetNtVersionNumbers 函数获取到的 NtBuildNumber 怎么转换成标准内部版本号(构建号)?

点评

取低16位就可以了 (&= 0xFF) [attachimg]563150[/attachimg] 用有公开文档的RtlGetVersion不好吗?  详情 回复 发表于 2025-8-18 19:55
回复

使用道具 举报

 楼主| 发表于 2025-8-18 19:55:02 | 显示全部楼层
本帖最后由 wintoflash 于 2025-8-18 21:28 编辑
Bluebells 发表于 2025-8-18 16:49
老大! RtlGetNtVersionNumbers 函数获取到的 NtBuildNumber 怎么转换成标准内部版本号(构建号)?

取低16位就可以了 (&= 0xFFFF)
  1. int main(void)
  2. {
  3.         DWORD dwMajor, dwMinor, dwBuild;
  4.         RtlGetNtVersionNumbers(&dwMajor, &dwMinor, &dwBuild);
  5.         printf("NT %lu.%lu.%lu\n", dwMajor, dwMinor, dwBuild & 0xFFFF);
  6.         return 0;
  7. }
复制代码


Snipaste_2025-08-18_19-53-38.png
用有公开文档的RtlGetVersion不好吗?
RtlGetVersion 需要 >= NT5.0
RtlGetNtVersionNumbers 需要 >= NT5.1

点评

OK! 据说这个函数获取得到的数据是最正确的, 而且它足够简单! 其它函数可能会受"兼容模式"影响而无法获取到当前系统的真正版本号  详情 回复 发表于 2025-8-18 20:03
回复

使用道具 举报

发表于 2025-8-18 20:03:15 | 显示全部楼层
wintoflash 发表于 2025-8-18 19:55
取低16位就可以了 (&= 0xFF)

OK! 据说这个函数获取得到的数据是最正确的, 而且它足够简单!
其它函数可能会受"兼容模式"影响而无法获取到当前系统的真正版本号

点评

我在XP上安装One Core API之后换用不同兼容性,测试 RtlGetVersion 都是正确的。 受影响的应该是 GetVersionEx / GetVersion / VerifyVersionInfo。  详情 回复 发表于 2025-8-18 20:18
回复

使用道具 举报

 楼主| 发表于 2025-8-18 20:18:12 | 显示全部楼层
Bluebells 发表于 2025-8-18 20:03
OK! 据说这个函数获取得到的数据是最正确的, 而且它足够简单!
其它函数可能会受"兼容模式"影响而无法获 ...

我在XP上安装One Core API之后换用不同兼容性,测试 RtlGetVersion 都是正确的。
受影响的应该是 GetVersionEx / GetVersion / VerifyVersionInfo。

点评

哦, 原来是这样啊  详情 回复 发表于 2025-8-18 20:39
回复

使用道具 举报

发表于 2025-8-18 20:39:26 | 显示全部楼层
wintoflash 发表于 2025-8-18 20:18
我在XP上安装One Core API之后换用不同兼容性,测试 RtlGetVersion 都是正确的。
受影响的应该是 GetVer ...

哦, 原来是这样啊
回复

使用道具 举报

发表于 2025-8-18 21:14:08 | 显示全部楼层
牛逼克拉斯。膜拜ing。。
回复

使用道具 举报

发表于 2025-8-19 09:32:17 | 显示全部楼层
感谢分享!
回复

使用道具 举报

发表于 2025-9-3 04:41:40 | 显示全部楼层
本帖最后由 2012jiashanni 于 2025-9-3 04:44 编辑

1、在英特尔酷睿Ultra 9 285K+华硕Z890 Pro上,GUI显示的处理器温度与aida64的接近,在运行GUI后,aida64显示处理器温度上升十几度,而命令行--CPU获取的温度则与GUI/aida64显示的温度相差较大
2、能否单独出一个命令行或api获取处理器 主板 显卡温度

点评

现在提供nwinfo动态库(dll)了,其他程序可以直接调DLL了。 目前导出函数还没弄全,也暂时不保证API稳定。 除了cdi_*函数是__stdcall调用约定以外其他函数都是__cdecl调用约定。 测试程序:  详情 回复 发表于 2025-12-6 09:38
使用命令行程序获得瞬时信息(如CPU使用率,当前内存,温度,功耗等)都是不准确的,因为执行程序的瞬间,系统会做很多额外操作,导致CPU使用率会比通常更高。 CPU 温度分为 CoreTemp(核心温度,每个核  详情 回复 发表于 2025-9-3 10:09
回复

使用道具 举报

 楼主| 发表于 2025-9-3 10:09:02 | 显示全部楼层
2012jiashanni 发表于 2025-9-3 04:41
1、在英特尔酷睿Ultra 9 285K+华硕Z890 Pro上,GUI显示的处理器温度与aida64的接近,在运行GUI后,aida64显 ...
而命令行--CPU获取的温度则与GUI/aida64显示的温度相差较大


使用命令行程序获得瞬时信息(如CPU使用率,当前内存,温度,功耗等)都是不准确的,因为执行程序的瞬间,系统会做很多额外操作,导致CPU使用率会比通常更高。

GUI显示的处理器温度与aida64的接近,在运行GUI后,aida64显示处理器温度上升十几度


CPU 温度分为 CoreTemp(核心温度,每个核心不一样)和 PackageTemp (封装温度)。AIDA64 读的是 CoreTemp,且可能与 gnwinfo 不在同一个核上。gnwinfo 优先读取 PackageTemp,不支持的情况下再读 CoreTemp。

能否单独出一个命令行或api获取处理器 主板 显卡温度


同上,使用命令行是不能获得较准确数据的。
目前nwinfo只支持获取CPU温度,主板温度需要实现各种SuperIO/EC的支持,目前还在研究。DDR5 DIMM 温度需要实现各种SMBus驱动,这个以前写得不好,所以废弃了正在重写。至于显卡,我只知道AMD集显的获取方法,其他的不知道怎么获取。
如果你不排斥使用.NET的话,可以使用 https://github.com/LibreHardwareMonitor/LibreHardwareMonitor。它支持各种设备的温度传感器,也提供了dll。
nwinfo 中只提供 libnw 静态库,可以初始化后每秒调用NWL_GetCpuMsr获取CPU温度电压功耗,我不知道非C系程序能不能用。

点评

请问下 --smbios 获取CPU插槽信息,在微星 B760M BOMBER WIFI (MS-7D90) +13代 英特尔(R) 酷睿(TM) i5-13600KF上,获取的信息是 U3E1 这准确吗  详情 回复 发表于 2025-9-3 16:57
回复

使用道具 举报

发表于 2025-9-3 16:57:24 | 显示全部楼层
wintoflash 发表于 2025-9-3 10:09
使用命令行程序获得瞬时信息(如CPU使用率,当前内存,温度,功耗等)都是不准确的,因为执行程序的 ...

请问下 --smbios 获取CPU插槽信息,在微星 B760M BOMBER WIFI (MS-7D90) +13代 英特尔(R) 酷睿(TM) i5-13600KF上,获取的信息是 U3E1 这准确吗

点评

这个信息是主板提供的,属于字符串类型。 U3E1是笔记本用的插槽,所以主板提供的信息有误。 你可以用dmidecode -t 4看一下结果是否一样。 [attachimg]563891[/attachimg]  详情 回复 发表于 2025-9-3 19:18
回复

使用道具 举报

发表于 2025-9-3 17:07:39 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2025-9-3 19:18:59 | 显示全部楼层
本帖最后由 wintoflash 于 2025-9-3 19:20 编辑
2012jiashanni 发表于 2025-9-3 16:57
请问下 --smbios 获取CPU插槽信息,在微星 B760M BOMBER WIFI (MS-7D90) +13代 英特尔(R) 酷睿(TM) i5-13 ...

这个信息是主板提供的,属于字符串类型。
U3E1是笔记本用的插槽,所以主板提供的信息有误。
你可以用dmidecode -t 4看一下结果是否一样。
Snipaste_2025-09-03_19-16-04.png
Snipaste_2025-09-03_19-20-08.png
回复

使用道具 举报

 楼主| 发表于 2025-9-4 11:16:12 | 显示全部楼层
20250904 更新 v1.4.3
  • 支持获取兆芯/VIA CPU 温度
  • 更新兆芯/Intel CPU 数据库
  • 重构 CPU MSR 读取功能,支持 Ryzen SMU
  • 改进 CPU 实时频率获取方式,默认不使用PDH



回复

使用道具 举报

发表于 2025-9-4 12:16:05 | 显示全部楼层
多谢更新分享。
回复

使用道具 举报

发表于 2025-9-9 15:10:49 | 显示全部楼层
感谢分享  
回复

使用道具 举报

发表于 2025-9-10 16:20:02 | 显示全部楼层
谢谢大佬
回复

使用道具 举报

 楼主| 发表于 2025-10-4 18:53:24 | 显示全部楼层
20251004更新 v1.4.4
GUI支持Ctrl+C复制鼠标指向的信息
支持更多Ryzen处理器的SMU
获取Windows Code Integrity信息
支持获取AMD Zen5 CPU倍频
添加PawnIO驱动支持(下载nwinfo_pawnio.zip)
说明:
本软件会按顺序尝试加载PawnIO, HwRwDrv和WinRing0驱动。
PawnIO驱动为安全版本,但是仅支持x86_64,不支持获取部分数据。
HwRwDrv驱动可能会被识别为病毒或被反作弊软件禁止。
WinRing0驱动处于微软黑名单中,会被识别为病毒,在Win11上不可用。
回复

使用道具 举报

发表于 2025-10-5 09:08:18 | 显示全部楼层
多谢更新分享。。。
回复

使用道具 举报

发表于 2025-10-5 09:24:05 | 显示全部楼层
驚為天人的神作,看了讓人熱血沸騰,感謝分享。
回复

使用道具 举报

发表于 2025-10-9 18:33:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2025-10-10 08:01:20 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2025-10-13 00:46:40 | 显示全部楼层
请问 【PawnIO驱动为安全版本,但是不支持获取部分数据】是不支持哪些数据,AMDFamily0F.bin 这几个文件的作用,谢谢

点评

这个问题解释起来比较复杂。 微软为了防止未经允许的提权(防病毒)或者游戏为了防止外挂,会禁止用户态程序随意读写MSR寄存器或物理内存。 因此,WinRing0/HwRwDrv/老版本CPU-Z驱动/AsIO这一类的驱动,已经或者  详情 回复 发表于 2025-10-13 09:17
回复

使用道具 举报

发表于 2025-10-13 09:11:23 | 显示全部楼层
神奇的软件
回复

使用道具 举报

 楼主| 发表于 2025-10-13 09:17:15 | 显示全部楼层
2012jiashanni 发表于 2025-10-13 00:46
请问 【PawnIO驱动为安全版本,但是不支持获取部分数据】是不支持哪些数据,AMDFamily0F.bin 这几个文件的 ...

这个问题解释起来比较复杂。

微软为了防止未经允许的提权(防病毒)或者游戏为了防止外挂,会禁止用户态程序随意读写MSR寄存器或物理内存。
因此,WinRing0/HwRwDrv/老版本CPU-Z驱动/AsIO这一类的驱动,已经或者将来会被拉黑。
但是,实现各种硬件传感器检测(CPU/SPD等)逻辑是很复杂的,把它全部封装到驱动里面,直接由驱动返回传感器数据是很难实现的,也会导致更多漏洞。对非商业软件来说,每次增加新硬件支持都花钱找微软签名也是不可接受的。
PawnIO这个驱动内置了一个脚本语言解析器,可以解析你传入的脚本,执行任意硬件读写操作。
为了满足微软的要求,它提供了两个版本。一个是有微软签名的版本,它只能执行有PawnIO驱动开发者签名的脚本。一个是未签名版本,它需要你开测试模式才能使用,可以执行任意未签名脚本。
PawnIO驱动开发者@namazso就在github上,可以免费为你的脚本签名,但前提是通过他的审核。越长、越复杂的代码越有可能出现问题,因此要把对不同设备操作的逻辑放在不同的脚本里面,以便审核和将来拉黑。
IntelMSR.bin 是读取Intel CPU MSR用的,目前支持获取温度/电压/功耗/功耗墙/频率,不支持获取倍频。
AMDFamily0F.bin 是读取AMD K8温度/MSR用的,目前只实装了读取电压。
AMDFamily10.bin 是读取AMD K10温度/MSR用的,目前只实装了读取电压/频率。
AMDFamily17.bin 是读取AMD ZenSMN/MSR用的,目前支持温度/电压/频率/功耗。
RyzenSMU.bin 是读取AMD锐龙SMU用的,用于获取功耗墙/温度,支持的型号有限。
以上所述的"支持",指的是理论上支持。AMD每代都改设计,导致难以支持AMD的所有型号。
======
另外,PawnIO驱动为GPL协议,PawnIO官方提供的脚本为LGPL协议,如果直接集成到软件内部,会导致软件被传染为GPL协议,因此只能外置。如果你想商用且内置,需要向PawnIO开发者购买许可。

驱动源码:https://github.com/namazso/PawnIO
脚本源码:https://github.com/namazso/PawnIO.Modules

点评

--GPU的获取信息内容能不能不改,我需要获取显卡ID、名称、驱动版本,谢谢  详情 回复 发表于 2025-10-13 11:39
回复

使用道具 举报

发表于 2025-10-13 10:00:40 | 显示全部楼层
学习学习,感谢分享
回复

使用道具 举报

发表于 2025-10-13 11:39:00 | 显示全部楼层
wintoflash 发表于 2025-10-13 09:17
这个问题解释起来比较复杂。

微软为了防止未经允许的提权(防病毒)或者游戏为了防止外挂,会禁止用户 ...

--GPU的获取信息内容能不能不改,我需要获取显卡ID、名称、驱动版本,谢谢

点评

v1.5.0重写了GPU相关功能。 现在统一用 --pci=03 来获得PCI ID/驱动相关内容。 用 --gpu 从 GPU驱动获得显卡传感器信息 目前暂时只支持 Intel/AMD/nVidia 显卡,功能还没做完,也没有充分测试。  详情 回复 发表于 2025-10-13 13:25
回复

使用道具 举报

 楼主| 发表于 2025-10-13 13:25:23 | 显示全部楼层
本帖最后由 wintoflash 于 2025-10-13 13:26 编辑
2012jiashanni 发表于 2025-10-13 11:39
--GPU的获取信息内容能不能不改,我需要获取显卡ID、名称、驱动版本,谢谢

v1.5.0重写了GPU相关功能。
现在统一用 --pci=03 来获得PCI ID/驱动相关内容。https://github.com/a1ive/nwinfo/releases/tag/latest
  1. nwinfo --pci=03
  2. ---
  3. NWinfo:
  4.     Build Time: 'Oct  8 2025 11:14:24'
  5.     libnw: 'v1.5.0.0'
  6.     ...
  7.     PCI:
  8.         - Device:
  9.             HWID: 'PCI\VEN_8086&DEV_4680&SUBSYS_88821043&REV_0C'
  10.             Vendor ID: '8086'
  11.             Device ID: '4680'
  12.             Vendor: 'Intel'
  13.             Device: 'AlderLake-S GT1'
  14.             Description: 'Intel(R) UHD Graphics 770'
  15.             Driver: 'Intel(R) UHD Graphics 770'
  16.             Driver Version: '32.0.101.6987'
  17.             Driver Provider: 'Intel Corporation'
  18.             Driver Date: '2025-07-29'
  19.             Inf Path: 'oem51.inf'
  20.             Inf Section: 'iADLSD_w11_DS'
  21.             Location: 'Bus 0, Device 2, Function 0'
  22.             Class Code: '030000'
  23.             Class: 'Display controller'
  24.             Subclass: 'VGA compatible controller'
  25.             Prog IF: 'VGA controller'
  26.         - Device:
  27.             HWID: 'PCI\VEN_8086&DEV_4908&SUBSYS_D0101EF7&REV_01'
  28.             Vendor ID: '8086'
  29.             Device ID: '4908'
  30.             Vendor: 'Intel'
  31.             Device: 'DG1 [Iris Xe Graphics]'
  32.             Description: 'Intel(R) Iris(R) Xe Graphics'
  33.             Driver: 'Intel(R) Iris(R) Xe Graphics'
  34.             Driver Version: '32.0.101.6790'
  35.             Driver Provider: 'Intel Corporation'
  36.             Driver Date: '2025-04-28'
  37.             Inf Path: 'oem58.inf'
  38.             Inf Section: 'DG1_Client_FWU_wNext'
  39.             Location: 'Bus 3, Device 0, Function 0'
  40.             Class Code: '030000'
  41.             Class: 'Display controller'
  42.             Subclass: 'VGA compatible controller'
  43.             Prog IF: 'VGA controller'
复制代码

用 --gpu 从 GPU驱动获得显卡传感器信息
  1. nwinfo --gpu
  2. ---
  3. NWinfo:
  4.     Build Time: 'Oct  8 2025 11:14:24'
  5.     libnw: 'v1.5.0.0'
  6.     ...
  7.     GPU:
  8.         - Device:
  9.             Device: 'Intel(R) UHD Graphics 770'
  10.             Location: 'Bus 0, Device 2, Function 0'
  11.             GPU Utilization: '0.9%'
  12.             Temperature (C): 0.0
  13.             Total Memory: 33976709120
  14.             Free Memory: 32991043584
  15.             Memory Usage: '3%'
  16.             Power (W): 26.9
  17.             Frequency (MHz): 700.0
  18.             Voltage (V): 0.32
  19.             Fan Speed (RPM): 0
  20.         - Device:
  21.             Device: 'Intel(R) Iris(R) Xe Graphics'
  22.             Location: 'Bus 3, Device 0, Function 0'
  23.             GPU Utilization: '0.8%'
  24.             Temperature (C): 37.0
  25.             Total Memory: 4188012544
  26.             Free Memory: 3841662976
  27.             Memory Usage: '9%'
  28.             Power (W): 5.7
  29.             Frequency (MHz): 300.0
  30.             Voltage (V): 0.74
  31.             Fan Speed (RPM): 2471
复制代码

目前暂时只支持 Intel/AMD/nVidia 显卡,功能还没做完,也没有充分测试。

点评

你好。 nwinfo是否可以支持类似wimc命令的table格式输出,就是在一行通过分割符分开显示。这样好通过for命令取数 比如 wmic diskdrive get DeviceID, Model /format:table 可以通过get选择输出哪些列。  详情 回复 发表于 2025-10-24 14:35
太棒了,我之前一直是 --PCI=03获取ID再--GPU获取驱动版本,现在只需--PCI=03就好了,谢谢大佬  详情 回复 发表于 2025-10-13 14:31
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-4 08:06

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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