Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
5 / 5 / 0
Регистрация: 08.09.2011
Сообщений: 13

Считать секторы по очереди.

13.09.2011, 11:23. Показов 1816. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, я использую данный код для считывания 512 байт, на сколько я понял это 1-й сектор.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
hDevice = CreateFile("\\\\.\\D:", 
                    0,             
                    FILE_SHARE_READ, 
                    NULL,            
                    OPEN_EXISTING,    
                    0,                
                    NULL);           
 
        
      bResult = DeviceIoControl(hDevice,  
                                IOCTL_DISK_GET_DRIVE_GEOMETRY,  
                                NULL, 0, 
                                &pdg, sizeof(pdg),     
                                &junk,                
                                (LPOVERLAPPED) NULL);
Мне нужно считывать в цыкле кластеры поочереди один за другим, тоесть каждый раз по новые 512 байт. Подскажите как это реализовать?
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.09.2011, 11:23
Ответы с готовыми решениями:

Очереди. Каким образом считать две очереди из одного текстового файла?
Здравстуйте. В задании первый пункт состоит в том, что нужно сформировать две очереди по n элементов с помощью считки данных из...

По очереди считать каждый пиксель изображения
Я хочу загрузить изображение в паскаль из памяти компа и потом по очереди считать цвет каждого пикселя. Вот я загрузил изображение в...

Считать с очереди N начальных элементов и вывести их значения
Помогите пожалуйста с задачей. Нам еще не обьяснили тему, а уже задали задание: Есть число N>0 и указатели P1 и P2 на начало и конец...

15
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
13.09.2011, 11:43
Почему ты думаешь, что размер сектора 512 байт? В зависимости от параметров форматирования файловой системы сектор может быть много больше размером.
Насколько я понял из интерфейса, нужно последним аргументом передавать указатель на структуру OVERLAPPED с указанием в ней смещения.
А вообще, тебе точно потоки для работы не подходят?
1
5 / 5 / 0
Регистрация: 08.09.2011
Сообщений: 13
13.09.2011, 13:02  [ТС]
Не путай сектор с кластером! Кластер - объединение секторов. Сектор ячейка памяти на винте. А можно пример с OVERLAPPED для моего случая??
1
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
13.09.2011, 13:13
Правда хочешь услышать ответ от человека, путающего сектор с кластером?
Полагаю, что поле OVERLAPPED.offset задаёт смещение от начала. Тогда на каждой итерации делай +512 к смещению.
А ты уверен, что ReadFile тебе не подходит?

Добавлено через 52 секунды
И не забудь флаг FILE_FLAG_OVERLAPPED указать.

Добавлено через 1 минуту
Нет, я не прав. Это для асинхронной работы структура.
1
5 / 5 / 0
Регистрация: 08.09.2011
Сообщений: 13
13.09.2011, 14:59  [ТС]
ReadFile, подходит)))) Можно с ним пример со смещением на 512? =)

Добавлено через 7 минут
C++
1
ReadFile(hDevice, buf, 512, &dwBytesRead, NULL);
Я так понимаю, в этом случае я считаю первые 512 байт? А параметр смещения не сильно будет большого значения? Допустим я буду считывать 10 гигабайт, то есть по-идее нужно использовать int64. И если можно пример к примеру считывания первые 10 секторов, то есть первые 5 кбайт)
1
440hrc
13.09.2011, 15:15
Самое странное тут что парсинг кутакулы матрицы не отвечает на глобализацию периодичности...
Цитата Сообщение от zxzfranszxz Посмотреть сообщение
0,
это тоже очень интересно...

могу дать готовую прогу!
zxzfranszxz, если надо обращайся

Добавлено через 52 секунды
кстати не пробовал перегрузить комп?
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
13.09.2011, 15:34
Цитата Сообщение от zxzfranszxz Посмотреть сообщение
ReadFile, подходит)))) Можно с ним пример со смещением на 512? =)
А ты уверен, что тебе по 512 байт читать надо?
1
5 / 5 / 0
Регистрация: 08.09.2011
Сообщений: 13
13.09.2011, 15:45  [ТС]
Уверен) Вообще мне это все нужно для того что бы с раздела прочитать FAT (англ. File Allocation Table — «таблица размещения файлов»), то есть прочитать ее с раздела и вывести)
1
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
13.09.2011, 15:54
SetFilePointer и передать смещения.
Только это смещения от начала файла, я не уверен, совпадают ли они с секторами.
1
5 / 5 / 0
Регистрация: 08.09.2011
Сообщений: 13
13.09.2011, 15:56  [ТС]
А пример кода, хотя бы строчку!
1
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
13.09.2011, 16:04
Цитата Сообщение от zxzfranszxz Посмотреть сообщение
хотя бы строчку!
Внизу страницы... http://msdn.microsoft.com/en-u... 85%29.aspx
0
5 / 5 / 0
Регистрация: 08.09.2011
Сообщений: 13
13.09.2011, 16:19  [ТС]
Так его нужно использовать вместе с ReadFile?
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
13.09.2011, 16:28
Позиционируешь указатель и читаешь начиная с него. В ReadFile чтение происходит с текущей позиции в файле.
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
13.09.2011, 16:41
Цитата Сообщение от Deviaphan Посмотреть сообщение
Почему ты думаешь, что размер сектора 512 байт? В зависимости от параметров форматирования файловой системы сектор может быть много больше размером.
Размер сектора на жестких дисках обычно 512 байт, не так давно стали выпускать HDD с секторами по 4096 байт, может существуют и другие, но уж точно размер сектора не зависит от параметров форматирования ФС. А вот размер кластера зависит.

zxzfranszxz, здесь есть пример С++ чтение секторов диска
0
5 / 5 / 0
Регистрация: 08.09.2011
Сообщений: 13
13.09.2011, 17:12  [ТС]
Цитата Сообщение от bigredcat Посмотреть сообщение
zxzfranszxz, здесь есть пример С++ чтение секторов диска
Был там, но примера как перебрать все кластеры не нашел. Мне бы пример какой-то... Курсач здавать нада, а я не любитьель системного программирования))))
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
13.09.2011, 18:23
Ну, так используйте, например, GetDiskFreeSpace для определения размера кластера (lpSectorsPerCluster х lpBytesPerSector = BytesPerSector). Выкинте из указанного выше примера лишнее и замените соответсвующие значения на размер кластера. И будет вам счастье.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.09.2011, 18:23
Помогаю со студенческими работами здесь

можно ли считать данный код реализацией очереди
можно ли считать данный код реализацией очереди. и если нет, то почему. #include <stdlib.h> #include <stdio.h> ...

Оцените сборку пожалуйста. Нужно в основном считать считать и считать
Процессор Intel I7 8700K Вентилятор THERMALRIGHT MACHO DIRECT Материнская плата ASRock Z370 Pro Память G-Skill 16Gb x 4 Диск SSD...

Обеспечить операции ведения стека из начала очереди, дополнения и продвижения очереди
Доброе времени суток. Давно читаю ваш форум, и всегда находил ответы на вопросы, но на вопрос который сейчас задам не вашем и других...

Очереди. С помощью первой очереди упорядочить числа во второй и третьей очередях
Даны три очереди. Одна пуста а в двух других находятся натуральные числа. С помощью первой очереди упорядочить числа во второй очереди по...

Вывести содержимое очереди на экран и посчитать количество элементов образованной очереди
Дан текстовый файл. Проанализировать в программе содержимое файла, выберете из него имена и занесите в очередь. Выведете содержимое очереди...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru