Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Petar07
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 99
#1

Системные флаги диска - C++

08.04.2013, 11:46. Просмотров 431. Ответов 0
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#include <locale>
 
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "RUSSIAN");
     int n;   
     char dd[4];   
     DWORD dr = GetLogicalDrives( );  
     DWORD BytesPerSector;   
     DWORD NumberOfFreeClusters;   
     DWORD TotalNumberOfClusters;   
     DWORD SectorPerCluster;   
     
     
        
     cout << "Доступные диски : " << endl; 
        
        for ( int i = 0; i < 26; i++ )  
        {
           n = ( ( dr >> i ) & 0x00000001 ); 
           if ( n == 1 )  
           {        
              dd[0] = char( 65 + i ); 
              dd[1] = ':';
              dd[2] = '\\';
              dd[3] = '\0';
               GetDiskFreeSpaceA (dd, &BytesPerSector, &SectorPerCluster, &NumberOfFreeClusters, &TotalNumberOfClusters);  
           
           cout << "disk " << dd << endl;
           
           switch ( GetDriveType( dd ) ) 
              {
                 case DRIVE_UNKNOWN:
                    cout << "   Неизвестный носитель. " << endl << "     Количество кластеров " << TotalNumberOfClusters << ". Количество свободных кластеров " << NumberOfFreeClusters << ". Длинна кластера " << SectorPerCluster*BytesPerSector << ". Объем незанятого пространства диска " << (SectorPerCluster*BytesPerSector/1024)*NumberOfFreeClusters/1024 << " МБ " << endl;
                    break;
                 case DRIVE_NO_ROOT_DIR:
                    cout << "   Корневой дирректории не существует" << endl << "     Количество кластеров " << TotalNumberOfClusters << ". Количество свободных кластеров " << NumberOfFreeClusters << ". Длинна кластера " << SectorPerCluster*BytesPerSector << ". Объем незанятого пространства диска " << (SectorPerCluster*BytesPerSector/1024)*NumberOfFreeClusters/1024 << " МБ " << endl;
                    break;
                 case DRIVE_REMOVABLE:
                    cout << "   Сменный диск" << endl << "     Количество кластеров " << TotalNumberOfClusters << ". Количество свободных кластеров " << NumberOfFreeClusters << ". Длинна кластера " << SectorPerCluster*BytesPerSector << ". Объем незанятого пространства диска " << (SectorPerCluster*BytesPerSector/1024)*NumberOfFreeClusters/1024 << " МБ " << endl;
                    break;
                 case DRIVE_FIXED:
                    cout << "   Жесткий диск"  << endl << "     Количество кластеров " << TotalNumberOfClusters << ". Количество свободных кластеров " << NumberOfFreeClusters << ". Длинна кластера " << SectorPerCluster*BytesPerSector << ". Объем незанятого пространства диска " << (SectorPerCluster*BytesPerSector/1024)*NumberOfFreeClusters/1024 << " МБ " << endl;
                    break;
                 case DRIVE_REMOTE:
                    cout << "   Сетевой диск" << endl << "     Количество кластеров " << TotalNumberOfClusters << ". Количество свободных кластеров " << NumberOfFreeClusters << ". Длинна кластера " << SectorPerCluster*BytesPerSector << ". Объем незанятого пространства диска " << (SectorPerCluster*BytesPerSector/1024)*NumberOfFreeClusters/1024 << " МБ " << endl;
                    break;
                 case DRIVE_CDROM:
                    cout << "   Компакт диск(CD или DVD)" << endl << "     Количество кластеров " << TotalNumberOfClusters << ". Количество свободных кластеров " << NumberOfFreeClusters << ". Длинна кластера " << SectorPerCluster*BytesPerSector << ". Объем незанятого пространства диска " << (SectorPerCluster*BytesPerSector/1024)*NumberOfFreeClusters/1024 << " МБ " << endl;
                    break;
                 case DRIVE_RAMDISK:
                    cout << "   RAM-DISK(Эмулированный в ОП диск)" << endl << "     Количество кластеров " << TotalNumberOfClusters << ". Количество свободных кластеров " << NumberOfFreeClusters << ". Длинна кластера " << SectorPerCluster*BytesPerSector << ". Объем незанятого пространства диска " << (SectorPerCluster*BytesPerSector/1024)*NumberOfFreeClusters/1024 << " МБ " << endl;
                    break;
                 default: ;
              }
              
            cout << endl;
            
           }
        }
    
        char VolumeNameBuffer [100];
        char FileSystemNameBuffer [100];
        unsigned long VolumeSerialNumber;
        unsigned long MaximumComponentLength;
        unsigned long FileSystemFlags;
        
        bool GetVolumeInformationFlag = GetVolumeInformationA (dd, VolumeNameBuffer, 100, &VolumeSerialNumber, &MaximumComponentLength, &FileSystemFlags, FileSystemNameBuffer, 100);
        
        if (GetVolumeInformationFlag != 0)
        {
            cout << "Тип файловой системы: " << FileSystemNameBuffer << endl;
            cout << "Системные флаги диска: " << FileSystemFlags << endl;
        }
        else cout << "No present (GetVolumeInformation)" << endl;
 
        int A = GetVolumeInformationA (dd, NULL, NULL, NULL, NULL, &FileSystemFlags, NULL, NULL);
              if (A == FS_CASE_IS_PRESERVED)
                    cout << "При записи на диск сохраняется регистр букв в имени файла" << endl;
              if (A == FS_CASE_SENSITIVE)
                    cout << "Файловая система поддерживает поиск файлов с учетом регистра букв в именах" << endl;
              if (A == FS_UNICODE_STORED_ON_DISK)
                    cout << "Файловая система поддерживает хранение на диске имен фойлов в ЮНИКОД" << endl;
              if (A == FS_PERSISTENT_ACLS)
                    cout << "Файловая система способна оперироватьсо списками контороля доступа" << endl;
              if (A == FS_VOL_IS_COMPRESSED)
                    cout << "Том, информация о котором запрашивется, был подвергнут сжатию" << endl;
              if (A == FS_FILE_COMPRESSION)
                    cout << "Файловая система поддерживает сжатие файлов" << endl;
               
 
 
  
    _getch ();
 
   return 0;
}
Ребят, почему программа не возвращает системные флаги?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2013, 11:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Системные флаги диска (C++):

