Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с жёстким диском 
:(
    Опции темы
_Leo_
Дата 13.9.2007, 04:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 12.9.2007

Репутация: -1
Всего: 0



Задача: Написать программу на Visual C++, которая позволила бы из под Windows удалить раздел FAT 32, востановить 
раздел. 

Что то типа мини Partition Magic. 

Вроде есть какая то WinAPI функция которая позволяет это проделать, хотя точно не знаю.
Инструментарий: желательно MS Visual Studio 2005, хотя можно и в Visual C++ 6 или Builder 6.
Посоветуйте, где начать копать?
PM MAIL   Вверх
EnergoHokum
Дата 13.9.2007, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: 3
Всего: 6



Функция CreateFile:
перевод мой: вы можете использовать функцию CreateFile для открытия физического диска или тома. Эта функция возвратит handle, который может быть использован функцией DeviceIoControl. Это открывает доступ к таблице разбиения дисков. Это очень опасно, убедитесь (тут неинтересно)... Когда вы открываете физический диск x, строка параметра lpFileName должна иметь следующую форму: \\.\PHYSICALDRIVE<x>. Нумерация дисков начинается с нуля. Когда открывается том, то строка параметра lpFileName должна иметь следующую форму: \\.\C:
Ну, про DeviceIoControl если нужно - тоже переведу.

Это сообщение отредактировал(а) EnergoHokum - 13.9.2007, 07:26
PM MAIL ICQ   Вверх
W4FhLF
Дата 13.9.2007, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Нет никакой API типа DeleteFat32Partition или CreateFat32Partition. Начни с изучения спецификации этой ФС. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
jonie
Дата 13.9.2007, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



W4FhLF ты может копал или слышал... что скажешь насчет того как это делает оснастка винды (диспетчер носителей).... там есть методы для дефрагментации (точто есть DefragmentationAPI) , а что насчет разделов?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
W4FhLF
Дата 13.9.2007, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Цитата(jonie @  13.9.2007,  19:01 Найти цитируемый пост)
что скажешь насчет того как это делает оснастка винды (диспетчер носителей)


Что именно делает то? И диспетчер носителей - это ПКМ на Мой Компьютер > Управление Компьютером > Запоминающие устройства > Управление дисками? 

Инфу о таблице разделов с точки зрения разработчика можешь почитать вот здесь:
http://dotfix.net/[email protected]
http://symon.ru/

Можно на http://www.sourceforge.net/ поискать примеры, исходники Boot Easy + посмотреть исходники React OS || Lunix. 

Глянуть http://www.codeproject.com/system/w2003_defraginterface.asp + я давно хотел покопать библиотеку винды для форматирования и проверки FAT32 и NTFS - ifsutil.dll. Она видимо и используется диспетчером носителей, точно не знаю. 







--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
jonie
Дата 13.9.2007, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



Цитата
Что именно делает то? И диспетчер носителей - это ПКМ на Мой Компьютер > Управление Компьютером > Запоминающие устройства > Управление дисками? 
дамс.
ну или штаный форматтер винды , тот что format ....

вот что нашел...
http://www.microsoft.com/technet/sysintern...Code/fmifs.html
будешь рыть где-нить отпишись ))
странная фигня, но с оригинального сайта похоже вальнули)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
W4FhLF
Дата 13.9.2007, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Цитата(jonie @  13.9.2007,  21:16 Найти цитируемый пост)
странная фигня, но с оригинального сайта похоже вальнули)


MS купила sysinternals, а Руссинович сейчас в MS и работает, если ты об этом. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
jonie
Дата 13.9.2007, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



упс ссыл битый я это имел в виду: http://arcadecontrols.com/Mirrors/mirror/w...Code/fmifs.html



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
W4FhLF
Дата 14.9.2007, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Ага, полезно. Так ты скачал исзодники? Меня с этой ссылки опять на MS перекидывает.


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
dumb
Дата 15.9.2007, 04:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



