2010-03-23 3 views
4

Certains pilotes utilisent des paramètres écrits dans le registre pour se configurer eux-mêmes lorsqu'ils sont chargés au démarrage. Je peux modifier ces valeurs puis redémarrer, mais j'aimerais savoir s'il est possible de forcer le rechargement du pilote, en rendant les changements effectifs sans redémarrer. En particulier, je parle du pilote vidéo (NVIDIA).Force le rechargement du pilote vidéo Windows. Est-ce possible?

J'ai lu quelque part, que l'appel par pINvoke() [User32.ll] :: ChangeDisplaySettings() avec une résolution 640x480x8bits, (qui est si faible qu'il ne devrait pas être pris en charge par un pilote moderne) va forcer Windows à charger le "pilote VGA standard", et en effectuant un autre appel avec la résolution actuelle charge à nouveau le pilote nvidia.

Cela ne fonctionne pas cependant. Au moins sous Windows 7, même si la basse résolution n'est pas affichée comme "prise en charge", le système réduit l'écran à un petit carré au centre de l'écran, montrant la basse résolution sans décharger le pilote nvidia.

Alors, y a-t-il une API .NET/Win32, un service de redémarrage, ou de toute façon pour forcer un rechargement de pilote vidéo?

Vous pouvez peut-être désactiver le périphérique (comme vous pouvez le faire depuis le Gestionnaire de périphériques) et le réactiver à nouveau?

Une idée?

Merci beaucoup.

Répondre

1

Cela dépend du pilote. S'il a été écrit pour supporter l'arrêt et le redémarrage alors c'est possible; Sinon, vous n'avez pas de chance. Si vous trouvez le nom du service, vous pouvez faire "sc stop [nom]" suivi de "sc start [nom]". L'équivalent Win32 est OpenService/ControlService.

2

Je l'ai enfin fait. Suite à l'idée de désactiver/ré-activer l'appareil réellement travaillé.

Bien sûr, le problème est que la désactivation de votre périphérique de carte vidéo à partir du Gestionnaire de périphériques ne peut pas être une bonne idée, car vous ne pouvez peut-être pas le réactiver.

Le faire par programmation ne semble pas si dangereux. En théorie, si l'application a désactivé le périphérique, la réactiver ne devrait poser aucun problème.

J'ai trouvé here, dans stackoverflow un fantastique classe pour accomplir cela, grâce à Justin Grant.

Le pilote vidéo se recharge automatiquement lorsque le périphérique vidéo est réactivé.

Espérons que cela aide quelqu'un.

Questions connexes