El error “Windows no puede detener el dispositivo de volumen genérico…” Handles, Process Explorer y su solución

LogoSysinternals

Hola a todos,

Hoy quiero compartirles un artículo un poco más corto pero que con ayuda de Process Explorer creo que nos puede ayudar en muchas ocasiones para solucionar el error típico que se presenta.

El problema

Cuando estamos trabajando con archivos dentro de un dispositivo (La mayoría de veces ocurre en este escenario) o bien con un archivo que está en el sistema operativo al tratar bien sea de expulsar el dispositivo, ó borrar el archivo local podremos tener un error similar a este:

Capture

Capture1

“Windows no puede detener el dispositivo de volumen genérico porque un programa lo está usando. Cierre cualquier programa que pueda estar usando el dispositivo e intente de nuevo más tarde”

“Esta acción no se puede completar porque el archivo está siendo utilizado por otro programa”

*Nota: El mensaje de error puede variar un poco dependiendo de lo que esté bloqueando pero en general indicará que no es posible expulsar o deterner el dispositivo (o eliminar archivo por ejemplo) porque está siendo utilizado.

La causa

Realmente en la mayoría de las ocasiones la causa y la solución son bastante predecibles ya que podemos tener ventanas abiertas o archivos que teníamos dentro del dispositivo, o en el caso de cuando queremos mover o eliminar algun archivo lo teníamos abierto todavía, la solución aquí sencillamente es que cerramos todo.

El cambio está es cuando por lo menos todo lo de nuestra barra de tareas está cerrado y los mensajes continúan.. ¿Qué hacemos? Normalmente expulsar sin terminar el dispositivo del equipo.

Ahora, ¿Cuál es la razón de este error? Pues efectivamente se da porque aplicaciones o en general procesos (Que la instancia representativa de la aplicación) está haciendo uso o se está referenciando a Handles del dispositivo o archivo por lo que no se puede cerrar hasta que desaparezca la utilización de estos Handles.

*Nota: Un Handle (Desde lo que he logrado entender), lo podemos interpretar como un tipo de apuntador que Windows le entrega a los procesos que referencia a un objeto para acceder más rápidamente.

La solución

Como dije, básicamente consiste en encontrar qué está haciendo uso de estos Handles y cerrar la aplicación, pero como obviamente no es una tarea tan fácil a simple vista de los procesos que tenemos abiertos necesitamos una ayuda adicional para encontrarlos y cerrarlos.

La ayuda dentro de la cadena de últimos artículos por supuesto está en Sysinternals pero esta vez me refiero a Process Explorer que, básicamente es un “Súper” Administrador de tareas que al igualmente nos entrega información sobre procesos, y rendimiento en el equipo pero de una forma mucho más completa incluyendo información adicional como Hilos de cada proceso y el poder filtrar DLLs y Handles utilizados.

Process Explorer lo pueden descargar desde aquí:
http://download.sysinternals.com/Files/ProcessExplorer.zip

¿Cómo encuentro y cierro Handles?

Para solucionar el problema, primero ejecutamos Process Explorer, en el menú superior de View nos aseguramos que las vistas sean de Handles yendo a Lower Pane View y seleccionamos Handles

Capture2

 

 

 

 

 

 

 

 

A continuación, clic en el menú Find y seleccionamos Find Handle or Dll…

Capture3

En la ventana de Process Explorer Search es donde debemos buscar por el proceso que queremos borrar o bien por la unidad que queremos cerrar, para este caso el problema lo reproduje tratando de expulsar el dispositivo USB del sistema que tiene la letra asignada “M:”, así que por esta letra es que debería en este caso buscar:

Capture4

*Nota: Si el implicado fuera por ejemplo Microsoft Word, buscaríamos por su proceso ejecutable “Winword.exe”, y así si los implicados son aplicaciones y no unidades; para unidades recomiendo siempre ir por la letra que la distingue.

Hacemos clic en el botón Search y la búsqueda nos arrojará todo lo que esté utilizando Handles de la unidad incluyendo por ejemplo Procesos y Sesiones:

Capture5

*Nota: Para el caso de archivos que no se dejan mover, por lo general sólo aparece un proceso o servicio que esté usando ese Handle, será mucho más fácil todavía Smile

Para ser más exactos en la búsqueda, bastará con hacer clic en uno de los resultados, por ejemplo “M:” y Process Explorer se pondrá sobre el proceso implicado mostrando la lista de Handles en la parte inferior:

Capture5

El paso final es simplemente hacer clic derecho sobre el resultado generado al seleccionar el Handle y desde el menú contextual escoger “Close Handle”:

Capture6

*Nota: Si el resultado (Como en la captura de más arriba) son varios Handles abiertos, debemos ubicarlos todos (Los de la letra M: por ejemplo) y cerrarlos uno por uno.

