4

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

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

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

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

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

おそらく、プログラムでデバイスを無効にし (デバイス マネージャーからできるように)、再度有効にしますか?

何か案が?

どうもありがとう。

4

2 に答える 2

2

ついにやりました。デバイスの無効化/再有効化のアイデアに従って、実際に機能しました。

もちろん問題は、デバイス マネージャーからビデオ カード デバイスを無効にすることは、あまり良い考えではないということです。

ただし、プログラムで実行しても、それほど安全ではないようです。理論的には、アプリがデバイスを正常に無効にしていると仮定すると、再度有効にしても問題は発生しません。

Justin Grantに感謝します

ビデオ デバイスが再度有効になると、ビデオ ドライバが再ロードされます。

それが誰かを助けることを願っています。

于 2010-03-23T19:48:31.523 に答える
1

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

于 2010-03-23T18:30:42.280 に答える