Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для Ira00
8 / 1 / 0
Регистрация: 25.06.2011
Сообщений: 38

Получить и вывести информацию о файловой системе и логическим разделом, который является корневым каталогом

17.02.2012, 23:11. Показов 2528. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот вылади лабу, я безпонятия как ее делать, знаю, только что это надо с С# - па вызвать библиотеку с С++ и потом, что-то сделать
Получить и вывести информацию о файловой системе и логическими разделом, который является корневыми каталогами. Функции Win32 API( GetVolumeInformation). DLL( Kernel32.dll)Кто может попочь, что-то пояснить, и хоть начало написать, как оно должно быть, и вообще любой помощи по этому вопросу буду рада!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2012, 23:11
Ответы с готовыми решениями:

Написать программу, моделирующую управление каталогом в файловой системе
Доброго времени суток! вот есть такое задание: Написать программу, моделирующую управление каталогом в файловой системе. Для каждого...

Управление каталогом в файловой системе
Собственно есть задание, написать модель файловой системы ну и совершать с ней там всякие штуковины. вопрос вот в чем у меня есть...

как запихнуть информацию о файловой системе в таблицу?
Хочеться получить таблицу со списком всех файлов. Пробовал использовать xp_cmdshell 'dir ...', но не понял как получить вывод этой...

14
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
18.02.2012, 00:42
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
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
 
namespace ConsoleApplication30
{
    class Program
    {
        [Flags]
        enum FileSystemFlags : uint
        {
            CASE_SENSITIVE_SEARCH = 0x00000001,
            CASE_PRESERVED_NAMES = 0x00000002,
            UNICODE_ON_DISK = 0x00000004,
            PERSISTENT_ACLS = 0x00000008,
            FILE_COMPRESSION = 0x00000010,
            VOLUME_QUOTAS = 0x00000020,
            SUPPORTS_SPARSE_FILES = 0x00000040,
            SUPPORTS_REPARSE_POINTS = 0x00000080,
            SUPPORTS_REMOTE_STORAGE = 0x00000100,
            VOLUME_IS_COMPRESSED = 0x00008000,
            SUPPORTS_OBJECT_IDS = 0x00010000,
            SUPPORTS_ENCRYPTION = 0x00020000,
            NAMED_STREAMS = 0x00040000,
            READ_ONLY_VOLUME = 0x00080000,
            SEQUENTIAL_WRITE_ONCE = 0x00100000,
            SUPPORTS_TRANSACTIONS = 0x00200000,
            SUPPORTS_HARD_LINKS = 0x00400000,
            SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000,
            SUPPORTS_OPEN_BY_FILE_ID = 0x01000000,
            SUPPORTS_USN_JOURNAL = 0x02000000
        }
 
