Здравствуйте! Известен ли кому нибудь способ остановки двигателя в жестком диске без использования DeviceIOControl?
В R0 зато это делается довольно красиво. Полистай тут- http://wasm.ru/article.php?article=apihook_3. MsRem постарался на славу. Смотри в разделе про CallGate.
Что было бы, если каждый кулхацкер мог бы из ринг3 такое вытворять? Один из возможных способов тебе уже назвали.
DeviceIOControl в купе с недокументированным кодом (2000, XP, XP SP1) и документированным (XP SP2, 2003, Vista) позволяет отправлять жесткому диску прямые ATA команды и соответственно проблем с остановкой двигателя нет. Проблема заключается в том, что в некоторых драйверах, вследствие их ущербности (nVidia, внешние контроллеры (S)ATA) такая возможность не реализована.
А вообще в панели управления есть настройки выключения (там можно время указать). Они где-то сохранены в реестре -> если поставить в 0 может он выключится?
CreateFile/ReadFile/WriteFile/... тоже отправляют IRP-запросы к драйверу. а DeviceIoControl() ну никак не отправит что-то другое кроме IRP_MJ_CONTROL.
Sorry, перепутал с IOCTL_* В общем, надо искать API из группы Power Management, хотя вряд ли они могут то, что нужно...