С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 13
1

Определить резидентные драйверы в памяти компьютера

22.06.2015, 00:37. Показов 1345. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
/*--------------"Просмотр списка драйверов."--------------*/
#include <dos.h>
#include <conio.h>
/*-----------------------Константы----------------------- */
#define byte unsigned char
#define word unsigned int
#define ATR(x,z) if(drv->attr&x){cprintf("     %s\n\r",z);y++;}
#define DA(x,y) (struct DR_HEAD *)MK_FP(x,y);
#define VSEG 0xb800       /* Сегментный адрес видеопамяти */
#define byte unsigned char
#define word unsigned int
#define Enter 13
#define rx 50
#define ry 13
int xk,yk;
word cc;
byte bm[rx][ry][2];
8struct DR_HEAD { /* заголовок драйвера */
   struct DR_HEAD *next;
   word attr, strat_addr, intr_addr;
   char name[8];
   } *drv;  /* адрес текущего драйвера */
struct DR_HEAD *clock, *con;  /* Адреса CLOCK$ и CON */
union REGS rr;
struct SREGS sr;
int i, y, y1;
/*---------------------------------------------------*/
void clrbuf(void)
{
 while(kbhit()) getch();
}
/*--------------Чтение символа из видеопамяти-------------*/
byte GetSym(x1,y1)
int x1,y1;
{
 return(peekb(VSEG,y1*160+x1*2));
}
/*-------------Чтение атрибута из видеопамяти-------------*/
byte GetAtr(x1,y1)
int x1,y1;
{
 return(peekb(VSEG,y1*160+x1*2+1));
}
/*-------------Запись символа в видеопамять---------------*/
void PutSym(x1,y1,sym)
int x1,y1;
byte sym;
{
 pokeb(VSEG,y1*160+x1*2,sym);
}
/*-------------Запись атрибута в видеопамять--------------*/
void PutAtr(x1,y1,atr)
8int x1,y1;
byte atr;
{
 pokeb(VSEG,y1*160+x1*2+1,atr);
}
/*--------------------------------------------------------*/
void MemW(x,y,xr,yr)
int x,y,xr,yr;
{
 int i,j;
 for (j=y;j<(y+yr);j++)
  for (i=x;i<(x+xr);i++)
   {
    bm[i][j][0]=GetSym(i,j);
    bm[i][j][1]=GetAtr(i,j);
   }
}
/*--------------------------------------------------------*/
void RmmW(x,y,xr,yr)
int x,y,xr,yr;
{
 int i,j;
 for (j=y;j<(y+yr);j++)
  for (i=x;i<(x+xr);i++)
   {
    PutSym(i,j,bm[i][j][0]);
    PutAtr(i,j,bm[i][j][1]);
   }
}
/*--------------------------------------------------------*/
void ClrW(x1,y1,x2,y2,s,a)
int x1,y1,x2,y2;
byte s,a;
{
 int i,j;
 for (j=y1;j<y2;j++)
  for (i=x1;i<x2;i++)
   {
    if (s!=0) PutSym(i,j,s);
    PutAtr(i,j,a);
   }
}
/*--------------------------------------------------------*/
void FlDrv(void)
{
 int xm,ym;
 xm=wherex();
 ym=wherey();
 MemW(0,1,rx,ry);
 ClrW(1,2,rx,ry,0,7);
 ClrW(0,1,rx-2,ry-2,32,16);
 gotoxy(1,2);
 textattr(15+16*3);
 cprintf("***         Атрибуты драйвера %5u          ***",cc);
 gotoxy(1,3);
 textattr(15+16);
 if (drv==clock) cprintf("     активный CLOCK$");
 if (drv==con) cprintf("     активный CON");
 gotoxy(1,4);
 textattr(14+16);
 if (drv->attr&0x8000)
 {
  ATR(1,"консоль ввода")
  ATR(2,"консоль вывода")
  ATR(4,"нулевое устройство")
  ATR(8,"CLOCK$ (часы)")
  ATR(0x2000,"поддерживает OUB")
 }
 else
 {
  ATR(2,"32-байтный адрес сектора")
  ATR(0x2000,"читает media FAT")
 }
 ATR(0x40,"поддерживает функции DOS 3.2")
 ATR(0x800,"поддерживает Open/Close")
 ATR(0x4000,"поддерживает IOCTL")
 gotoxy(1,12);
 textattr(15+16*3+128);
 cprintf("***          Нажмите любую клавишу...        ***");
 if (getch()==0) getch();
 RmmW(0,1,rx,ry);
 gotoxy(xm,ym);
}
/*--------------------------------------------------------*/
main() {
  int c;
  /* получение адреса CVT */
  rr.h.ah=0x52; intdosx(&rr,&rr,&sr);
  /* адрес драйвера часов */
  clock=DA(peek(sr.es,rr.x.bx+10),peek(sr.es,rr.x.bx+8));
  /* адрес драйвера консоли */
  con=DA(peek(sr.es,rr.x.bx+14),peek(sr.es,rr.x.bx+12));
  /* адрес NUL-драйвера */
  textattr(10);
  clrscr();
  cprintf("---------------");
  cprintf("              Лабораторная работа N11             ");
  cprintf("---------------");
  cprintf("---------------");
  cprintf("             Просмотр списка драйверов.           ");
  cprintf("---------------");
  drv=DA(sr.es,rr.x.bx+34);
  textattr(7);
  gotoxy(8,3);
  cprintf("Нажимайте <SpaceBar> ,а для рассмотрения атрибутов",
           "драйвера <Enter>.");
  textattr(12);
  gotoxy(28,4);
  cc=1;
  cprintf("Список драйверов устройств :\n\r");
  while(FP_OFF(drv)!=0xffff) {
    textattr(15);
    cprintf("%5u",cc);
    textattr(14);
    cprintf("  Адрес - %Fp    ",drv);
    textattr(11);
    cprintf(" атрибуты - %04X   ",drv->attr);
    textattr(13);
    if (drv->attr&0x8000)
      for (i=0;i<8; cprintf("%c",drv->name[i++]));
    else cprintf("блочный - %d",drv->name[0]);
      cprintf("\n\r"); y=0;
    while ((c=getch())==Enter)FlDrv();
    if (c==0) getch();
    drv=drv->next; /* адрес след.драйвера */
    cc++;
  }
  textattr(12+128);
  cprintf("Конец списка.     Нажмите любую клавишу...\n");
  getch();
  textattr(7);
}

