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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
01.09.2012, 18:09     Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB #1
доброго времени суток.
задали такую лабораторную.
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()
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2012, 18:09     Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB
Посмотрите здесь:

Составить программу, моделирующую заполнение гибкого магнитного диска C++
C++ Составить программу, проверяющую истинность условий и выводящую на экран соответствующие сообщения
C++ Написать программу, выводящую на экран треугольник
Написать программу выводящую на экран C++
Необходимо составить программу, выводящую на экран матрицу данного вида (подробнее внутри) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
01.09.2012, 18:50     Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB #2
lexflax, А ви под гассовый ДОС пишете?

И еще одно: почему у вас структура _BOOT_ а вы обьявляете BOOT_?

И еще одно: сфигли у вас структура после мейна и зачем вам прототип мейна?
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
01.09.2012, 18:52  [ТС]     Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB #3
а как понять гассовый? есть много разновидностей доса? у меня просто как бы в задание на прописанно на каком писать да и в решебнике не указанно на каком пишется
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
01.09.2012, 18:53     Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB #4
lexflax, имеется в виду рассовый)
у вас дос установлен или винда?
просто тут возможно кроется ошибка.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
01.09.2012, 18:54  [ТС]     Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB #5
ну винда на компе стоит семерка, разве дос в ней не идет автоматически?
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
01.09.2012, 18:57     Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB #6
lexflax, а почему вы уперлись именно в этот вопрос?
Выше я написал причину того что не компилится.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
01.09.2012, 18:57  [ТС]     Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB #7
вот собственно файл с контрольной в которой и был код который не работает(((
Вложения
Тип файла: docx Организация ЭВМ и Систем.docx (51.5 Кб, 20 просмотров)
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
01.09.2012, 18:58  [ТС]     Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB #8
да там масса причин, ну вы конечно одну из них явно указали)
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
01.09.2012, 19:02     Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB #9
lexflax,
Цитата Сообщение от Invader_Zim Посмотреть сообщение
И еще одно: почему у вас структура _BOOT_ а вы обьявляете BOOT_?
И еще одно: сфигли у вас структура после мейна и зачем вам прототип мейна?
Чем не причины?

и какие ошибки компилятор выдает?

У меня линукс, и поэтому ваш код у меня железно не скомпилится.
и даже еслиб компилился яб не компилил.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
01.09.2012, 19:11  [ТС]     Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB #10
Цитата Сообщение от Invader_Zim Посмотреть сообщение
И еще одно: сфигли у вас структура после мейна и зачем вам прототип
структура после майна потому что она должна быть в отдельном файле как я понял но как его создать и подвязать к программе не знаю
В файле SYSP.H содержится структура для работы с загрузочной записью, описывающая расширенный блок параметров BIOS EBPB и собственно загрузочную запись BOOT:
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2012, 19:55     Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB
Еще ссылки по теме:

Создать программу выводящую симметричную матрицу на экран C++
C++ Составить программу, выводящую на экран квадрат Пифагора - таблицу умножения.
Составить программу, выводящую на экран информацию о наличии товаров на складе C++

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

Или воспользуйтесь поиском по форуму:
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
01.09.2012, 19:55     Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB #11
lexflax, вы на С++ хоть раз писали?
Вы знаете что такое заголовочный файл?
вы наете что делает деректива #include?
Yandex
Объявления
01.09.2012, 19:55     Составить программу, читающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB
Ответ Создать тему
Опции темы

Текущее время: 21:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru