.png)
Necesito restablecer el controlador de video en una máquina con Windows 10 que ejecuta ARM32. ¡El antiguo atajo común (CTRL + SHIFT + WIN + B) funciona! ¡Sí! y produce un solo pitido como se esperaba, pero el teclado no siempre estará presente, por lo que necesito hacerlo a través del software.
Ya probado:
- Envío de las claves a Windows usando Powershell (dos métodos)
- Envío de claves a Windows mediante la aplicación Visual C++
- Utilidad de la aplicación Sendkeys que envía la combinación de teclas.
- ¿Devcon? Lee abajo
- PnpUtil (leer a continuación)
Todo eso funciona en Windows (probado, sí), pero no funciona en Windows ARM32 y no recibo mensajes de error. Es posible que las dlls o cualquier biblioteca en Windows ARM no permitan estas funciones, después de todo lo que encuentro en otros hilos de desarrollo, no tiene la funcionalidad completa y algunos lugares (oficiales) incluso mencionan cosas experimentales, después de todo, Windows 10. (32 bits) nunca se lanzó oficialmente, solo Windows x64 ARM.
He probado métodos de diferenciación, pero todos me obligan a descargar gigas de datos y bibliotecas para crear un pequeño archivo exe que al final exige 1, 2, 3 archivos adicionales para el tiempo de ejecución que no se encuentran en ninguna parte, y cuando se encuentran... fuera de horario: no funciona.
Devcon.exe: esta utilidad de línea de comando resolvería mi problema pero no puedo encontrarla. Necesito que sea para ARM32 y no puedo encontrar un solo enlace. Encontré el código fuente, pero después de horas de ajustar VS++ y los tutoriales crípticos que encontré, siempre recibo algún error nuevo cada vez que intento compilarlo y compilarlo para ARM32. El problema está relacionado con el kit de controladores de Windows y encontré diversos hilos en la web de personas que tenían problemas para compilarlo. Se menciona que está contenido en el WDK, pero después de descargar los conjuntos de diferencias, no pude encontrarlo allí. Hay algunos enlaces a x86 y x64 pero no a ARM32, la documentación oficial de Microsoft indica que la forma de obtenerlo es instalando WDK, Visual Studio y Windows SDK para escritorio, pero después de hacer esto... (horas de descarga, instalación y buscando) no se encontraba en ninguna parte de mi computadora.
PnPUtil: la opción reiniciar-dispositivo debería funcionar, está documentada y está en todos los Windows desde 2004 (según la documentación de MS), pero en realidad, mientras el .exe está ahí (en Windows), no tiene esta característica (reiniciar-dispositivo ) por lo que no funciona para mis propósitos.
Cualquier ayuda será apreciada.
Respuesta1
Estoy actualizando esta pregunta a medida que encontré la respuesta, así que espero que también sea útil para otros. Es fácil "restablecer" el controlador/pantalla de video usando Powershell siempre que tenga los permisos y privilegios adecuados. ¿Cómo? Por aquí:
$d = Get-PnpDevice| where {$_.friendlyname -like "NAME-OF-THE-DEVICE*"};
$d | Disable-PnpDevice -Confirm:$false;
$d | Enable-PnpDevice -Confirm:$false
Esto deshabilitará el dispositivo y luego lo habilitará nuevamente, produciendo un reinicio completo. Dependiendo de su computadora, la pantalla puede parpadear (o no) y es posible que se active el sonido de "nuevo hardware detectado".
¿Por qué necesitaba esto? Debido a que Surface RT1 y Surface RT2 actualizados a Windows 10 tienen un problema al desactivar el control de brillo después de unos minutos de estar encendidos, es un error de una versión oficial inédita de Windows. Lo que describí aquí funciona y permite controlar el brillo perfectamente. Esto se puede lograr deshabilitando/habilitando el controlador de video, o solo la pantalla (dispositivo), como se explicó, uno provocará un parpadeo y el otro no. Dependiendo del caso, es posible que primero deba elevar los privilegios en su secuencia de comandos de PowerShell.
También encontré otras formas de lograr esto mediante código (C#) o sendkeys y otras bibliotecas usando C++, pero fue un poco complicado. El script de Powershell lo resolvió fácilmente, luego agregué una tarea programada personalizada que se activará al despertar.
Eso es todo.