        [DllImport( "kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode )]
        [return: MarshalAs( UnmanagedType.Bool )]
        static extern bool GetVolumeInformation (
            [In, Optional]  string lpRootPathName,
            [Out, Optional] StringBuilder lpVolumeNameBuffer,
            [In]            int nVolumeNameSize,
            [Out, Optional] out uint lpVolumeSerialNumber,
            [Out, Optional] out uint lpMaximumComponentLength,
            [Out, Optional] out FileSystemFlags lpFileSystemFlags,
            [Out, Optional] StringBuilder lpFileSystemNameBuffer,
            [In]            int nFileSystemNameSize
            );
 
        static void Main ( string[] args )
        {
            const int MAX_PATH = 260;
 
            var  volumeName = new StringBuilder( MAX_PATH + 1 );
            var  fsName     = new StringBuilder( MAX_PATH + 1 );
            uint volumeSN,
                 maxCompLen;
            FileSystemFlags fsFlags;
 
            foreach ( var drive in Directory.GetLogicalDrives() )
            {
                if ( !GetVolumeInformation(
                        drive, volumeName, volumeName.Capacity,
                        out volumeSN, out maxCompLen, out fsFlags,
                        fsName, fsName.Capacity ) )
                {
                    Console.WriteLine( "Root drive: {0}\r\nError: {1}\r\n", drive, Marshal.GetLastWin32Error() );
                    continue;
                }
 
                Console.WriteLine(
                    "Root name: {0}\r\nVolume name: {1}\r\nSN: {2}\r\nMaximum Component Length: {3}\r\nFS flags: {4}\r\nFS name: {5}",
                    drive,
                    volumeName.ToString(),
                    volumeSN,
                    maxCompLen,
                    fsFlags,
                    fsName.ToString()
                    );
                Console.WriteLine();
            }
 
            Console.ReadKey();
        }
    }
}
GetVolumeInformation
2
 Аватар для Ira00
8 / 1 / 0
Регистрация: 25.06.2011
Сообщений: 38
18.02.2012, 14:39  [ТС]
SSTREGG, огромное спасибо!!!!!!!!!!!! Я правда , ничего не понимаю, но попробую разобраться))) Можешь, объяснить, что значит этот код?)

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
namespace ConsoleApplication30
{
    class Program
    {
        [Flags]
        enum FileSystemFlags : uint
        {
            CASE_SENSITIVE_SEARCH = 0x00000001,
            CASE_PRESERVED_NAMES = 0x00000002,
            UNICODE_ON_DISK = 0x00000004,
            PERSISTENT_ACLS = 0x00000008,
            FILE_COMPRESSION = 0x00000010,
            VOLUME_QUOTAS = 0x00000020,
            SUPPORTS_SPARSE_FILES = 0x00000040,
            SUPPORTS_REPARSE_POINTS = 0x00000080,
            SUPPORTS_REMOTE_STORAGE = 0x00000100,
            VOLUME_IS_COMPRESSED = 0x00008000,
            SUPPORTS_OBJECT_IDS = 0x00010000,
            SUPPORTS_ENCRYPTION = 0x00020000,
            NAMED_STREAMS = 0x00040000,
            READ_ONLY_VOLUME = 0x00080000,
            SEQUENTIAL_WRITE_ONCE = 0x00100000,
            SUPPORTS_TRANSACTIONS = 0x00200000,
            SUPPORTS_HARD_LINKS = 0x00400000,
            SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000,
            SUPPORTS_OPEN_BY_FILE_ID = 0x01000000,
            SUPPORTS_USN_JOURNAL = 0x02000000
        }
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
18.02.2012, 14:47
Это перечисление (enum, FlagsAttribute). В GetVolumeInformation данное перечисление отвечает за свойства установленные (присутствующие) в определенной файловой системе, подробнее о каждом свойстве написано в описании параметра lpFileSystemFlags функции (ссылку приводил выше).
1
 Аватар для Ira00
8 / 1 / 0
Регистрация: 25.06.2011
Сообщений: 38
18.02.2012, 15:09  [ТС]
Цитата Сообщение от Ira00 Посмотреть сообщение
[Flags]
Ясно, а что это значит?)

Добавлено через 15 минут
SSTREGG, ещё один вопросик, там выводятся некие строчки, например, как 1)SN: 2087950411, 2)MaximumLength:255, 3) FS flags: 65470719, 4)FS name: NTFS, а на дисках Е и F Error: 21; что они означают?)
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
18.02.2012, 15:16
Цитата Сообщение от Ira00 Посмотреть сообщение
что они означают?
Читайте описание функции GetVolumeInformation, там к каждому её параметру есть пояснение что, как и почему.
Цитата Сообщение от Ira00 Посмотреть сообщение
Error: 21
Эта ошибка означает что устройство не готово к использованию.
1
 Аватар для Ira00
8 / 1 / 0
Регистрация: 25.06.2011
Сообщений: 38
19.02.2012, 03:47  [ТС]
SSTREGG, Хотела увидить, как будет работать программа, если я закоментирую, хоть одно свойство, закоментировала, программа работала без изминений, дошло до того, что я закоментировала все свойства и программа работала, как это, и для чего они нам тогда?
0
 Аватар для defer
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
19.02.2012, 03:49
что именно вы там закомментировали?
0
 Аватар для Ira00
8 / 1 / 0
Регистрация: 25.06.2011
Сообщений: 38
19.02.2012, 11:52  [ТС]
Цитата Сообщение от defer Посмотреть сообщение
что именно вы там закомментировали?
Ну сначала, первое свойство, потом первых сем, а потом все, и всё работае, как буд-то ничего не коментировала)
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
19.02.2012, 15:45
Ira00, закомментировав некоторые поля в перечислении Вы не нарушите работоспособность программы, Вы просто не увидите (в читабельном виде) если нужный бит будет установлен, Вы увидите просто число.

