|
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
|
||||||
С++ чтение секторов диска27.02.2011, 22:36. Показов 35115. Ответов 31
Метки нет (Все метки)
как по очереди прочитать все сектора на диске?
по идее должна использоваться функция ReadFile(hDevice, buf, 512, &dwBytesRead, NULL); но где подставить номер сектора или как перебрать все? и как из функции DeviceIoControl вытащить количество секторов вот сам код до которого додумался, но далее буксую на месте, надеюсь на подсказку)
0
|
||||||
| 27.02.2011, 22:36 | |
|
Ответы с готовыми решениями:
31
Чтение секторов жёсткого в DOS Чтение секторов жесткого диска Ремап секторов диска с AF |
| 28.02.2011, 16:56 | |||||||||||||
Добавлено через 23 минуты Читать дисковые устройства нужно квантами кратными размеру сектора. Если сектор 512 байт, то и читать нужно по 512 байт. Но в целях оптимизации лучше увеличить это значение. Например, по 4096 байт. Добавлено через 5 часов 46 минут Кстати, открывается раздел дискового устройства, а запрашиваются сведения о самом дисковом устройстве. Попробуй выполнить запрос
1
|
|||||||||||||
|
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
|
|
| 28.02.2011, 21:52 [ТС] | |
|
спасибо
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
|
| 28.02.2011, 23:52 | |
|
давненько я не занимался дисками (со времен DOS)
но помоему для ОС минимальным значением является не сектор а клястер для IBM размер сектора 512 (по крайней мере других не видел) С уважением Валерий Добавлено через 1 минуту под ОС я имел ввиду FAT(12,16,32) NTFS
0
|
|
|
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
|
||||||
| 01.03.2011, 08:55 [ТС] | ||||||
|
а можно байты прочтенные функцией
0
|
||||||
| 01.03.2011, 10:20 | ||||||||
|
Добавлено через 2 минуты partos1,
1
|
||||||||
|
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
|
||||||
| 01.03.2011, 23:30 [ТС] | ||||||
0
|
||||||
| 02.03.2011, 10:13 | ||||||
|
А зачем вы определяете структуру заново
Добавлено через 23 минуты Я смотрю вы используете ограничение цикла i < c, а c у вас не инициализирована. Потом в цикле вы присваиваете c = i / a * 100. Все это очень подозрительно выглядит ![]() Еще вы используете очень маленький буфер (512 байт) и выполняете вычисления в цикле. Это на скорость влияет (раздел 8ГБ будет час копироваться). Увеличьте буфер, уберите ненужные вычисления из цикла. А лучше модифицируйте мой код (выше). Замените в нем file = CreateFileA("E:\\partition.img", на окртытие раздела и выкинте из него перемещения указателей в файле.
0
|
||||||
|
7 / 7 / 1
Регистрация: 02.03.2011
Сообщений: 19
|
||
| 02.03.2011, 11:06 | ||
|
0
|
||
| 02.03.2011, 13:25 | |
|
barmaley2005 Ошибся я, не 2048, а 4096. Но такие диски уже есть
Переход к жестким дискам нового формата с секторами размером 4 КБ
0
|
|
|
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
|
||||||
| 02.03.2011, 16:01 [ТС] | ||||||
|
почему-то буксует открытие 2 го диска (не рабатывает функций createFile (////.//F)
0
|
||||||
| 02.03.2011, 16:50 | ||||||
|
Я забыл про то, что файл реально создавался. Для дисковых устройств допустим только OPEN_EXISTING - открываем только существующий раздел.
И, конечно, данные раздела, на который пишешь, потеряешь. Любая ошибка может обернуться серьезными проблемамиО_о. Совету эксперементировать на виртуальной машине
1
|
||||||
|
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
|
|
| 02.03.2011, 17:47 [ТС] | |
|
теперь не хочет работать функция writefile
0
|
|
|
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
|
|
| 02.03.2011, 18:25 [ТС] | |
|
0
|
|
|
7 / 7 / 1
Регистрация: 02.03.2011
Сообщений: 19
|
|||||||
| 02.03.2011, 18:34 | |||||||
0
|
|||||||
|
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
|
||||||
| 02.03.2011, 18:47 [ТС] | ||||||
|
вот сам код
0
|
||||||
| 02.03.2011, 19:23 | |
|
Странно, но у меня все работает. Сейчас специально добавил в VMware два отдельных диска (виртуальных конечно, с распределением под них дискового пространства), создал на каждом по разделу, задал разные метки, на первый добавил файл. Запустил программу. Все скопировалось. Только результаты были видны не сразу (и F5 не помогло), пришлось в Управлении дисками изменить букву диска (удалить букву, а потом добавить). И все OK. Оба диска стали с одинаковой меткой и файл на втором диске появился и содержимое в нем сохранилось.
У вас вобще процесс копирования не начинается? Вы копируете с флешки на флешку?
0
|
|
|
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
|
|
| 02.03.2011, 19:33 [ТС] | |
|
да с флешки на флешку
цикл do while если функцию writefile убрать читает без проблем при добавление writefile на первом такте работы валетает
0
|
|
| 02.03.2011, 19:33 | |
|
Помогаю со студенческими работами здесь
20
Чтение секторов с CD Найти количество кластеров и секторов диска Количество секторов, кластеров и серийник диска
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|