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

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

17.02.2012, 23:11. Показов 2574. Ответов 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
8728 / 3680 / 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
8728 / 3680 / 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
8728 / 3680 / 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
8728 / 3680 / 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
8728 / 3680 / 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
8728 / 3680 / 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
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru