Dos. Определение размера Ram и Hdd

  • Автор темы sqrk
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

sqrk

#1
Всем приятного времени суток! :blink:

Облазила инет, но так и нашла как можно вытащить размер (а лучше модель) HDD. :unsure: Перывание bios 13h для вопроса с HDD не помогает

C RAM вроде попроще, но определяет не больше 64M почему-то...



Есть ли у кого опыт решения подобных задач? Илипросто какие-нибудь соображения?
 
O

orcommander

#2
Ну, попробуй вот этот кусок. Я когда-то делал подобную контрольную...

#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<dir.h>
void main(void)
{
int curr,next/*,win1,win2,win3,win_y*/;
unsigned long int d_size;
char dir_n[64]={"\\"};
struct dfree val;
next=3;
while(!(getcurdir(next,dir_n))) // rotate disks
{
setdisk(next);
getdfree(next,&val); // get information about size
d_size=val.df_bsec*val.df_sclus/1024;
printf(" †¥á⪨© ¤¨áª %c : %lu K\n",next+'A'-1,val.df_total*d_size);
printf("᢮¡®¤­® : %lu K\n",val.df_avail*d_size);
next++;
}
setdisk(curr);
getch();
}
 
S

sqrk

#3
нет, не правильно определяет :(

диск на разделы поделен, может в этом засада
 
S

sqrk

#4
странно как-то все происходит...

если под win скомпилить все правильно определяется :( , а если под dos не правильно :(

и это печально
 
L

Little Friend

#5
В ДОСе стандартными средствами возможно определить размер HDD до 2,1 Гб, средствами BIOS - до 8 Гб, для всего остального остается низкоуровневое программирование.
Вот пример определения размера винчестера на ассемблере:
http://wasm.ru/pub/12/files/ata_id.asm,
а вот здесь http://wasm.ru/article.php?article=atazen01 можно прочитать как это делается (собственно приведенная выше ссылка является примером к данной статье)
 
S

sqrk

#7
За статьи огромное спасибо.

Я так прнимаю что ассемблера мне не избежать. Вот только теперь возникает новый вопрос: как связать переменные ассемблера с переменными си.


и вопросик такой еще. правильно ли я понимаю что в программе на ассемблере необходиме указать вначале тех. характеристика машинки.
 
S

sqrk

#8
А никто не подскажет как скомпилить прогу на ассемблере?

Прога есть, TASM 5.0 есть, а скомпилить не получается... :eek:
 
D

Desperado

#9
Привет. Всё немного попроще. Зачем АСМ???? Есле можно без проблемм на С++ управиться. Я делал эти вещи, всё первосходно работает, оперделяет множество характеристик винта и ОЗУ, систему FAT, вообщем куча всего. Конечно это заняло времени. Стучи в ICQ 913322 или на почту - cerato@ukr.net я тебе дам свой исходник и не будет проблемм.. :)

Привет. Всё немного попроще. Зачем АСМ???? Есле можно без проблемм на С++ управиться. Я делал эти вещи, всё первосходно работает, оперделяет множество характеристик винта и ОЗУ, систему FAT, вообщем куча всего. Конечно это заняло времени. Стучи в ICQ 913322 или на почту - cerato@ukr.net я тебе дам свой исходник и не будет проблемм.. :)
 
S
#10
на с++ я тоже могу.

только вот нельзя его использовать.

при запуске под виндой (точнее в эмуляторе dos) все хорошо, все показывается правильно. а при запуске под dos получается неверный результат.

:)
 
D

Desperado

#11
В моём случае как под Досом так и под Виндой всё работает.

Хорошо, транслируй си в асм....немного коррекции кода и всё будет тип-топ ))
 
S
#12
да у меня тоже работает. только определяет тот объем диска и памяти на который способен DOS и BIOS.

как-то транслировать код мне в голову не приходило. :)
 
Статус
Закрыто для дальнейших ответов.