La «rimozione sicura» della chiavetta USB serve ancora? — Ragionarci a partire dalla rimozione rapida e dalla cache di scrittura
· Aggiornato il: · Go Komura · Windows, USB, Archiviazione, Analisi dei guasti
Avete copiato i vostri file su una chiavetta USB. Sullo schermo compariva che la copia era completata. Eppure, prima di sfilarla, vi si chiede di passare ancora una volta dalla rimozione sicura dell’hardware.
Doveva essere finito: che cosa resta da finire?
I dati che un’applicazione ha consegnato a Windows possono essere ancora sul PC in attesa di essere scritti. Seguiamo un singolo file lungo il suo percorso verso la chiavetta USB.1
Si presuppone un’unità di archiviazione USB collegata a Windows 11. Il trasferimento di file da uno smartphone e i casi analoghi restano fuori dall’argomento.
1. Prima che qualcosa raggiunga la chiavetta USB, è il PC a trattenerlo
Per questa spiegazione dividiamo il file in tre parti: A, B e C. L’applicazione le consegna a Windows nell’ordine e chiede che vengano scritte sulla chiavetta USB.
Se dovesse attendere ogni singola scrittura sulla chiavetta USB, anche l’applicazione resterebbe in attesa. Windows può quindi rispondere appena ha preso i dati nella memoria del PC e scriverli sulla chiavetta USB più tardi. Lo scopo è non far attendere l’applicazione e trattare insieme le scritture piccole. Quell’area di trattenimento temporaneo è la cache di scrittura.12
Considerate il momento in cui Windows ha ricevuto A, B e C, ma è riuscito a scrivere sulla chiavetta USB solo A e B. C aspetta il proprio turno sul PC.
flowchart TB
accTitle: Per lo stesso file, ciò che il PC ha ricevuto e ciò che la chiavetta USB ha registrato non coincidono
accDescr: Mostra il momento in cui Windows ha ricevuto A, B e C, A e B sono registrati sulla chiavetta USB e C attende ancora di essere scritto nella cache lato PC.
A["Windows ha ricevuto A, B e C"]
A --> P["La memoria del PC trattiene C, in attesa di scrittura"]
A --> U["Registrato sulla chiavetta USB: solo A e B"]
Figura 1: L’applicazione ha consegnato tutti e tre. Eppure, in questo momento, C non è ancora sulla chiavetta USB.
Se sfilate ora, C, rimasto sul PC, non raggiungerà mai la chiavetta USB. Manca una parte del file che state portando via.
L’applicazione ha consegnato tutto. Ma la chiavetta USB non ha ancora tutto. In una progettazione che rimanda le scritture, entrambe le affermazioni possono essere vere insieme.
Il momento in cui compare il messaggio di completamento dipende dall’applicazione e dalle impostazioni. Questo esempio non afferma che dopo la segnalazione di fine di Esplora file restino sempre delle scritture in sospeso.2
Nel diagramma, una linea continua indica una relazione che vale sempre e una linea tratteggiata indica una relazione condizionale (le condizioni sono nella spiegazione di ciascuna relazione nella pagina di dettaglio). L’elenco completo delle relazioni (in totale 6, con evidenza e livello di certezza) e le definizioni dei concetti principali sono raccolti nella pagina di dettaglio della mappa della conoscenza (in giapponese). Dati: JSON-LD / Turtle
2. Completate la scrittura di quanto è stato trattenuto prima di sfilare
Come sfilare allora la chiavetta USB senza lasciare indietro C?
La rimozione sicura dell’hardware è l’azione che comunica a Windows: questo dispositivo sta per uscire, completa quindi le scritture rimaste. Portare a termine le operazioni ancora presenti nella cache è uno dei suoi compiti.3
Per il file di cui sopra, significa scrivere C, che era ancora sul PC, e attendere finché anche la chiavetta USB contiene A, B e C.
flowchart TB
accTitle: Come finisce la stessa scrittura in sospeso C a seconda di come si rimuove l'unità
accDescr: Se la connessione viene interrotta mentre C è ancora sul PC, la chiavetta USB contiene solo A e B; se C viene scritto con l'unità ancora collegata, la chiavetta USB contiene A, B e C.
P["C è sul PC, in attesa di scrittura"]
P -->|"Sfilare prima di scrivere C"| L["La chiavetta USB ha solo A e B"]
P -->|"Scrivere C con la connessione ancora attiva"| R["La chiavetta USB ha A, B e C"]
Figura 2: Ciò che volete attendere con la rimozione sicura non è il trascorrere del tempo, ma il completamento delle scritture rimaste.
Limitarsi ad aspettare un poco prima di sfilare non vi dice nulla su ciò che resta. L’azione di rimozione chiede a Windows di eseguire il lavoro di chiusura e potete attendere la notifica che indica che il dispositivo può essere rimosso.4
L’impostazione «Prestazioni migliori» di Windows è il criterio che consente quella cache. In cambio del raggruppamento delle scritture per efficienza, occorre eseguire la rimozione sicura dell’hardware prima di sfilare.3
3. «Rimozione rapida», il criterio che non rimanda
Forse state pensando: se il resto va comunque scritto prima di sfilare, perché lasciare qualcosa sul PC fin dall’inizio?
È esattamente questo «Rimozione rapida». Windows non mette in cache le scritture dirette al dispositivo in questione, il che consente di omettere il passaggio di rimozione. In altre parole, non adotta l’approccio di lasciare C sul PC per scriverlo più tardi.3
Il lavoro di scrittura sulla chiavetta USB resta. C’è meno margine per raggruppare le scritture per efficienza e le prestazioni possono calare, ma in cambio l’unità diventa più facile da rimuovere.3
flowchart TB
accTitle: Un criterio che rimanda le scritture e uno che non lo fa
accDescr: Con Prestazioni migliori il PC può trattenere scritture in sospeso ma il loro completamento va confermato al momento della rimozione, mentre con Rimozione rapida Windows non rimanda le scritture in quel modo.
H["Prestazioni migliori"] --> HC["Il PC può trattenere scritture"]
HC --> HE["Scrivere il resto prima di sfilare"]
Q["Rimozione rapida"] --> QC["Le scritture non vengono rimandate"]
QC --> QE["Il passaggio di rimozione dopo il lavoro può essere omesso"]
Figura 3: Il lavoro di scrittura sulla chiavetta USB non sparisce; ciò che cambia è se venga rimandato.
Da Windows 10 versione 1809 l’impostazione predefinita è «Rimozione rapida». È su questo che si fondano le affermazioni secondo cui ormai si può semplicemente sfilare la chiavetta. L’impostazione, però, può essere cambiata dispositivo per dispositivo.3
In breve: completate il lavoro rimandato prima di sfilare, oppure non lo rimandate affatto? Entrambe le affermazioni — che la rimozione sicura sia necessaria e che sia inutile — nascono da questa differenza di impostazione.
Anche con «Rimozione rapida» ciò non significa che possiate interrompere una copia o un salvataggio in corso. Attendete la fine dell’operazione e salvate prima le modifiche non salvate.5
4. Su quale impostazione è la vostra chiavetta USB?
In Esplora file individuate nome e lettera dell’unità USB in questione.
Fate clic con il pulsante destro sul pulsante Start, aprite Gestione disco e fate clic con il pulsante destro sull’etichetta del dispositivo corrispondente nell’elenco in basso. «Proprietà > Criteri» mostra quale delle due opzioni è selezionata.3
Se «Criteri» non è visibile, esiste anche una disposizione in cui si seleziona l’unità nella scheda «Hardware» e si aprono da lì le proprietà. Se state soltanto consultando, non modificate l’impostazione. Se non potete eseguire questi passaggi su un PC aziendale, rivolgetevi all’amministrazione.3
Se non conoscete l’impostazione, usare la rimozione sicura dell’hardware è la pratica più semplice da seguire. Completate salvataggi e copie, poi chiudete le applicazioni che usano la chiavetta USB. Scegliete il dispositivo sotto «Rimozione sicura dell’hardware ed espulsione supporti» nell’area di notifica e sfilatelo quando la notifica indica che il dispositivo può essere rimosso. Se l’icona è nascosta, aprite l’elenco delle icone nascoste.4
Quando sono collegati più dispositivi, verificate che il nome selezionato corrisponda alla chiavetta USB che sfilate davvero.
5. Perché dice che il dispositivo è in uso se la copia è finita?
A, B e C del file sono stati tutti scritti sulla chiavetta USB. Ma se l’applicazione con cui avete controllato il contenuto tiene ancora aperto il file, l’azione successiva potrebbe rileggerlo o riscriverlo.
Il processo di rimozione verifica anche se quel tipo di utilizzo può essere concluso. Quando è ancora aperto un handle — il riferimento con cui un’applicazione lavora su un file — la rimozione può essere rifiutata anche se letture e scritture si sono fermate.67
flowchart TB
accTitle: Un'applicazione in uso resta legata a file già scritti
accDescr: Anche quando A, B e C sono tutti registrati sulla chiavetta USB, un'applicazione che mantiene un handle sui file può bloccare la rimozione del dispositivo.
A["Applicazione che tiene ancora aperto il file"]
A -->|"Mantiene un handle"| U["File sulla chiavetta USB: A, B e C"]
A -.-> N["Il riferimento resta anche quando letture e scritture cessano"]
Figura 4: Questo è il caso in cui il motivo per cui non riuscite a rimuovere il dispositivo non sono dati mancanti, ma il fatto che il dispositivo è ancora in uso.
In questo caso non limitatevi ad aspettare: salvate ciò che va salvato e chiudete l’applicazione. Chiudete anche ogni finestra di Esplora file che mostra la chiavetta USB e riprovate la rimozione.
Se non vi viene in mente nulla, cercate in Process Explorer il nome del file o della cartella sulla chiavetta USB e scoprite quale processo lo tiene aperto. Evitate di chiudere a forza un handle così trovato, perché può destabilizzare l’applicazione o il sistema. Chiudete l’applicazione con la sua procedura normale e, se si tratta di un’applicazione gestionale o di un servizio, verificate con la persona responsabile.87
Questo è un esempio di causa. Per i metodi di analisi dettagliati, si veda Process Explorer e Handle nella pratica.
6. Una nota per chi sviluppa applicazioni: che cosa significa «Salvataggio completato»
Decidete in modo consapevole se la vostra applicazione segnala «Salvataggio completato» già quando i dati sono stati consegnati a Windows, oppure solo dopo aver verificato l’esito delle scritture che le servono.
L’API Win32 FlushFileBuffers scrive i dati nel buffer del file indicato. Una chiamata su un normale handle di file non salva il documento non salvato di un’altra applicazione e non conclude l’uso dell’intera chiavetta USB.2
Prima e dopo la cache di Windows ci sono inoltre i dati non salvati all’interno dell’applicazione e la cache interna del dispositivo. «Rimozione rapida» non è un’impostazione che elimina anche quelli.9
flowchart TB
accTitle: Ogni luogo che trattiene dati ha un proprietario diverso
accDescr: Mostra i dati non salvati all'interno dell'applicazione, la cache dei file lato Windows e la cache lato dispositivo, nell'ordine in cui i dati le attraversano.
A["Nell'applicazione: modifiche non salvate"] -->|"Operazione di salvataggio"| W["Lato Windows: la cache dei file"]
W -->|"Scrittura sul dispositivo"| D["Lato dispositivo: cache interna e supporto"]
Figura 5: Che restino dati in ciascuno strato dipende dalle impostazioni e dall’implementazione. Non scambiate l’impostazione di uno strato per la verifica di completamento di un altro.
Un’applicazione che gestisce le notifiche di rimozione ha bisogno anche di operazioni di pulizia, come la chiusura dei propri handle di dispositivo.10 La scelta fra le API è trattata nell’articolo su Cache Manager e WriteFile.
Riepilogo
Ciò che potete portare via su una chiavetta USB sono i dati la cui scrittura su di essa è terminata. Se non conoscete l’impostazione, completate il vostro lavoro e usate la rimozione sicura dell’hardware. Dei file importanti conservate una copia in un luogo diverso dalla chiavetta USB.
Articoli correlati
- Il Cache Manager di Windows: quando il vostro WriteFile arriva sul disco?
- Come gestire i dispositivi USB da un’applicazione Windows
- Analizzare con Process Explorer, Handle e VMMap
Link di riferimento
-
Microsoft Learn, File Caching. La cache dei file in memoria, la scrittura differita e il ruolo del flush. ↩ ↩2
-
Microsoft Learn, FlushFileBuffers function. Le scritture ordinarie rispetto alla scrittura dei dati nel buffer. Fare il flush di un file e rimuovere un dispositivo sono cose diverse. ↩ ↩2 ↩3
-
Microsoft Learn, Manage default media removal policy. La differenza fra «Rimozione rapida» e «Prestazioni migliori», la modifica del valore predefinito e il controllo dell’impostazione per singolo dispositivo. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
Microsoft Support, Safely remove hardware in Windows. L’azione di rimozione dall’area di notifica e la notifica che il dispositivo può essere rimosso. ↩ ↩2
-
Microsoft Learn, Handling an IRP_MN_SURPRISE_REMOVAL Request. Gli errori di I/O e le operazioni di pulizia che seguono una disconnessione imprevista del dispositivo. ↩
-
Microsoft Learn, Handling an IRP_MN_QUERY_REMOVE_DEVICE Request. La verifica prima della rimozione, gli handle aperti e il modo in cui rispondono il file system e le applicazioni. ↩
-
Microsoft Learn, Handle. L’esame dei riferimenti ai file aperti e l’avvertenza sulla chiusura forzata degli handle. ↩ ↩2
-
Microsoft Learn, Process Explorer. La ricerca del processo che tiene aperto un determinato file o una determinata directory. ↩
-
Microsoft Learn, File Buffering. La distinzione fra i buffer dei file lato Windows e la cache lato hardware. ↩
-
Microsoft Learn, DBT_DEVICEQUERYREMOVE event. Come un’applicazione si prepara alla rimozione e chiude i propri handle di dispositivo. ↩
Articoli correlati
Articoli recenti con gli stessi tag per approfondire argomenti vicini.
Perché l'audio si interrompe se l'uso della CPU è basso? — Ragionare in termini di buffer e scadenze
L'audio si interrompe mentre l'uso della CPU resta basso. La spiegazione parte dal buffer di riproduzione e dalla scadenza di riforniment...
Perché RDP è lento su una connessione veloce? — Separare input, disegno dello schermo e rete
Il test di velocità è rapido, eppure input e scorrimento in Desktop remoto arrancano. La spiegazione va dai tempi di andata e ritorno e d...
Perché una condivisione file di Windows a volte funziona e altre volte no — Analizzare Kerberos, NTLM e le credenziali
Analizzare gli accessi intermittenti alle condivisioni file di Windows usando sintomi e registri. Nome contro indirizzo IP, errori solo n...
Come fa un collegamento di Windows a trovare un file spostato? — La posizione di un file e la sua identità sono due cose diverse
Perché un collegamento apre ancora un file che avete spostato? Windows può trovare la destinazione tramite identificatori di rilevamento ...
La rete funziona ma Windows dice «Nessuna connessione Internet» — Circoscrivere NCSI, DNS, proxy e VPN su Windows
Perché Windows dice «Nessuna connessione Internet» mentre la rete funziona, partendo dal verdetto di NCSI. Circoscrivere DNS, proxy, VPN ...
Argomenti correlati
Queste pagine collocano l’argomento in un contesto più ampio di servizi e decisioni.
Argomenti tecnici Windows
Portale su sviluppo Windows, analisi dei problemi e valorizzazione delle risorse esistenti.
Servizi collegati all’argomento
L’articolo è direttamente collegato ai servizi seguenti.
Sviluppo di applicazioni Windows
Applicazioni aziendali, integrazione di dispositivi e strumenti di comunicazione, dai requisiti allo sviluppo.
Domande frequenti
Domande che ricorrono nelle consulenze sull’argomento dell’articolo.
- La rimozione sicura della chiavetta USB serve ancora su Windows 11?
- Dipende dai criteri di rimozione del dispositivo in questione. «Rimozione rapida» è pensata perché quel passaggio possa essere omesso; con «Prestazioni migliori» occorre eseguire la rimozione sicura dell'hardware. Se non conoscete l'impostazione, è più semplice completare salvataggi e copie, chiudere le applicazioni che usano la chiavetta e poi eseguire l'azione di rimozione.
- Con «Rimozione rapida» posso sfilare la chiavetta durante una copia?
- No. «Rimozione rapida» è un criterio che impedisce a Windows di mettere in cache le scritture e di rimandarle. Non è una funzione che completa dati che non avete ancora consegnato e non significa che possiate interrompere una copia o un salvataggio in corso.
- Dove controllo se un'unità è impostata su «Rimozione rapida»?
- Individuate lettera e nome dell'unità USB in Esplora file, aprite le proprietà del dispositivo corrispondente in Gestione disco e guardate la scheda «Criteri». Se la scheda non è visibile, selezionate il dispositivo nella scheda «Hardware» e aprite da lì le proprietà. La disposizione varia a seconda dell'ambiente e per la sola consultazione non occorre modificare l'impostazione.
- Perché Windows dice che il dispositivo è in uso se le scritture sono terminate?
- Se un'applicazione tiene ancora aperto un file o una cartella, l'uso del dispositivo non è necessariamente finito, anche se il traffico si è momentaneamente fermato. Salvate e chiudete prima i file coinvolti, verificate che copie e backup siano terminati e riprovate la rimozione. Se serve, usate Process Explorer per trovare il processo che li tiene aperti, ma evitate di chiudere gli handle a forza.
- Se uso la rimozione sicura dell'hardware, un documento che ho dimenticato di salvare verrà scritto sulla chiavetta USB?
- No. La rimozione sicura dell'hardware non sostituisce il comando Salva di un'applicazione. Salvate prima il documento e verificate che l'applicazione abbia segnalato la fine dell'operazione. Non tenete dati importanti soltanto su una chiavetta USB: conservatene una copia anche altrove.
Profilo dell’autore
Pagina di presentazione dell’autore dell’articolo.
Go Komura
Rappresentante di KomuraSoft LLC
Specializzato nello sviluppo di software Windows, nella consulenza tecnica e nell’analisi dei malfunzionamenti, soprattutto nei progetti con sistemi esistenti e guasti difficili da riprodurre.