solucion responder recupero puede pantalla modo instalar impresion error desactivar depurador dejo controlador actualizar 0x0000007b windows-7 service kernel driver reboot

windows 7 - responder - ¿Es posible descargar un controlador de kernel sin un reinicio?



solucion error 0x0000007b windows 7 (4)

Si desea poder descargar su controlador, debe configurar una función que básicamente se ejecute cada vez que se descargue el controlador: lo más probable es que ponga código que libere los búferes asignados y cualquier otro recurso que pueda estar "vivo" durante el ciclo de vida del del conductor. Aquí hay un código de ejemplo:

VOID Unload(IN PDRIVER_OBJECT pDriverObject) { //do whatever you like here //this deletes the device IoDeleteDevice( pDriverObject->DeviceObject); return; } NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING regPath) { //initialize your driver and the major function array //set the unload function pDriverObject->DriverUnload = &Unload; }

Estoy jugando con uno de los ejemplos de controladores de kernel en Win7 DDK. Puedo modificar compilar y construir mi archivo * .sys. Puedo instalarlo también con su INF (usando el administrador de dispositivos o devcon) o usando directamente el administrador de control de servicios. Sin embargo, cuando hago el siguiente cambio y genero un archivo * .sys actualizado, parece que surge un conflicto entre este nuevo archivo y mi controlador ahora detenido (he intentado usar Servcie Control Manager ''stop'' y ''delete service'', etc.). Si reinicio, puedo instalar el nuevo controlador y ejecutarlo bien. De forma similar, si elijo desinstalar en el Administrador de dispositivos, Windows me solicita que reinicie.

Entonces, ¿cómo se puede probar fácilmente modificaciones incrementales a un controlador kernal fácilmente? Gracias



Intente compilar, firmar y cargar este código:

#include <ntddk.h> VOID OnUnload( IN PDRIVER_OBJECT driverObjectA ) { DbgPrint("Unload/n"); } NTSTATUS DriverEntry( PDRIVER_OBJECT driverObjectA, PUNICODE_STRING RegistryPath ){ DbgPrint("DriverEntry/n"); driverObjectA->DriverUnload = OnUnload; return STATUS_SUCCESS; }

Luego descargue DebugView , descomprímalo, ejecútelo como administrador y luego "Capture Kernel" debajo de la opción de menú "Capturar". Descargue, descomprima y ejecute el Cargador de controladores OSR , registre el controlador, el "Servicio de inicio". Observará un mensaje de registro "DriverEntry" en DbgView. Ahora en el cargador del controlador OSR, "Detener servicio" y observe un mensaje de descarga. Espero que eso te ayude.


Sí. sc stop <driver name> debería detener su controlador. Si su controlador está asociado con un determinado devnode PnP, debe descargarse después de eliminar el devnode.