venerdì 18 luglio 2014

Dispositivi SATA interni (unità ottiche, dischi, SSD) mostrati in "Rimozione sicura dell'hardware": come risolvere in Windows 7

Segnalato da MISTER X (Eng2Ita staff)

Su Windows 7 può succedere che dispositivi interni collegati a canali SATA (HDD, SSD, lettori e masterizzatori di CD/DVD/Blu-ray), vengano visualizzati sulla tray-bar nell'icona della "Rimozione sicura dell'hardware", in modo simile a quanto avviene per pendrive/dischi USB o altre periferiche esterne. Non è un grosso problema, però può essere fastidioso perché è possibile disconnettere inavvertitamente una periferica, costringendo l'utente al riavvio del sistema per renderla nuovamente accessibile.

NOTA
La tray-bar o system-tray è la piccola zona posta nella barra delle applicazioni dove vengono caricate le icone dei programmi che compiono operazioni particolari (per esempio firewall e antivirus), ed in Windows Vista/7 è vicino all'orologio di sistema.

Origine del problema

Windows 7 ha aggiunto il supporto alle periferiche eSATA (external SATA), un'interfaccia di comunicazione basata su SATA per connettere periferiche esterne (dischi, uità ottiche, SSD ecc.). Il problema si presenta quando i controller SATA sono impostati in modalità AHCI. Alcuni produttori di hardware potrebbero aver configurato erroneamente le porte SATA interne, che possono apparire come se fossero esterne. Ciò ha come conseguenza che qualunque dispositivo SATA, sia interno che esterno, viene visto come se fosse una periferica removibile. Non ci sono effetti negativi sul funzionamento del sistema, eccetto l'eventualità di disconnettere inavvertitamente una periferica.

Possibili soluzioni

Per eliminare il problema, la prima cosa da fare è eseguire (se possibile) un aggiornamento del BIOS/UEFI del computer o della scheda madre all'ultima versione disponibile, che potrebbe correggere il problema dell'errata configurazione delle porte SATA.

La seconda cosa da fare è l'aggiornamento di tutti i driver della scheda madre (o almeno del chipset o del controller SATA) all'ultima versione disponibile. Versioni aggiornate dei driver potrebbero impostare correttamente alcune chiavi di registro ed eliminare il problema.

Soluzione manuale: modifica del registro di Windows

Se i passi precedenti non risolvono il problema bisogna ricorrere ad un workaround (una soluzione di comodo che permette di aggirare il problema) che consiste nel creare alcune sottochiavi di registro e impostare un valore apposito.

Aprire il registro di sistema con i privilegi di amministratore:
  1. uscire da tutte le applicazioni;
  2. premere <START>/Esegui (oppure la combinazione di tasti <Win>+<R>) e digitare regedit per entrare nel registro di configurazione di Windows;
  3. individuare la sottochiave:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci\
  4. creare all'interno di \Msahci\ una sottochiave chiamata Controller0;
  5. creare all'interno di \Controller0\ una sottochiave chiamata ChannelN.
    Attenzione: il penultimo carattere è una "ELLE" minuscola (non il numero 1), mentre al posto della N a seconda della configurazione del sistema si inserisce la cifra 0 oppure 1, oppure 2 ecc., a seconda del numero del canale. In questo esempio supponiamo che la periferica da nascondere sia connessa al canale 0, per cui creeremo la sottochiave Channel0 (ricorda: il penultimo carattere è una "ELLE" minuscola);
  6. creare all'interno di \Channel0\ un valore di tipo DWORD (DWORD a 32 bit nei sistemi a 64 bit) chiamato TreatAsInternalPort, a cui assegnare il valore esadecimale 1. Questo valore istruisce il sistema che la periferica collegata al relativo canale deve essere impostata come periferica interna;
  7. chiudere il registro di configurazione e riavviare il sistema.
A questo punto bisogna controllare che la periferica non sia più presente nella tray-bar in "Rimozione sicura dell'hardware". Possono essere necessari più tentativi per individuare il canale corretto (potrebbe essere il canale 0, il canale 1, o il 2 ecc.), per cui può essere necessario creare diverse sottochiavi Channel0, Channel1, Channel2, e così via. Eventuali sottochiavi inutili potranno essere eliminate dal registro in seguito.
Bisogna creare tante sottochiavi ChannelN quante sono le periferiche da nascondere; per esempio, per nascondere sia un HDD che un DVD-ROM si creano 2 sottochiavi Channel0 e Channel1 e, in ciascuna di esse, il valore TreatAsInternalPort impostato a 1 (esadecimale), come indicato in figura.
INDIVIDUARE IL NUMERO DI CANALE
Si può procedere a colpo quasi sicuro leggendo il numero del canale in Gestione dispositivi (un canale corrisponde ad una porta SATA). Il "quasi" è d'obbligo poiché la documentazione tecnica Microsoft riporta casi in cui il numero di canale mostrato in Gestione dispositivi può non coincidere con quello assegnato alle chiavi di registro. Detto questo, vediamo come procedere.

Aprire Gestione dispositivi:
  1. fare click sul pulsante START/Pannello di controllo;
  2. se in Pannello di controllo è impostata la visualizzazione per Icone (grandi o piccole è indifferente), fare click su Gestione dispositivi. Se invece è impostata la visualizzazione per Categoria, click su Hardware e suoni, e infine click su Gestione dispositivi.
Espandere i rami "Unità disco" e/o "Unità DVD/CD ROM" ed individuare le periferiche da nascondere in "Rimozione sicura dell'hardware". Fare doppio click sulla periferica interessata (oppure click con il tasto destro del mouse e selezionare "Proprietà"). Nella finestra pop-up si potrà leggere il numero del canale. Nell'esempio mostrato nella figura seguente, l'hard-disk Maxtor ha il canale 0 e l'unità DVD ha il canale 1. Per nasconderle in "Rimozione sicura dell'hardware" occorre creare le rispettive sottochiavi Channel0 e Channel1.
Nei prossimi 2 paragrafi si mostra come creare la stessa struttura vista fino ad ora di sottochiavi e valori, usando il prompt dei comandi oppure uno o più file .reg. Si tratta di metodi alternativi all'uso diretto dell'editor del registro di Windows (se non vi interessano potete saltare direttamente al paragrafo Riferimenti).

Creazione delle chiavi di registro con il Prompt dei comandi

Se non si vuole usare l'editor del registro, si può usare il prompt dei comandi:
  • andare in START/Tutti i programmi/Accessori;
  • fare click con il tasto destro del mouse su Prompt dei comandi e selezionare "Esegui come amministratore".
Il seguente comando crea la struttura di sottochiavi e valori per il canale 0; piuttosto che digitare il comando, selezionare il testo sottostante (copia), incollarlo nel prompt (nonostante la lunghezza si tratta di un unico comando) ed infine premere <INVIO>:
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\msahci\Controller0\Channel0" /f /v TreatAsInternalPort /t REG_DWORD /d 0x00000001

Per il canale 1 il comando è identico, ad eccezione del numero:
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\msahci\Controller0\Channel1" /f /v TreatAsInternalPort /t REG_DWORD /d 0x00000001

Come detto in precedenza, possono essere necessarie diverse prove prima di individuare il canale (cioè la porta SATA) corretto, poiché il numero di canale in Gestione dispositivi può non coincidere con quello del registro di Windows.

Creazione delle chiavi di registro con un file .reg

Se non si vogliono usare né l'editor di registro né il prompt dei comandi, si può scrivere un semplice file di testo (con il Blocco note - Notepad - o qualsiasi editor di testo) e salvarlo con estensione .reg.

Per esempio, copiare le seguenti righe (compresa la riga vuota) ed incollarle in un file di testo; infine salvare il file come canale0.reg (crea sottochiavi e valori per il canale 0).
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci\Controller0\Channel0]
"TreatAsInternalPort"=dword:00000001
A questo punto è sufficiente fare doppio click sul file canale0.reg per aggiungere la sottochiave al registro di Windows.

Per il canale 1 si costruisce un file canale1.reg identico al precedente (tranne il numero):
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci\Controller0\Channel1]
"TreatAsInternalPort"=dword:00000001

Si possono accorpare più canali in un unico file canali.reg, inserendo tutte le sottochiavi ed i valori da creare. Per esempio per i canali 0 e 1 il file ha la seguente struttura:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci\Controller0\Channel0]
"TreatAsInternalPort"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci\Controller0\Channel1]
"TreatAsInternalPort"=dword:00000001

Anche in questo caso possono essere necessarie diverse prove prima di individuare il (i) canale (canali) corretto (corretti), perché il numero di canale in Gestione dispositivi può non coincidere con quello del registro di Windows.

Riferimenti

Una spiegazione tecnica esaustiva del problema trattato in questo articolo può essere consultata alla pagina Windows Hardware Dev Center Archive, sezione Storage Archive, nel documento Internal and External SATA Port Configuration.
Per la possibile mancata corrispondenza tra numero del canale in Gestione dispositivi e chiavi di registro si consulti l'articolo http://support.microsoft.com/kb/937251/en-us.

POTREBBE INTERESSARTI ANCHE…


Torna all'indice delle guide per Windows 7 e Vista