"Свойствами" я назвал значения в перечислении только чтобы они воспринимались как свойства файловой системы, на самом деле это обычные числа, которые являются битовой маской.
Почитайте о работе с битовыми полями (в описании атрибута Flags об этом отчасти поясняется), должно стать понятней.
1
 Аватар для Ira00
8 / 1 / 0
Регистрация: 25.06.2011
Сообщений: 38
19.02.2012, 21:22  [ТС]
Добавлено через 3 минуты
Цитата Сообщение от SSTREGG Посмотреть сообщение
Ira00, закомментировав некоторые поля в перечислении Вы не нарушите работоспособность программы, Вы просто не увидите (в читабельном виде) если нужный бит будет установлен, Вы увидите просто число.

"Свойствами" я назвал значения в перечислении только чтобы они воспринимались как свойства файловой системы, на самом деле это обычные числа, которые являются битовой маской.
Почитайте о работе с битовыми полями (в описании атрибута Flags об этом отчасти поясняется), должно стать понятней.
Из того всего, что я прочла, я поняла, что мне не нада эти константы, так-как, с помощю их я можу увидить, что-то конкретное, что интересует,например( bool readOnly = fsFlags.HasFlag(FileSystemFlags.READ_ONL Y_VOLUME) а в моем задании просто надо считать и вывести информацию о корневом каталоге, с помощю параметров данной функции, верно?
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
19.02.2012, 21:32
Ну если хотите чтобы вместо читаемого (для человека) вывода, выводились цифры, то да - Вам это перечисление не нужно. Но данный параметр относится к информации о корневом каталоге.
1
 Аватар для Ira00
8 / 1 / 0
Регистрация: 25.06.2011
Сообщений: 38
19.02.2012, 21:43  [ТС]
Цитата Сообщение от SSTREGG Посмотреть сообщение
Ну если хотите чтобы вместо читаемого (для человека) вывода, выводились цифры, то да - Вам это перечисление не нужно. Но данный параметр относится к информации о корневом каталоге.
Так там и так цифры коме FS name, и когда я убераю константы, то вывод не меняется?)) Я походу в чем-то туплю)))
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
19.02.2012, 21:56
При вывод



При вывод

Улавливаете разницу?
1
 Аватар для Ira00
8 / 1 / 0
Регистрация: 25.06.2011
Сообщений: 38
19.02.2012, 22:08  [ТС]
Цитата Сообщение от SSTREGG Посмотреть сообщение
При Вложение 128439 вывод Вложение 128438



При Вложение 128441 вывод Вложение 128440

Улавливаете разницу?
О так у Вас есть разница, а у меня у двоих случаях выводится как у Вас во втором, тойсть при закоментированих константах, не знаю почему так?)))

Добавлено через 4 минуты
Цитата Сообщение от SSTREGG Посмотреть сообщение
Ну если хотите чтобы вместо читаемого (для человека) вывода, выводились цифры, то да - Вам это перечисление не нужно. Но данный параметр относится к информации о корневом каталоге.
Все я заново копирнула вашу прогу и работает, также как у Вас!))) Ещё раз большое спасибо)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.02.2012, 22:08
Помогаю со студенческими работами здесь

Соедение неразделенного пространства с логическим разделом ubuntu
Есть неразделенное место на диске, и есть логический раздел с убунтой(фс ext4), как можно неразделенное место добавить в логический раздел...

Как получить доступ к файловой системе?
Здравствуйте! На компьютере HDD разделен на 2 диска (C и D). Установлен Open Server. Создан сайт test.ru. Как получить доступ к...

Как получить размер блока в файловой системе
Си+ linux. Пытаюсь вывести размер блока файловой системы struct stat buf; i = stat("имя файла", &buf); ...

Как можно получить информацию о типе файловой системы диска?
Как можно получить информацию о типе файловой системы диска?

Получить информацию о системе
Задание от начальства "собрать всю информацию с серверов" и если инвентарники и прочее придется самому то инфу о системе можно выдрать из...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru