Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Volume Info


Автор: _Invisible 23.9.2007, 19:22
Код

void GetVolumeInfo(char* volume){
    char name[256];
    char FileSys[256];
    DWORD VolumeSN;
    DWORD MaximumComponentLenght;
    DWORD FileSysFlag;
    DWORD FreeBytesAvailable;
    DWORD TotalNumberOfBytes;
    DWORD TotalNumberOfFreeBytes;
    bool volinfo = GetVolumeInformation(volume,name,256,&VolumeSN,&MaximumComponentLenght,&FileSysFlag,
        FileSys,256);
    if (volinfo){
        bool GetDiskFreeSpaceFlag =    GetDiskFreeSpaceEx(volume,
                                  (PULARGE_INTEGER)&FreeBytesAvailable,
                                    (PULARGE_INTEGER)&TotalNumberOfBytes,
                                    (PULARGE_INTEGER)&TotalNumberOfFreeBytes);
            printf("%s: [%s] %s %d/%d\n",volume,name,FileSys,TotalNumberOfFreeBytes/1024,TotalNumberOfBytes/1024);
        }else{
            printf("Volume %s expected\n",volume);
        }
};

Идёт переполнение стека в FreeBytesAvailable, как избавится?:(

Автор: bsa 23.9.2007, 19:43
Вот что в документации от GetDiskFreeSpaceEx:
Цитата
Remarks

The values obtained by this function are of the type ULARGE_INTEGER. Do not truncate these values to 32 bits.

The GetDiskFreeSpaceEx function returns zero (0) for lpTotalNumberOfFreeBytes and lpFreeBytesAvailable for all CD requests unless the disk is an unwritten CD in a CD-RW drive.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)