Vista и CreateFile

Тема в разделе "WASM.WIN32", создана пользователем serega28, 12 дек 2008.

  1. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    Подскажите как реализуется эта вещь в Висте

    Код (Text):
    1. CreateFile("\\\\.\\PHYSICALDRIVE0", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
     
  2. Clear_Energy

    Clear_Energy Алексей

    Публикаций:
    0
    Регистрация:
    3 ноя 2008
    Сообщения:
    375
    Никак вроде бы )) (С помощью КриэйтФайл никак)
     
  3. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    Если сторонние дефрагментаторы и прочие вещи работают значит есть способы.
     
  4. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    С помощью CreateFile открыть можно. И читать можно.
    Писать можно только в нулевую дорожку, в несмонтированные или залоченные volumes, а также в неразмеченные области диска.

    Есть драйвер, позволяющие писать куда угодно.
    Но он платный. http://www.eldos.com/rawdisk/
     
  5. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Дефрагментаторы работают через стандартный Defrag API
     
  6. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    У меня не получилось.
     
  7. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Что именно не получилось ?
    Run as Administrator ?
     
  8. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    Запускал ни какого результата.
     
  9. Rodin

    Rodin New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2007
    Сообщения:
    125
    Дефрагментаторы работают с томами, т.е. \\.\с: и FSCTL_GET_RETRIEVAL_POINTERS.

    В висте админ обрезанный. Попробуй отключить UAC или перейти на root
     
  10. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Да неучто нет ни одного дефрагментатора, не раротающего с жестким диском самостоятельно?
     
  11. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Я знал один - нортоновский. Но он глючил не по детски на NTFS. Именно из-за прямой работы с диском. Не знаю жив ли он сейчас.
    Возможно есть еще какие, но в любом случае они под вистой не заработают.
     
  12. OracleLover

    OracleLover New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    4
    а нет примеров работы с данной библиотекой, а то у меня под вистой тоже CreateFile не работает
     
  13. OracleLover

    OracleLover New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    4
    я про Defrag API
     
  14. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    OracleLover
    Ultra defrag на sourceforge.net можешь посмотреть. Там вроде собственный драйвер.
     
  15. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Sol_Ksacap
    Из документации:
    The main disadvantage of Ultra Defragmenter is that they are based on MS defragmenting interface that has very ugly implementation. We can't change its behavior because it's a part of filesystem drivers (ntfs.sys, fastfat.sys) that are too complex and not open source to modify or replace them.
     
  16. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    OracleLover
    Посмотри http://www.kessels.com/Jkdefrag/ Идет с исходниками.
    Ultra Defragmenter ужасно тормозной.
     
  17. OracleLover

    OracleLover New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    4
    спасибо, на делфе навена исходников уже не найду? Я понимаю что форму сишный, но исходники и вообще хоть что-то по дефрагментаиции гуголь посылает на сишку
     
  18. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    Читал статью от майкрософта,
    http://support.microsoft.com/kb/942448
    Там написано про 5 условий.. Они все должны выполняться "сразу".
    Получалось записать винхексом в первый сектор, и в последний, хотя винхексовый анализатор ФС указал на Unpartitionable Space, и в его то начале и не получилось записать.

    Вообще вопрос к тому, что обломали запись на диски по секторам в висте и 7-ке?
     
  19. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Только щас узнал? Пару лет уже как обломали.
     
  20. irrona

    irrona Member

    Публикаций:
    0
    Регистрация:
    26 май 2004
    Сообщения:
    178
    Адрес:
    Тирасполь
    serega28

    У меня в проге на VB Net используется запись в сектора дискеты следующим образом.
    1) CreateFile c GENERIC_READ+GENERIC_WRITE и FILE_SHARE_READ+FILE_SHARE_WRITE
    2) DeviceIoControl с FSCTL_LOCK_VOLUME
    3) DeviceIoControl с FSCTL_DISMOUNT_VOLUME
    4) DeviceIoControl с FSCTL_ALLOW_EXTENDED_DASD_IO
    5) SetFilePointer
    6) и пишем WriteFile

    Работает и под Вистой тоже.