强制重新加载 Windows 视频驱动程序。有可能吗?

Posted

技术标签:

【中文标题】强制重新加载 Windows 视频驱动程序。有可能吗?【英文标题】:Force windows video driver reload. Is it possible at all? 【发布时间】:2011-01-30 19:41:44 【问题描述】:

某些驱动程序在启动时加载时使用注册表中写入的参数来配置自身。 我可以修改这些值然后重新启动,但我想知道是否可以强制重新加载驱动程序,使更改生效而无需重新启动。

具体来说,我说的是视频驱动程序(nvidia)。

我在某处读到,通过 pINvoke() [User32.ll]::ChangeDisplaySettings() 以 640x480x8 位的分辨率调用(它太低以至于现代驱动程序不应该支持)将强制 Windows 加载“Standard VGA driver”,以当前分辨率再次调用将再次加载 nvidia 驱动程序。

但这不起作用。至少在 Windows 7 中,即使低分辨率不显示为“支持”,系统也会将屏幕缩小到屏幕中心的一个小方块,在不卸载 nvidia 驱动程序的情况下显示低分辨率。

那么,是否有任何 .NET/Win32 API、要重新启动的服务或任何强制重新加载视频驱动程序的方法?

也许以编程方式禁用设备(您可以通过设备管理器执行此操作)并再次重新启用它?

有什么想法吗?

非常感谢。

【问题讨论】:

【参考方案1】:

我终于做到了。遵循禁用/重新启用设备的想法确实有效。

当然,问题是从设备管理器中禁用您的视频卡设备并不是一个好主意,因为您可能无法再次重新启用它。

以编程方式进行,但看起来并不那么不安全。理论上,假设应用程序已成功禁用设备,重新启用它应该不会造成问题。

我在 *** 中找到了 here 一个 fantastic 类来完成此任务,感谢 Justin Grant。

视频驱动程序会在视频设备重新启用时自行重新加载。

希望对某人有所帮助。

【讨论】:

【参考方案2】:

这取决于驱动程序。如果它是为支持停止和重新启动而编写的,那么它是可能的;否则,你就不走运了。如果您找到服务的名称,您可以执行“sc stop [name]”,然后执行“sc start [name]”。 Win32 等价物是 OpenService/ControlService。

【讨论】:

以上是关于强制重新加载 Windows 视频驱动程序。有可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

强制浏览器每次重新加载小程序

如何强制 html5 视频完全加载?

IIS Windows Server 2012 中的 Blazor 问题 - “发生错误。此应用程序在重新加载之前可能不再响应。”

Chrome浏览器如何强制刷新

无法强制 Web 服务器从磁盘重新加载图像

当用户再次导航返回和前进时强制刷新/重新加载