Нужно написать программу, которая определяет драйверы, резидентные в памяти компьютера. Эта не компилируется, выдает ошибки:
Line 16: error: dos.h: No such file or directory
Line 18: error: conio.h: No such file or directory
Line 0: error: invalid suffix "struct" on integer constant
Line 0: error: invalid suffix "int" on integer constant
Line 18: error: expected unqualified-id before numeric constant
compilation terminated due to -Wfatal-errors.
Помогите пожалуйста, не понимаю почему не работает
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2015, 00:37
Ответы с готовыми решениями:

Определить количество доступной оперативной памяти компьютера
как узнать оперативную память

Как определить максимально возможный размер оперативной памяти для своего компьютера?
Собственно имеется 1 гиг оперативки и тормозящая при этом с завидной регулярностью максимальная...

С компьютера удалились аудио и видео драйверы, что посоветуете сделать?
Всем привет,у меня с компьютера удалились аудио и видео драйверы,что посоветуете сделаь??? Спасибо...

Определить для произвольного вещественного десятичного числа типа double его представление в памяти компьютера
Составить математическую модель, блок-схему и записать на языке Pascal программу с использованием...

11
Модератор
Эксперт по электронике
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,704
22.06.2015, 00:41 2
Цитата Сообщение от phantom3200 Посмотреть сообщение
Нужно написать программу, которая определяет драйверы, резидентные в памяти компьютера.
ни че, что ДОСа уже лет десять нет? а равно и резидентных программ
Цитата Сообщение от phantom3200 Посмотреть сообщение
Эта не компилируется, выдает ошибки:
на каком компьютере компилировал? ОС? Компилятор?
0
2082 / 1573 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
22.06.2015, 00:42 3
Цитата Сообщение от phantom3200 Посмотреть сообщение
Помогите пожалуйста, не понимаю почему не работает
Каким компилятором компилируешь?
0
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 13
22.06.2015, 00:44  [ТС] 4
Компилировал на видне 7, в кодблоксе
А где нужно?
0
Модератор
Эксперт по электронике
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,704
22.06.2015, 00:48 5
Цитата Сообщение от phantom3200 Посмотреть сообщение
А где нужно?
на машине где установлен ДОС, и компилятор типа BC3.1, или еще раньше
В музей пойдешь?
0
2082 / 1573 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
22.06.2015, 00:58 6
Цитата Сообщение от ValeryS Посмотреть сообщение
В музей пойдешь?
Зачем в музей? она еще на контроллерах пашет, правда причесанная под RT. Хот там лабы гонять точно никто не пустит.
Можешь конечно винду удалить винт форматнуть и поставить ДОС, она правда больше 2ГБ на раздел не потянет. Но лучше поищи может у кого завалялась подходящая железка. Где то в ящике с хламом валяются три материнки с процами 286, 386 и 486. так что может у кого нибудь из твоих знакомы компьютерщиков прошлого тысячелетия такой хлам тоже валяется.
А виндовый компилятор dos.h точно не знает. И под виндой эта штука тоже запускаться не будет.
0
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 13
22.06.2015, 00:58  [ТС] 7
В музей??
0
2082 / 1573 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
22.06.2015, 01:01 8
Цитата Сообщение от phantom3200 Посмотреть сообщение
В музей??
Ну да. Помнится году этак в 96-ом шарились по этой табличке и искали место чтобы антивирус не обнаружил.... в 1997-ом уже ловили за хвост функции Kernel. так что дос по большому счету в прошлом тысячелетии остался... Кстати если попробуешь ставить его на современном железе огромная вероятность что дров просто не найдешь.
0
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 13
22.06.2015, 01:05  [ТС] 9
то есть впринципе невозможно сделать на винде чтобы эта программа выводила список драйверов??
0
Модератор
Эксперт по электронике
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,704
22.06.2015, 01:07 10
Цитата Сообщение от phantom3200 Посмотреть сообщение
то есть впринципе невозможно сделать на винде чтобы эта программа выводила список драйверов??
это разные ОСи, и драйвера у них разные
0
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 13
22.06.2015, 01:18  [ТС] 11
а сделать так чтобы она выдавала драйвера моей машины с винодвсом? так можно?
0
Модератор
Эксперт по электронике
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,704
22.06.2015, 01:19 12
Цитата Сообщение от phantom3200 Посмотреть сообщение
она выдавала драйвера моей машины с винодвсом? так можно?
нельзя
нужно писать совершенно другую программу, а для этого нужно изучить как устроена Винда
0
22.06.2015, 01:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2015, 01:19
Помогаю со студенческими работами здесь

Установка пакетов, драйверы NVIDIA, драйверы и утилиты для ноутбука.
Здравствуйте! Вопрос по установке пакетов в Ubuntu 11.04. Нужно установить пакет A, он...

Зачем нужны драйверы LED, драйверы двигателей... ??
Пусть надо управлять двигателем. Часто упоминаемый в интернетах L293D. стоит 110 рублей. Почему...

Резидентные программы
Помогите осилить лабу %-) &quot;При нажатии клавиши F1 программа очищает экран и безостановочно выводит...

Интересует возможность или невозможность "скинуть" драйверы с рабочего компьютера перед переустановкой windows
Здравствуйте! Я новичок в переустановке операционной системы и меня интересует вот что - можно ли с...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru