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

Тема в разделе "Другие", создана пользователем sqrk, 15 май 2006.

Статус темы:
Закрыта.
  1. sqrk

    sqrk Гость

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

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

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



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

    orcommander Гость

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

    #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();
    }
     
  3. sqrk

    sqrk Гость

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

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

    sqrk Гость

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

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

    и это печально
     
  5. Little Friend

    Little Friend Гость

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

    Little Friend Гость

  7. sqrk

    sqrk Гость

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

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


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

    sqrk Гость

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

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

    Desperado Гость

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

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

    sqrk Гость

    на с++ я тоже могу.

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

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

    :)
     
  11. Desperado

    Desperado Гость

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

    Хорошо, транслируй си в асм....немного коррекции кода и всё будет тип-топ ))
     
  12. sqrk

    sqrk Гость

    да у меня тоже работает. только определяет тот объем диска и памяти на который способен DOS и BIOS.

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

Поделиться этой страницей