从 API 查询 NVIDIA 驱动信息

在开发 nvwupd 的途中获得的新知识

老黄提供了一套公开的 API 用于驱动下载页面,可以直接调用这些 API 来获取驱动信息。

nvwupd

nvwupd 是在 Windows 平台下使用的,因为不装 GeForce Experience 的情况下不能快速更新驱动,不能查找驱动更新,只能自己去 nv drv 网站去找最新的驱动版本然后和自己的对比。。。

明明 CS2 都能在驱动过期时候提醒,懒狗v社都做了,似乎也是通过 api 获取的,不然就要让员工手动维护一份GPU核心和最新驱动的对照表了。

有的显卡驱动停更了,比如10系往前,还能玩 CS2 但是不能用最新的驱动,这时候不能爆出来更新驱动提示

nvwupd 是用 C# & .NET -> WinUI 3写的,大量vibe coding,不过模型性能高,再加上小规模,也没有多大问题
现阶段(26.01.31)是还在高速开发,现有问题是驱动下载好exe开不起来,也许是之前下一半搞错了。现在的响应流直接被存入到文件中,不经过校验完整性、哈希之后再存入文件(或者一个.downloading再重命名),导致了有时候就下了半个文件,PE头还正确有的,然后就能启动但是直接crash。
然后还在计划加入一个断点续传、终止下载的按钮,还有在后台作为服务定期检查更新,使用 Windows 通知发更新通知。

从 API 获取核心信息

翻了一堆nv的blog,翻到这些,够用了。

https://www.nvidia.com/Download/API/

请求 作用
lookupValueSearch.aspx?TypeID=2 获取产品系列列表(psid)
lookupValueSearch.aspx?TypeID=3 获取具体产品列表(pfid)
lookupValueSearch.aspx?TypeID=4 获取操作系统列表(osid)
processFind.aspx 根据参数查询驱动列表

接下来的内容放到 nvwupd docs 里了,开仓库能看

获取操作系统的 osid

[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12
(Invoke-RestMethod -Uri "https://www.nvidia.com/Download/API/lookupValueSearch.aspx?TypeID=4" -Headers @{"User-Agent"="Mozilla/5.0"}).LookupValueSearch.LookupValues.LookupValue | ? { $_.Name -match '^Windows' }

返回结果:

Code      Name                      Value
----      ----                      -----
10.0      Windows 10 32-bit         56
10.0      Windows 10 64-bit         57
10.0      Windows 11                135
6.1       Windows 7 32-bit          18
6.1       Windows 7 64-bit          19
6.3       Windows 8.1 32-bit        40
6.3       Windows 8.1 64-bit        41
6.2       Windows 8 32-bit          27
6.2       Windows 8 64-bit          28
6.0       Windows Vista 32-bit      9
6.0       Windows Vista 64-bit      10
5.1       Windows XP                6
5.2       Windows XP 64-bit         7
nt-6.1    Windows Server 2008       16
6.1-64    Windows Server 2008 x64   17
6.1-64-R2 Windows Server 2008 R2 64 21
6.2-1     Windows Server 2012       32
6.2-R2    Windows Server 2012 R2 64 44
10.0-NT   Windows Server 2016       74
10.0-NT   Windows Server 2019       119
10.0-NT   Windows Server 2022       134
10.0-NT   Windows Server 2025       153
5.2       Windows Server 2003       15
5.2       Windows Server 2003 x64   8
5.0       Windows 2000              5
4.9       Windows ME                4
4.1       Windows 98                3
4.0       Windows NT4               2
4.0       Windows 95                1

真是 Windows 全系都有。Windows 11 为 135

获取 psid

比如,40系

[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12
(Invoke-RestMethod -Uri "https://www.nvidia.com/Download/API/lookupValueSearch.aspx?TypeID=2" -Headers @{"User-Agent"="Mozilla/5.0"}).LookupValueSearch.LookupValues.LookupValue | ? { $_.Name -match 'GeForce' -and $_.Name -match 'RTX\s*40' }

返回结果:

RequiresProduct : True
ParentID        : 1
IsSelectLess    : False
Name            : GeForce RTX 40 Series (Notebooks)
Value           : 129

RequiresProduct : True
ParentID        : 1
IsSelectLess    : False
Name            : GeForce RTX 40 Series
Value           : 127

因此40系移动端的 psid129,桌面端为 127

获取 pfid

示例是 GeForce RTX 4060 Laptop GPU

注意:笔记本 GPU 的名称字符串通常没有 NVIDIA 前缀,但台式机版本有

[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12
(Invoke-RestMethod -Uri "https://www.nvidia.com/Download/API/lookupValueSearch.aspx?TypeID=3" -Headers @{"User-Agent"="Mozilla/5.0"}).LookupValueSearch.LookupValues.LookupValue | ? { $_.Name -eq "GeForce RTX 4060 Laptop GPU" }

返回结果:

ParentID Name                        Value
-------- ----                        -----
129      GeForce RTX 4060 Laptop GPU 1007

构造请求

现在这种情况就是在 Windows 11 + 4060 Laptop 获取更新,我们知道了:

  • psid = 129
  • pfid = 1007
  • osid = 135

然后就使用processFind了,构造完成就是 https://www.nvidia.com/Download/processFind.aspx?dtcid=1&lang=zh-hans&lid=1&osid=135&pfid=1007&psid=129,访问即可查询到可用的驱动列表。


从 API 查询 NVIDIA 驱动信息
https://blog.zlicdt.top/2026/01/31/nvwupd-log/
作者
zlicdt
发布于
2026年1月31日
许可协议