Форум программистов, компьютерный форум CyberForum.ru

Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Заполнять и/или редактировать данные о жильцах http://www.cyberforum.ru/cpp-beginners/thread645417.html
в гостинице имеется 15 номеров,из них 5 одноместных и 10 двуместных. составить программу,которая заполняет и/или корректирует данные о жильцах и по фамилии определяет номер проживания жильца.программа запрашивает фамилию жильца. -если жильца с такой фамилией нет,об этом выдается сообщение. -если жилец с такой фамилией в гостинице единственный,программа выдает фамилию жильца и номер проживания....
C++ Визуализация Добрый день, подскажите пожалуйста, чем лучше отображать 2d графику - хочу поиграться с алгоритмами генерирования карт и хочется видеть результат сразу в цвете, а не в ascii-графике... Что можете посоветовать? Какой-нибудь графический движок или просто библиотеку gui. Главное, чтобы было несложно освоить. Если будет некий конструктор интерфейса (как для winform, например) было бы вообще здорово.... http://www.cyberforum.ru/cpp-beginners/thread645414.html
Перегрузка оператора - C++
В своём классе я перегрузил оператор -,но в функции,использующей вычитание возникает ошибка error C2678: бинарный "-": не найден оператор, принимающий левый операнд типа "const Date" (или приемлемое преобразование отсутствует) 1> d:\projects\billing\billing\date.h(34): может быть "const Date &Date::operator -(const Date &)" 1> при попытке сопоставить список аргументов "(const...
Преобразование двумерного массива в одномерный C++
Дан двумерный массив. Сформировать одномерный массив, каждый элемент которого равен сумме элементов соответствующей строки двумерного массива меньших числа n.
C++ Вернуть на старт http://www.cyberforum.ru/cpp-beginners/thread645380.html
Всем привет:). Говорю сразу - я жесткий нуб. Начал изучение C++ буквально сегодня. Прошу вас, не относитесь ко мне как к идиоту, я как раз пришел на этот форум, что бы чему-то научиться. Вот у меня возникла проблемка. Я первый раз пишу программ самостоятельно, без туториала. Решил написать простенькую консольную, где можно будет вводить два числа, программа будет складывать эти числа и...
C++ Прочесть строку сишным способом(фопен) Добрый день. Есть необходимость прочесть определенную строку(по номеру) используя стандартный ввод/вывод си, и не используя getline(). Как это реализовать? есть функция для получения индекса начала строки? кроме как в цикле проверять на перенос строки подробнее

Показать сообщение отдельно
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627

Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB - C++

01.09.2012, 18:09. Просмотров 1268. Ответов 10
Метки (Все метки)

доброго времени суток.
задали такую лабораторную.
2. Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB.
как сделать вообще ума не приложу.
нашел так сказать решебник с кодом на сайте но код не запускается правильно откомпилоровать не могу, кто хорошо понимает в с++ помоги плиз сделать чтоб работал.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
Программа показывающая содержимое загрузочной записи для указанного логического диска:
 
#include <stdio.h>
 
#include <malloc.h>
 
#include <dos.h>
 
#include "sysp.h"
 
void main(void);
 
void main(void) {
 
BOOT _far *boot_rec;
 
int i, status;
 
char drive;
 
printf("n"
 
"nЧтение загрузочной записи"
 
"nлогического диска"
 
"n");
 
// Заказываем буфер для чтения BOOT-записи.
 
boot_rec = _fmalloc(sizeof(*boot_rec));
 
// Запрашиваем диск, для которого необходимо
 
// выполнить чтение загрузочной записи.
 
printf("n"
 
"nВведите обозначение диска, для просмотра"
 
"nзагрузочной записи (A, B, ...):");
 
drive = getche();
 
// Вычисляем номер дисковода
 
drive = toupper(drive) - 'A';
 
// Читаем загрузочную запись в буфер
 
status = getboot((BOOT _far*)boot_rec, drive);
 
// Если произошла ошибка (например, неправильно указано
 
// обозначение диска), завершаем работу программы
 
if(status) {
 
printf("nОшибка при чтении BOOT-сектора");
 
exit(-1);
 
}
 
printf("nСодержимое BOOT-сектора для диска %c",drive+'A');
 
printf("n"
 
"nOEM - название фирмы и версия DOS - ");
 
for(i=0;i<8;i++) printf("%c",boot_rec->oem[i]);
 
printf("nНомер диска - %x"
 
"nПризнак расширенной BOOT-записи - %c"
 
"nСерийный номер диска - %04X-%04X"
 
"nМетка диска - ",
 
(unsigned char)boot_rec->drive,
 
boot_rec->signature,
 
boot_rec->volser_hi,
 
boot_rec->volser_lo);
 
for(i=0;i<11;i++) printf("%c",boot_rec->label[i]);
 
printf("nФормат FAT - ");
 
for(i=0;i<8;i++) printf("%c",boot_rec->fat_format[i]);
 
printf("nnИнформация из BPB:n");
 
printf("nКоличество байтов в секторе - %d"
 
"nКоличество секторов в кластере - %d"
 
"nЗарезервировано секторов - %d"
 
"nКоличество копий FAT - %d"
 
"nМакс. количество файлов в корневом каталоге - %d"
 
"nОбщее количество секторов на диске - %d"
 
"nБайт-описатель среды - %x"
 
"nКоличество секторов в FAT - %d",
 
boot_rec->bpb.sectsize,
 
boot_rec->bpb.clustsize,
 
boot_rec->bpb.ressecs,
 
boot_rec->bpb.fatcnt,
 
boot_rec->bpb.rootsize,
 
boot_rec->bpb.totsecs,
 
(unsigned char)boot_rec->bpb.media,
 
boot_rec->bpb.fatsize);
 
printf("nnИнформация из расширения BPB:n");
 
printf("nСекторов на дорожке - %d"
 
"nКоличество головок - %d"
 
"nСкрытых секторов для диска < 32M - %d"
 
"nСкрытых секторов для диска >= 32M - %d"
 
"nВсего секторов на диске - %u",
 
boot_rec->bpb.seccnt,
 
boot_rec->bpb.headcnt,
 
boot_rec->bpb.hiddensec_low,
 
boot_rec->bpb.hiddensec_hi,
 
boot_rec->bpb.totsecs);
 
// Освобождаем буфер
 
_ffree(boot_rec);
 
}
 
В файле SYSP.H содержится структура для работы с загрузочной записью, описывающая расширенный блок параметров BIOS EBPB и собственно загрузочную запись BOOT:
 
#pragma pack(1)
 
/Расширенный блок параметров BIOS/
 
typedef struct _EBPB_ {
 
unsigned sectsize;
 
char clustsize;
 
unsigned ressecs;
 
char fatcnt;
 
unsigned rootsize;
 
unsigned totsecs;
 
char media;
 
unsigned fatsize;
 
unsigned seccnt;
 
unsigned headcnt;
 
unsigned hiddensec_low;
 
unsigned hiddensec_hi;
 
unsigned long drvsecs;
 
} EBPB;
 
/Загрузочная запись/
 
typedef struct _BOOT_ {
 
char jmp[3];
 
char oem[8];
 
EBPB bpb;
 
char drive;
 
char reserved;
 
char signature;
 
unsigned volser_lo;
 
unsigned volser_hi;
 
char label[11];
 
char fat_format[8];
 
char boot_code[450];
 
} BOOT;
 
#pragma pack()
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru