Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

The Safely Remove Hardware icon in Windows 7 offers the ability to eject my SATA drives, including the boot drive. I don't see myself ever needing this - especially not from the convenience of the tray icon.

Is there a common BIOS setting to disable hot-swappability?

Eject internal SATA drives

share|improve this question
1  
Upon upgrading from Vista to Windows 7 RTM, my SATA drives no longer show in the Safely Remove Hardware menu, can you confirm that this is still an issue for you on the RTM version of Windows 7? – bdukes Aug 27 '09 at 16:30
    
Hopefully it's been fixed - I'll find out soon enough... – sblair Aug 28 '09 at 18:12
8  
I wonder, how stable W7 runs after ejecting the boot HDD. Can you eject the CPU or the mainboard, too? – maaartinus Feb 14 '11 at 5:06
    
Same problem in my Windows 8.1, and I guess this will be the same in all Windowses from 2000 through XP, Vista, 7 and 8. I suggest you add more tags ;) – LogicDaemon Feb 16 '14 at 8:52
up vote 50 down vote accepted

The answer really depends on what driver you're set up with. I have a 6 port SATA connector (Intel ICH9 - 2922) and I use the default MS-AHCI driver. If you're in the same boat, create a couple of new keys here:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\msahci

_

\Controller0\Channel0
            \Channel1
            \Channel2
            \Channel3
            \Channel4
            \Channel5

Now create a new DWORD - name: TreatAsInternalPort, value: 1 under each of the ChannelN keys. Now reboot for the changes to take effect and the drives should no longer show up under 'Safely Remove..'

Geeky stuff:

The root cause of the problem is the SATA driver incorrectly determined that your internal SATA port is external. So, if you look at the 'Capabilities' value for your drive(s) under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IDE\..\.. its probably set at 0x4 which makes it removable (as per the bit flag ORing done of the values below) Once you add the setting to the registry, the SATA driver now returns a different Capabilities value (most probably 0) and the drive stops showing up under 'Safely Remove..'

//from inc/api/cfgmgr32.h (WINDDK)
#define CM_DEVCAP_LOCKSUPPORTED     (0x00000001)
#define CM_DEVCAP_EJECTSUPPORTED    (0x00000002)
#define CM_DEVCAP_REMOVABLE         (0x00000004)
#define CM_DEVCAP_DOCKDEVICE        (0x00000008)
#define CM_DEVCAP_UNIQUEID          (0x00000010)
#define CM_DEVCAP_SILENTINSTALL     (0x00000020)
#define CM_DEVCAP_RAWDEVICEOK       (0x00000040)
#define CM_DEVCAP_SURPRISEREMOVALOK (0x00000080)
#define CM_DEVCAP_HARDWAREDISABLED  (0x00000100)
#define CM_DEVCAP_NONDYNAMIC        (0x00000200)
share|improve this answer
1  
Excellent work! – sblair Mar 17 '10 at 18:02
2  
To determine which controller is which you can comapre the number values under ...\Msahci\enum with HardwareIds in device manager properties dialogue's details tab. – Richard Jun 14 '10 at 22:50
    
@Kapil: Please have a look at (superuser.com/questions/420584/…) [this] question when convenient. Thanks in advance. – Raheel Khan May 5 '12 at 0:00
1  
Based on the answer, I've got regedit script for quick dirty work. – LogicDaemon Dec 21 '13 at 10:48
1  
Windows 8 / Windows 10 solution is here. – willus Aug 7 '15 at 17:55

Today I had the same problem after upgrading my Dad's PC from Windows 7 to 10

The above no longer holds for Win 8, 8.1 & 10

What helped was a slight variation of this link How can I remove the option to eject internal SATA drives from the Windows 8 tray icon?

I.e. I added a new Multi String Value called TreatAsInternalPort to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\storahci\Parameters\Device with the value:

0
1
2
4
5

(note the newlines)

TreatAsInternalPort registry setting

BTW The AHCI driver was Intel's, not Microsoft's, but the solution should work with both drivers.

share|improve this answer
    
This worked perfectly :D (I also updated from Win7 to Win10). Thanks! (Also I used Microsofts AHCI driver). – Mohammad Aug 25 '15 at 23:20
    
Thanks for this! Worked like a charm! – Jamie Hanrahan Apr 18 at 16:31

It is a BIOS level options. In newer boards there are options in the BIOS to disable hot swapping (when you use AHCU/RAID as a controller). So when the hot swap settings disabled in the BIOS there will be no eject for SATA drives that appear in the system tray.

share|improve this answer

If you have an NVIDIA chipset, the following registry edit should work for you ...

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nvata] 
"DisableRemovable"=dword:00000001

Check out this description for more details.

share|improve this answer
1  
Yeah, I found this workaround on Google, but it didn't work for me. – sblair Jul 25 '09 at 22:41

Not sure about how common is it, but in CMOS (BIOS) Setup on Asrock motherboards the option called "Hotswap" modifies the behaviour. It's available for each SATA channel. Also, there is "External SATA" option, but it's off by default and I didn't touch it.

share|improve this answer

In BIOS, under Storage Configuration I changed 'Configure SATA as' from IDE to AHCI and that fixed it.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.