Размер дисков

Тема в разделе "WASM.BEGINNERS", создана пользователем mix_mix, 8 окт 2005.

  1. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    Всем привет!

    Небольшая проблема: необходимо определить процент свободного места на каждом из логических дисков (но процент от свободного места на всех дисках), то есть:

    <ol type=1>

    <li> Найти все логические диски (сделано)

    <li> Найти сумму свободного места на всех дисках

    <li> Найти процент, деля своб. место одного диска на все своб. место.

    </ol>

    Произошел затык на втором пункте. Предполагаю, что надо использовать GetDiskFreeSpaceEx.





    [​IMG] _1690852959__prog.asm.txt
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    mix_mix

    Поясни задачу на числах. Например, есть три диска по 100Gb, на первом свободно - 30Gb, на втором - 60Gb, на третьем - 90Gb. Ответ - 10%, 20% и 30% соответственно?
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    mix_mix

    BOOL GetDiskFreeSpace(

    LPCTSTR lpRootPathName,

    LPDWORD lpSectorsPerCluster,

    LPDWORD lpBytesPerSector,

    LPDWORD lpNumberOfFreeClusters,

    LPDWORD lpTotalNumberOfClusters

    );



    FreeSpace = NumberOfFreeClusters * SectorsPerCluster * BytesPerSector;



    Но т.к. тебе достаточно в процентах, то можно считать просто кластеры, а не байты:

    NumberOfFreeClusters каждого диска*100 /TotalNumberOfClusters всех дисков.
     
  4. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    IceStudent

    Большое спасибо за совет!



    q_q

    Поясняю: три диска, объемом по 100 Gb,

    на на первом свободно - 30Gb, на втором - 60Gb, на третьем - 90Gb.

    1. Общее свободное место: 30+60+90=180 Gb

    2. Первый диск: 30/180*100=16,6666...=17%

    3. Второй диск: 60/180*100=33,3333...=33%

    4. Третий диск: 90/180*100=50%