Я нашел программу под названием «RevoSleep». Предупреждение: МУЗЫКА! http://revosleep.realspooky.de/
Я не могу сказать вам, работает ли он вообще [я не настолько смел, чтобы попробовать :)], но я попытался декомпилировать его с помощью .NET Reflector . Который, о чудо, сработал. (Я не могу найти, на что эта лицензия лицензирована, поэтому остерегайтесь .)
Не зная, на что я смотрю, эти фрагменты казались наиболее актуальными. Все они используют API-интерфейс Windows DeviceIoControl .
"Спящий" диск:
if (Environment.OSVersion.Version.Build > 0xa28)
{
num2 = DeviceIoControl(this.hDevice[0], 0x4d02c, (void*) &_ata_pass_through_ex_with_buffer, 40, (void*) &_ata_pass_through_ex_with_buffer, 40, (uint modopt(IsLong)*) &num11, null);
}
else
{
num2 = DeviceIoControl(this.hDevice[0], 0x4d028, (void*) &_ata_pass_through, 0x20c, (void*) &_ata_pass_through, 0x20c, (uint modopt(IsLong)*) &num11, null);
//...
}
"Блокировка" диска:
DeviceIoControl(hDevice[index], 0x90018, null, 0, null, 0, (uint modopt(IsLong)*) &num11, null);
«Деактивировать» диск:
DeviceIoControl(this.hDevice[0], 0x2d1080, null, 0, (void*) &_storage_device_number2, 12, (uint modopt(IsLong)*) &num8, null);
«Перевести том в автономное состояние» (?):
DeviceIoControl(this.hDevice[num3], 0x56c00c, null, 0, null, 0, (uint modopt(IsLong)*) &num11, null);
Что, опять же, я понятия не имею, работает ли это или даже то, что вы ищете. Вы всегда можете попробовать декомпилировать его и посмотреть на весь код самостоятельно.
Альтернативно, помогают ли эти вызовы API?
Функция SetSuspend
Функция GetPwrDiskSpindownRange
Удачи.