Остановка двигателя HDD

Тема в разделе "WASM.WIN32", создана пользователем HCode, 11 июн 2007.

  1. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    Здравствуйте!
    Известен ли кому нибудь способ остановки двигателя в жестком диске без использования DeviceIOControl?
     
  2. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Power off! :)
     
  3. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    Может функцией энергосбережения? Вот только какой... :dntknw:
     
  4. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Это ты про юзермод чтоли? Конечно нет.
     
  5. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    Обычное приложение. Запускается с административными привелегиями.
     
  6. geroin.vxd

    geroin.vxd New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2006
    Сообщения:
    11
    В R0 зато это делается довольно красиво. Полистай тут- http://wasm.ru/article.php?article=apihook_3. MsRem постарался на славу. Смотри в разделе про CallGate.
     
  7. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    Дорога в никуда :dntknw:

    Охотно верю, но нужно в R3!
     
  8. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Что было бы, если каждый кулхацкер мог бы из ринг3 такое вытворять? Один из возможных способов тебе уже назвали.
     
  9. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    Был бы Win9x :)
     
  10. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    DeviceIOControl в купе с недокументированным кодом (2000, XP, XP SP1) и документированным (XP SP2, 2003, Vista) позволяет отправлять жесткому диску прямые ATA команды и соответственно проблем с остановкой двигателя нет. Проблема заключается в том, что в некоторых драйверах, вследствие их ущербности (nVidia, внешние контроллеры (S)ATA) такая возможность не реализована.
     
  11. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    А можно подробнее?
     
  12. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    1. IOCTL_IDE_PASS_THROUGH
    2. IOCTL_ATA_PASS_THROUGH
    3. +google
     
  13. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    Дравер + IRP_MJ_POWER, IRP_MN_SET_POWER не подходит.
     
  14. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    А можно как нибудь отправить IRP'ы - IRP_MJ_POWER, IRP_MN_SET_POWER без использования драйвера?
     
  15. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    А вообще в панели управления есть настройки выключения (там можно время указать).
    Они где-то сохранены в реестре -> если поставить в 0 может он выключится?
     
  16. Win2k3

    Win2k3 New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    9
    А на что по твоему DeviceIoControl()? Это единственный нормальный способ отправить IRP из юзермода.
     
  17. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    CreateFile/ReadFile/WriteFile/... тоже отправляют IRP-запросы к драйверу.
    а DeviceIoControl() ну никак не отправит что-то другое кроме IRP_MJ_CONTROL.
     
  18. Win2k3

    Win2k3 New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2006
    Сообщения:
    9
    Sorry, перепутал с IOCTL_*

    В общем, надо искать API из группы Power Management, хотя вряд ли они могут то, что нужно...