Una vez cerrados todos, tratamos de copiar el archivo nuevamente o expulsar el dispositivo y ahora el resultado debe ser satisfactorio:

Capture7

Si el problema sigue sucediendo y al hacer la búsqueda encontramos la misma referencia ya podremos saber qué es lo que mantiene el uso el Handle, no siempre es un error puesto que por ejemplo para las Bases de datos es el proceso de “sqlexpress” que corre constantemente, pero sabiendo el causante ya sabremos qué hacer para completar la operación =)

Espero que esto les pueda ser de utilidad, y además estar compartiendo la mayor cantidad de soluciones posibles logradas con esta Suite de herramientas que no tienen igual!

¡Comentarios bienvenidos!

-Checho-

14 comentarios en “El error “Windows no puede detener el dispositivo de volumen genérico…” Handles, Process Explorer y su solución”

  1. Hola,

    La verdad no te podría responder con exactitud esto porque Process Explorer y verias de las herramientas de Sysinternals están con funciones no documentadas, sin embargo en la ayuda del SDK vas a tener varios procedimientos para utilizar los Handles pero en Debugging, ya por .NET o C# si habría que recurrir a documentación, por ejemplo:
    http://www.c-sharpcorner.com/UploadFile/ddutta/EventHandlingInNetUsingCS11092005052726AM/EventHandlingInNetUsingCS.aspx

  2. Está genial el análisis y uso que haces de WinInternals, Muchas felicidades.
    Por cierto, esta clase de «problemas» también se pueden soluciuonar utilizando un programita llamado «Unlocker»

    ¡Saludos desde Mx!

    🙂

  3. Hola, muchas gracias por tu comentario!
    Sobre la herramienta, la había utilizado, pero personalmente creo que la utilidad y el poder de Process Monitor no se compara en este momento con otra herramienta =)

  4. Hola, he probado este programa y al indicarle la unidad de mi disco externo, me da cero resultados. Y el disco sigo sin poder desconectarlo con seguridad, ¿qué puedo hacer?

    Saludos.

  5. Hola Israel,

    Cuando sucede esto es porque alguna cuenta de usuario o proceso del sistema como «System» lo están utilizando, o está ligado al Explorer.exe

    ¿Qué handles tenía abiertos?

  6. Donde lo miro?

    Poniendo C: en find handle me salen muchos.

    En el administrador de windows tengo los siguientes:

    plugin-contanier
    dwm
    explorer
    procexp64
    synthpeh
    hkcmd
    taskhost
    winlogon
    taskmanager
    igfxtray
    igfxpers
    avastui
    csrss
    procexp
    syntphelper

    Gracias de antemano!

  7. ¿Pero por qué estás buscando en la unidad C:?

    Recuerda que esa es la del sistema operativo y con esta si no se puede actuar así.

    Debes poner el nombre de tu unidad que no puedes quitar, por ejemplo la «H:» o «G:».

    Saludos,

  8. Mi problema es que cuando doy a «close Handle» me dice que «Error opening process: controlador no válido» y no se cierra. No hay manera de expulsarlo.

  9. de mucha utilidad, asi podre evitar cometer de nuevo el error que provoco que se me volara la tabla de particion por retirar de forma prematura la usb (afortunadamente la info seguia en la usb, solo que no reconocia el formato :S ) gracias por el aporte

  10. A mi me pasa lo mismo que a Monica y no se como solucionarlo. Me pone Error opening process: controlador no valido.

    Y no se a que te refieres con «selecciona otro handle dentro de la lista de resultados» porque solo tengo 2 y me dan los dos el mismo error.

  11. Gracias Checho por compartir tu conocimiento sobre esta curiosa aplicación que me parece muy interesante, por lo menos para los que estamos hambrientos de conocimiento de aprender más informática y como se ejecutan los procesos internos del sistema (sea el que este sea).

    Yo te debo confesar que esta aplicación no me funciono o en realidad no me tome el tiempo de profundizar en el funcionamiento de esta pero me sirvió para resolver el problema de la extracción del dispositivo (en este caso una usb Kingston de 4G). Al tratar de hacer la búsqueda de los handles correspondientes a la letra g: de la unidad no obtuve resultados (en Windows 7) pero recordé que tengo una aplicación instalada que me ha parecido una maravilla desde que me di cuenta de su existencia, me refiero al unlocker 1.8.9.

    Gracias de nuevo por la referencia a esta aplicación que me daré a la tarea de conocer mejor, pongo la aclaración para que, en el caso que el Process Explorer no les funcione pues recurren al unlocker-dan click secundario sobre la unidad que no puede ser expulsada y la ventana del unlocker les dice que aplicación está bloqueando el dispositivo, en la parte inferior izquierda hay una pequeña casilla con instrucciones, simplemente le dicen unlock y listo su dispositivo estará listo para ser liberado.

Responder a checho Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *