Как определяют физические диски и виртуальные.

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

  1. serega28

    serega28 Member

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

    Определить физические, логические диски (виртуальные (BesCrypt, Алкоголь), если в DVD всунут диск, с флешек).
    А потом получить указатель на данные диска для дальнейшего манипулирования с ними.

    Помогите пожалуйста куда копать.
    Гугл меня не понимает, фигню ищет :)))
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    //offtop
    еще бы
    задавай вопросы по гугловски
     
  3. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    Мне сырцы нуно
     
  4. ams007

    ams007 New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2007
    Сообщения:
    86
    QueryDosDevices - получил буквочки дисков, GetDriveType по каждой буквочке - получил тип устройства, ну и IOCTL_DISK(STORAGE)_GET_DRIVE_GEOMERTY + IOCTL_STORAGE_QUERY_DEVICE_PROPERTY зашлифовал. Ключевые слова я те написАл, дальше сам!
     
  5. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    А если букв нету, разделы линуха и другие например
     
  6. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    CreateFile \\.\PhisicalDriveX где Х число
    и вперед, анализируешь таблицу партишенов и выясняешь что где
     
  7. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    нут это хорошо для веников, а как быть с флешками и прочими нечистями?
     
  8. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    а ты в WinHEX имена посмотри (у флешек и у
    ) и увидишь, что имена у них такие же!
    ЗЫ: А веник тоже через CreateFile можно открыть? а комнату убрать заставить?
     
  9. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    Забудь про буквы \\.\C и т.д. забудь про \\.\PhisicalDriveX.
    Можно проще сделать. тот же винхекс с другого начинается осмотр.
     
  10. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    serega28
    что ты имеешь ввиду. он как раз так и обращается - посмотри filemon, или выкладывай полностью свою точку зрения! а то мы мысли читать не умеем (пока).
     
  11. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    Сначала мы собираем вроде бы через FindFirstVolume и GetVolumeInformaton. ну и тут потом видимо можно узнать к какому уже физическому устройству относятся найденные тома, дальше я должен получить указатель на начало данных на диске (нулевой сектор поидее), а потом я уже сам с помощью своих функций работаю с файловой системой.

    Вот что я имею и хочу ввести :))). только в самом начале я застрял.
     
  12. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    кул. чтобы под винду получить доступ к RAW данным диска 1 - его нужно открыть! (дальше сам догадаешься?)
     
  13. Exp10der

    Exp10der Мастер дзена

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    337
    Адрес:
    Красноярск
    Короче идёшь на http://t13.org через драйвер лезешь к I/O портам и вперёд, ATA команды имхо рулят, ещё можно http://t10.org/ глянуть.
     
  14. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Физические диски можно определить через SetupAPI. Документация есть так, что если захочешь -- разберешся
     
  15. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    GetLogicalDrives возращает список всех логических дисков.
    GetDriveType позволят узнать тип конкретного логического диска.
     
  16. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    Без работы с физическими портами твое поделие (например, защита) будет обходиться на раз. А при работе с портами тебе придется придется писать драйвера под флешки, как ты правильно догадываешься. Накопители USB, Ethernet, Firewire и т.п.
     
  17. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Как вариант: перечислять через native api.
    Открываешь \Global?? (ZwOpenDirectoryObject), перечисляешь там объекты (ZwQueryDirectoryObject), ищешь там символьные ссылки вида X:, резолвишь их (ZwQuerySymbolicLinkObject) и смотришь куда они указывают.
    Потом тоже самое для \Sessions\X\DosDevices\Y (там найдешь локальные для юзера ссылки типа сетевых дисков).

    Дальше смотришь что напарсил. \Device\HarddiskVolumeX - раздел винта. и так далее.
     
  18. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    GetLogicalDriveStrings, IOCTL_DISK_GET_PARTITION_INFO