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

Discussion in 'WASM.BEGINNERS' started by mix_mix, Oct 8, 2005.

  1. mix_mix

    mix_mix Михаил

    Blog Posts:
    0
    Joined:
    Oct 8, 2005
    Messages:
    277
    Location:
    Токио
    Всем привет!

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

    <ol type=1>

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

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

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

    </ol>

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





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

    q_q New Member

    Blog Posts:
    0
    Joined:
    Oct 5, 2003
    Messages:
    1,706
    mix_mix

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

    IceStudent Active Member

    Blog Posts:
    0
    Joined:
    Oct 2, 2003
    Messages:
    4,300
    Location:
    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 Михаил

    Blog Posts:
    0
    Joined:
    Oct 8, 2005
    Messages:
    277
    Location:
    Токио
    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%