Флаги - C++
Подскажите для чего используются эти флаги: setiosflags(ios::fixed | ios::showpoint). Видел их использование совместно с setprecision(2)....

Флаги выравнивания - C++
Просветите пожалуйста ) :wall: Как выровнять по левому краю такое : cout&lt;&lt;&quot;S=&quot;&lt;&lt;S&lt;&lt;&quot;\n&quot;; ? Вот участок кода: void Figura::show_S() ...

Битовые флаги. - C++
Пожалуйста может объяснить &quot;Пример хранения битовых флагов. Их считывание и установка.&quot; И что это такое вообще.

Не работают флаги - C++
#include &quot;stdafx.h&quot; #include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;iomanip&gt; using namespace std; ...

Флаги форматирования cout - C++
В чем разница, кроме того, что первые два флага форматирования задаются в качестве манипуляторов? cout &lt;&lt; setiosflags(ios::fixed); ...

что такое флаги? - C++
что такое флаги?

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2013, 11:46
Привет! Вот еще темы с ответами:

Пользовательские битовые флаги - C++
Заинтересовала следующая конструкция: если: 1 - Девушка 2 - Мужчина 3 - Красивый(ая) 4 - Интересный(ая) Как передать статус...

Флаги для прогораммы C++ - C++
Приветствую. В Java все делается легко, если нужно задать флаги для возвращаемых значений и тому подобное. Я всегда делаю сущность и...

Флаги форматирования и манипуляторы - C++
У многих новичков возникают вопросы, как вывести число в таком-то формате, а можно вывести так или так. Чтоб стало более ясно, вот...

Флаги (вывод сообщения) - C++
Есть программа, которая записывает в файл, считывает, удаляет и т.д. Это кусок функции удаления. Пользователь вводит фамилию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru