¿Sigue siendo necesario «quitar el USB de forma segura»? — Pensarlo desde la extracción rápida y la caché de escritura
· Actualizado el: · Go Komura · Windows, USB, Almacenamiento, Investigación de fallos
Ha copiado sus archivos a una memoria USB. La pantalla decía que la copia había terminado. Y aun así, antes de desconectarla, le piden que pase una vez más por «Quitar hardware de forma segura».
Se suponía que había terminado, así que ¿qué queda por terminar?
Los datos que una aplicación entregó a Windows pueden seguir esperando en el PC a ser escritos. Sigamos un único archivo en su camino hacia la memoria USB.1
Se da por supuesto un almacenamiento USB conectado a Windows 11. La transferencia de archivos desde un teléfono móvil y casos similares quedan fuera del alcance.
1. Antes de que algo llegue a la memoria USB, el PC lo retiene
Para esta explicación, dividamos el archivo en tres fragmentos: A, B y C. La aplicación se los entrega a Windows por orden y pide que se escriban en la memoria USB.
Si tuviera que esperar a cada escritura en la memoria USB, la aplicación también quedaría esperando. Por eso Windows puede responder en cuanto ha tomado los datos en la memoria del PC y escribirlos en la memoria USB más tarde. La idea es no hacer esperar a la aplicación y atender juntas las escrituras pequeñas. Esa zona de retención temporal es la caché de escritura.12
Piense en el momento en que Windows ha recibido A, B y C, pero solo ha conseguido escribir A y B en la memoria USB. C espera su turno en el PC.
flowchart TB
accTitle: Para el mismo archivo, lo que el PC ha recibido y lo que la memoria USB ha grabado no coinciden
accDescr: Muestra el momento en que Windows ha recibido A, B y C, A y B están grabados en la memoria USB y C sigue esperando en la caché del lado del PC a ser escrito.
A["Windows ha recibido A, B y C"]
A --> P["La memoria del PC retiene C, a la espera de escritura"]
A --> U["Grabado en la memoria USB: solo A y B"]
Figura 1: La aplicación entregó los tres. Aun así, en este momento C todavía no está en la memoria USB.
Si desconecta ahora, C, que sigue en el PC, nunca llegará a la memoria USB. Falta una parte del archivo que se lleva.
La aplicación lo entregó todo. Pero la memoria USB todavía no lo tiene todo. En un diseño que aplaza las escrituras, ambas cosas pueden ser ciertas a la vez.
Cuándo aparece el mensaje de finalización depende de la aplicación y de la configuración. Este ejemplo no afirma que siempre queden escrituras pendientes después de que el Explorador de archivos informe de que ha terminado.2
En el diagrama, una línea continua marca una relación que siempre se cumple y una línea discontinua una relación condicional (las condiciones están en la explicación de cada relación en la página de detalle). La lista completa de relaciones (6 en total, con evidencia y grado de certeza) y las definiciones de los conceptos principales están reunidas en la página de detalle del mapa de conocimiento (en japonés). Datos: JSON-LD / Turtle
2. Termine de escribir lo retenido antes de desconectar
¿Cómo desconectar entonces la memoria USB sin dejar atrás a C?
«Quitar hardware de forma segura» es la acción que le dice a Windows: este dispositivo va a salir, así que termina las escrituras que queden. Completar las operaciones que siguen en la caché es una de sus tareas.3
Para el archivo anterior, eso significa escribir C, que aún estaba en el PC, y esperar hasta que la memoria USB contenga también A, B y C.
flowchart TB
accTitle: Cómo acaba la misma escritura pendiente C según la forma de retirar la unidad
accDescr: Si se corta la conexión mientras C sigue en el PC, la memoria USB solo contiene A y B; si C se escribe con la unidad aún conectada, la memoria USB contiene A, B y C.
P["C está en el PC, a la espera de escritura"]
P -->|"Desconectar antes de escribir C"| L["La memoria USB solo tiene A y B"]
P -->|"Escribir C con la conexión aún activa"| R["La memoria USB tiene A, B y C"]
Figura 2: Lo que quiere esperar con «Quitar hardware de forma segura» no es el paso del tiempo, sino que terminen las escrituras restantes.
Limitarse a esperar un poco antes de desconectar no le dice nada sobre si queda algo pendiente. La acción de extracción pide a Windows que ejecute el trabajo de cierre, y usted puede esperar el aviso que indica que el dispositivo se puede retirar.4
La opción «Mejor rendimiento» de Windows es la directiva que permite esa caché. A cambio de agrupar las escrituras por eficiencia, hay que ejecutar «Quitar hardware de forma segura» antes de desconectar.3
3. «Extracción rápida», la directiva que no aplaza nada
Quizá esté pensando: si el resto tiene que escribirse igualmente antes de desconectar, ¿por qué dejar algo en el PC para empezar?
Eso es exactamente «Extracción rápida». Windows no almacena en caché las escrituras dirigidas al dispositivo en cuestión, lo que permite omitir el paso de extracción. Dicho de otro modo, no emplea el enfoque de dejar C en el PC para escribirlo después.3
El trabajo de escribir en la memoria USB sigue existiendo. Hay menos margen para agrupar escrituras por eficiencia y el rendimiento puede bajar, pero a cambio la unidad resulta más fácil de retirar.3
flowchart TB
accTitle: Una directiva que aplaza las escrituras y otra que no
accDescr: Con Mejor rendimiento el PC puede retener escrituras pendientes pero hay que confirmar que terminan al retirar, mientras que con Extracción rápida Windows no aplaza las escrituras de ese modo.
H["Mejor rendimiento"] --> HC["El PC puede retener escrituras"]
HC --> HE["Escribir el resto antes de desconectar"]
Q["Extracción rápida"] --> QC["Las escrituras no se aplazan"]
QC --> QE["El paso de extracción tras el trabajo puede omitirse"]
Figura 3: El trabajo de escribir en la memoria USB no desaparece; lo que cambia es si se aplaza.
Desde Windows 10 versión 1809, el valor predeterminado es «Extracción rápida». En eso se basan las afirmaciones de que ya se puede sacar la memoria sin más. La opción, sin embargo, puede cambiarse dispositivo por dispositivo.3
En resumen: ¿termina el trabajo aplazado antes de desconectar, o no lo aplaza en ningún momento? Las dos afirmaciones —que la extracción segura es necesaria y que es innecesaria— proceden ambas de esta diferencia de configuración.
Incluso con «Extracción rápida», eso no significa que pueda interrumpir una copia o un guardado en curso. Espere a que la operación termine y guarde antes los cambios sin guardar.5
4. ¿En qué opción está su propia memoria USB?
En el Explorador de archivos, localice el nombre y la letra de la unidad USB en cuestión.
Haga clic con el botón derecho en el botón Inicio, abra Administración de discos y haga clic con el botón derecho en la etiqueta del dispositivo correspondiente en la lista inferior. «Propiedades > Directivas» muestra cuál de las dos opciones está seleccionada.3
Si «Directivas» no aparece, también existe una disposición en la que se selecciona la unidad en la pestaña «Hardware» y se abren las propiedades desde allí. Si solo está consultando, no cambie la opción. Si no puede realizar estos pasos en un PC de empresa, consulte a su administrador.3
Si no conoce la opción, usar «Quitar hardware de forma segura» es la práctica más sencilla de seguir. Termine de guardar y copiar y cierre después las aplicaciones que usan la memoria USB. Elija el dispositivo en «Quitar hardware de forma segura y expulsar el medio» del área de notificación y desconéctelo cuando el aviso indique que el dispositivo se puede retirar. Si el icono está oculto, abra la lista de iconos ocultos.4
Cuando hay varios dispositivos conectados, compruebe que el nombre que ha seleccionado corresponde a la memoria USB que realmente desconecta.
5. ¿Por qué dice que el dispositivo está en uso si la copia ha terminado?
A, B y C del archivo se han escrito todos en la memoria USB. Pero si la aplicación con la que comprobó el contenido mantiene aún abierto el archivo, la siguiente acción podría volver a leerlo o a escribirlo.
El proceso de extracción también comprueba si ese tipo de uso puede darse por terminado. Cuando sigue abierto un identificador —la referencia que una aplicación usa para trabajar con un archivo—, la extracción puede rechazarse aunque las lecturas y escrituras se hayan detenido.67
flowchart TB
accTitle: Una aplicación en uso sigue unida a archivos ya escritos
accDescr: Aunque A, B y C estén todos grabados en la memoria USB, una aplicación que mantiene un identificador sobre los archivos puede bloquear la extracción del dispositivo.
A["Aplicación que mantiene abierto el archivo"]
A -->|"Mantiene un identificador"| U["Archivos en la memoria USB: A, B y C"]
A -.-> N["La referencia permanece aunque cesen lecturas y escrituras"]
Figura 4: Este es el caso en que la razón por la que no puede retirar el dispositivo no son datos que falten, sino que el dispositivo sigue en uso.
En ese caso, no se limite a esperar: guarde lo que haya que guardar y cierre la aplicación. Cierre también cualquier ventana del Explorador de archivos que muestre la memoria USB y vuelva a intentar la extracción.
Si no se le ocurre nada, busque en Process Explorer el nombre del archivo o de la carpeta en la memoria USB y averigüe qué proceso lo mantiene abierto. Evite cerrar a la fuerza un identificador que encuentre, porque puede desestabilizar la aplicación o el sistema. Cierre la aplicación por su procedimiento normal y, si se trata de una aplicación de negocio o un servicio, consúltelo con la persona responsable.87
Este es un ejemplo de causa. Para métodos de investigación detallados, véase Cómo usar Process Explorer y Handle.
6. Una nota para desarrolladores: qué significa «Guardado completado»
Decida de forma deliberada si su aplicación informa de «Guardado completado» en cuanto ha entregado los datos a Windows, o solo después de comprobar el resultado de las escrituras que necesita.
La API de Win32 FlushFileBuffers escribe los datos almacenados en búfer del archivo indicado. Una llamada sobre un identificador de archivo corriente no guarda el documento sin guardar de otra aplicación ni da por terminado el uso de toda la memoria USB.2
Antes y después de la caché de Windows están además los datos sin guardar dentro de la aplicación y la caché interna del dispositivo. «Extracción rápida» no es una opción que elimine también todo eso.9
flowchart TB
accTitle: Cada lugar que retiene datos tiene un propietario distinto
accDescr: Muestra los datos sin guardar dentro de la aplicación, la caché de archivos del lado de Windows y la caché del lado del dispositivo, en el orden en que los datos las atraviesan.
A["En la aplicación: cambios sin guardar"] -->|"Operación de guardado"| W["Del lado de Windows: la caché de archivos"]
W -->|"Escritura en el dispositivo"| D["Del lado del dispositivo: caché interna y soporte"]
Figura 5: Que queden datos en cada capa depende de la configuración y de la implementación. No confunda la opción de una capa con la comprobación de finalización de otra.
Una aplicación que atiende los avisos de extracción necesita además tareas de limpieza, como cerrar sus identificadores de dispositivo.10 La elección entre las API se trata en el artículo sobre el administrador de caché y WriteFile.
Resumen
Lo que puede llevarse en una memoria USB son los datos cuya escritura en ella ha terminado. Si no conoce la opción, termine su trabajo y use «Quitar hardware de forma segura». De los archivos importantes, conserve una copia en un lugar distinto de la memoria USB.
Artículos relacionados
- El administrador de caché de Windows: ¿cuándo llega su WriteFile al disco?
- Cómo gestionar dispositivos USB en aplicaciones de Windows
- Investigar con Process Explorer, Handle y VMMap
Enlaces de referencia
-
Microsoft Learn, File Caching. La caché de archivos en memoria, la escritura diferida y el papel del vaciado. ↩ ↩2
-
Microsoft Learn, FlushFileBuffers function. Las escrituras corrientes frente al vaciado de los datos almacenados en búfer. Vaciar un archivo y retirar un dispositivo son cosas distintas. ↩ ↩2 ↩3
-
Microsoft Learn, Manage default media removal policy. La diferencia entre «Extracción rápida» y «Mejor rendimiento», el cambio del valor predeterminado y la comprobación de la opción por dispositivo. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
Microsoft Support, Safely remove hardware in Windows. La acción de extracción desde el área de notificación y el aviso de que el dispositivo se puede retirar. ↩ ↩2
-
Microsoft Learn, Handling an IRP_MN_SURPRISE_REMOVAL Request. Los fallos de E/S y la limpieza que siguen a una desconexión inesperada del dispositivo. ↩
-
Microsoft Learn, Handling an IRP_MN_QUERY_REMOVE_DEVICE Request. La comprobación previa a la extracción, los identificadores abiertos y cómo responden el sistema de archivos y las aplicaciones. ↩
-
Microsoft Learn, Handle. El examen de las referencias de archivo abiertas y la advertencia sobre cerrar identificadores a la fuerza. ↩ ↩2
-
Microsoft Learn, Process Explorer. La búsqueda del proceso que mantiene abierto un archivo o directorio concreto. ↩
-
Microsoft Learn, File Buffering. La distinción entre los búferes de archivo del lado de Windows y la caché del lado del hardware. ↩
-
Microsoft Learn, DBT_DEVICEQUERYREMOVE event. Cómo una aplicación se prepara para la extracción y cierra sus identificadores de dispositivo. ↩
Artículos relacionados
Artículos recientes con las mismas etiquetas para profundizar en temas cercanos.
¿Por qué se corta el audio si el uso de la CPU es bajo? — Pensarlo en términos de búferes y plazos
El audio se corta mientras el uso de la CPU sigue siendo bajo. La explicación parte del búfer de reproducción y del plazo de reposición, ...
¿Por qué RDP va lento en una conexión rápida? — Separar la entrada, el dibujado y la red
La prueba de velocidad va rápida y, sin embargo, la escritura y el desplazamiento en Escritorio remoto se arrastran. La explicación va de...
Por qué un recurso compartido de Windows funciona a veces y otras no — Acotar Kerberos, NTLM y las credenciales
Diagnosticar el acceso intermitente a recursos compartidos de Windows con síntomas y registros. Nombre frente a dirección IP, fallos solo...
El orden de la resolución de nombres en Windows — hosts, la caché DNS, LLMNR/mDNS y DoH
Si un PC no resuelve un nombre, o solo algunos fallan, el resultado depende de si respondió hosts, la caché DNS, el servidor DNS o LLMNR/...
Time Travel Debugging — Grabar y rebobinar los errores que no se reproducen en aplicaciones de larga duración
Un error que aparece una vez al mes deja en el volcado de memoria solo el resultado. Grabe y rebobine la ejecución con Time Travel Debugg...
Temas relacionados
Estas páginas sitúan el tema en un contexto más amplio de servicios y decisiones.
Temas técnicos de Windows
Portal sobre desarrollo de Windows, investigación de fallos y aprovechamiento de activos existentes.
Investigación de fallos y problemas prolongados
Fallos intermitentes, diagnóstico de comunicaciones, bloqueos prolongados y pruebas de rutas de error.
Servicios relacionados con este tema
El artículo está directamente relacionado con los siguientes servicios.
Desarrollo de aplicaciones para Windows
Aplicaciones empresariales, integración de dispositivos y herramientas de comunicación, de los requisitos al desarrollo.
Preguntas frecuentes
Preguntas habituales en las consultas sobre el tema del artículo.
- ¿Sigue siendo necesario quitar la memoria USB de forma segura en Windows 11?
- Depende de la directiva de extracción del dispositivo en cuestión. «Extracción rápida» está pensada para que ese paso pueda omitirse; con «Mejor rendimiento» hay que ejecutar «Quitar hardware de forma segura». Si no conoce la opción, lo más sencillo es terminar de guardar y copiar, cerrar las aplicaciones que usan la memoria y ejecutar después la acción de extracción.
- Con «Extracción rápida», ¿puedo desconectar la memoria durante una copia?
- No. «Extracción rápida» es una directiva que impide que Windows almacene las escrituras en caché y las aplace. No es una función que complete datos que usted todavía no ha entregado, ni significa que pueda interrumpir una copia o un guardado en curso.
- ¿Dónde compruebo si una unidad está configurada como «Extracción rápida»?
- Localice la letra y el nombre de la unidad USB en el Explorador de archivos, abra las propiedades del dispositivo correspondiente en Administración de discos y consulte la pestaña «Directivas». Si la pestaña no aparece, seleccione el dispositivo en la pestaña «Hardware» y abra sus propiedades desde allí. La disposición varía según el entorno, y para consultarla no hace falta cambiar la opción.
- ¿Por qué dice Windows que el dispositivo está en uso si las escrituras han terminado?
- Si una aplicación mantiene todavía abierto un archivo o una carpeta, el uso del dispositivo no ha terminado necesariamente, aunque el tráfico se haya detenido por un momento. Guarde y cierre primero los archivos implicados, confirme que las copias y las copias de seguridad han terminado y vuelva a intentar la extracción. Si es necesario, use Process Explorer para encontrar el proceso que los mantiene abiertos, pero evite cerrar identificadores a la fuerza.
- Si uso «Quitar hardware de forma segura», ¿se escribirá en el USB un documento que olvidé guardar?
- No. «Quitar hardware de forma segura» no sustituye al comando Guardar de una aplicación. Guarde primero el documento y compruebe que la aplicación ha indicado que la operación terminó. No conserve datos importantes únicamente en una memoria USB: mantenga también una copia en otro sitio.
Perfil del autor
Página de presentación del autor del artículo.
Go Komura
Representante de KomuraSoft LLC
Especializado en desarrollo de software para Windows, consultoría técnica e investigación de fallos, sobre todo en proyectos con sistemas existentes y errores difíciles de reproducir.