4


0

Windowsビデオドライバーを強制的に再読み込みします。 それは可能ですか?

一部のドライバーは、レジストリに書き込まれたパラメーターを使用して、起動時に読み込まれるときに自身を構成します。 これらの値を変更して再起動できますが、ドライバーを強制的に再ロードして、再起動せずに変更を有効にすることができるかどうかを知りたいです。

具体的には、ビデオドライバー(nvidia)について説明しています。

私はどこかで読んだ、pINvoke()を介して呼び出すこと [User32.ll]::ChangeDisplaySettings() with a 640x480x8bits 解像度(これは非常に低いため、最新のドライバーではサポートされません)は、ウィンドウに「標準VGAドライバー」をロードさせ、現在の解像度で別の呼び出しを行うと、nvidiaドライバーが再度ロードされます。

これはうまくいきません。 少なくともWindows 7では、低解像度が「サポートされている」と表示されない場合でも、システムは画面の中央の小さな四角に画面を縮小し、nvidiaドライバーをアンロードせずに低解像度を表示します。

では、.NET / Win32 API、再起動するサービス、またはビデオドライバーのリロードを強制する方法はありますか?

(デバイスマネージャーからできるように)プログラムでデバイスを無効にして、再び有効にするのでしょうか?

何か案が?

どうもありがとう。

2 Answer


2


やっとやった。 デバイスを無効化/再有効化するというアイデアが実際に機能しました。

もちろん、問題は、デバイスマネージャーからビデオカードデバイスを無効にすることは、それを再度有効にできない可能性があるため、素晴らしいアイデアではないということです。

プログラムで実行すると、それほど危険ではないように見えます。 理論的には、アプリがデバイスを正常に無効にしたとしても、再度有効にしても問題はありません。

ジャスティングラントのおかげで、https://stackoverflow.com/questions/1438371/win32-api-function-to-programatically-enable-disable-device [こちら]、stackoverflowでこれを実現する* fantastic *クラスが見つかりました。

ビデオデバイスが再び有効になると、ビデオドライバが自動的に再読み込みします。

誰かに役立つことを願っています。


1


ドライバーに依存します。 停止と再起動をサポートするように書かれている場合は可能です。そうでなければ、あなたは運が悪い。 サービスの名前が見つかったら、「sc stop [name]」の後に「sc start [name]」を実行できます。 Win32に相当するのはOpenService / ControlServiceです。