court.shrock.org/sysinternals-bt/
PM MAIL   Вверх
GIK
Дата 15.9.2007, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Цитата

Инфу о таблице разделов с точки зрения разработчика можешь почитать вот здесь:
http://dotfix.net/[email protected]
http://symon.ru/



Цитата

Да в этот объем даже графический интерфейс с мышью и голой красавицей на обоях уместить можно. Но мы не будем! Настоящие хакеры работают в текстовом режиме с командной строкой, а красавиц лучше трахать, чем смотреть.

 smile 


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
_Leo_
Дата 17.9.2007, 05:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 12.9.2007

Репутация: -1
Всего: 0



EnergoHokum

А можно пожалуйста ссылку на оригинал, если конечно он не на китайском.)))
PM MAIL   Вверх
dumb
Дата 17.9.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



Цитата(_Leo_ @  17.9.2007,  06:37 Найти цитируемый пост)
А можно пожалуйста ссылку на оригинал
CreateFile
PM MAIL   Вверх
_Leo_
Дата 27.9.2007, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 12.9.2007

Репутация: -1
Всего: 0



EnergoHokum


Почитал на днях MSDN,полазил в Инете, интересно пишут.


На сколько я понял видимость раздела Windows, определяется значением кода типа раздела System ID в таблице разделов.Если он равен нулю, то раздел не виден.

Структура MBR
Смещение (offset) Размер (Size) Содержимое (contents)
-------------------------------------------------------------------------
0 446 Программа анализа таблицы разделов
и загрузки System Bootstrap
с активного раздела
-------------------------------------------------------------------------
0x1BE 16 Partition 1 entry ( элемент таблицы разделов)
-------------------------------------------------------------------------
0x1CE 16 Partition 2 entry
-------------------------------------------------------------------------
0x1DE 16 Partition 3 entry
-------------------------------------------------------------------------
0x1EE 16 Partition 4 entry
-------------------------------------------------------------------------
0x1FE 2 Сигнатура 0xAA55

Структура записи элемента таблицы разделов показана в таблице 2. 




Структура записи элемента таблицы разделов

Смещение Размер поля, Содержание
байт
-------------------------------------------------------------------------
0x00 1 Признак активности (0 - раздел не активный,
0x80 - раздел активный)
--------------------------------------------------------------------------
0x01 1 Номер головки диска, с которой
начинается раздел
---------------------------------------------------------------------------
0x02 2 Номер цилиндра и номер сектора, с которых
начинается раздел
----------------------------------------------------------------------------
0x04 1 Код типа раздела System ID
----------------------------------------------------------------------------
0x05 1 Номер головки диска, на которой
заканчивается раздел
----------------------------------------------------------------------------
0x06 2 Номер цилиндра и номер сектора, которыми
заканчивается раздел
----------------------------------------------------------------------------
0x08 4 Абсолютный (логический) номер начального
сектора раздела
----------------------------------------------------------------------------
0x0C 4 Размер раздела (число секторов)


Только не совсем понял как читать/записать в этот System ID с помощью контрол-кода
IOCTL_DISK_GET_DRIVE_LAYOUT_EX/IOCTL_DISK_SET_DRIVE_LAYOUT_EX.

Вроде надо работать со структурой PARTITION_INFORMATION_EX или просто 
отсчитать смещение в 450 байт от значения StartingOffset и жахнуть туда ноль.

Вобшем нажал на кнопочку и раздел fat32 не виден, нажал на другую, и о радость!!!,
он появился.

PM MAIL   Вверх
Rapalex
Дата 27.9.2007, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: нет
Всего: 8



Цитата(_Leo_ @  27.9.2007,  08:30 Найти цитируемый пост)
Структура MBR

гдето так.

_Leo_, я такое на втором курсе делал, да и то под досом (задание такое было).
Под виндой файл открыть можно, да делал, читал MBR, но уж сильно сомневаюсь что ХР даст тебе туда чтонить записать.

И вообще это что лаба?




--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1301 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.