powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / mount points
7 сообщений из 7, страница 1 из 1
mount points
    #40037587
Понадобилось достучаться вот до этого , чтобы получить список смонтированных в системе томов (не букв дисков) и куда они смонтированы.

По прочтении вот этого возникает лёгкое недоумение, переходящее в ступор. Возможно, в обще-философском плане этот сферический конь в вакууме имеет эзотерическую ценность, но понять, как и для чего это можно использовать крайне трудно.

Внимание, вопрос: на .NET Framework 4.6 и выше, не кора, как получить список mount points?
...
Рейтинг: 0 / 0
mount points
    #40037595
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гомодиализ,
посмотрите этот код в качестве примера, а если на гитхабе поискать, то там еще и других примеров хватает, мне лень за вас искать

https://github.com/Wiladams/TOAPI/blob/70c0dd060970853efda5e6d02ed0951571dfa9ec/TOAPI.Kernel32/Kernel32_Storage.cs

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
        //FindFirstVolumeMountPoint Retrieves the name of a volume mount point on the specified volume. 
        [DllImport("kernel32.dll", CharSet=CharSet.Auto)]
        public static extern IntPtr FindFirstVolumeMountPoint([In] string lpszRootPathName, 
            StringBuilder lpszVolumeMountPoint, uint cchBufferLength);


        //FindNextVolumeMountPoint Continues a volume mount point search started by a call to FindFirstVolumeMountPoint. 
        [DllImport("kernel32.dll", CharSet=CharSet.Auto)]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool FindNextVolumeMountPoint(IntPtr hFindVolumeMountPoint, StringBuilder lpszVolumeMountPoint, uint cchBufferLength);
        
        //FindVolumeMountPointClose Closes the specified mount-point search handle. 
        [DllImport("kernel32.dll", EntryPoint = "FindVolumeMountPointClose")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool FindVolumeMountPointClose(IntPtr hFindVolumeMountPoint);
...
Рейтинг: 0 / 0
mount points
    #40037609
Roman Mejtes
гомодиализ,
посмотрите этот код в качестве примера
[/src]

Спасибо, я знаю, как из нативных библиотек получить, а у нас тут гонение на них.
Мелкософт пишет, что нужно через Microsoft.Management.Infrastructure, об этом и вопрос.
...
Рейтинг: 0 / 0
mount points
    #40037662
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://docs.microsoft.com/en-us/dotnet/framework/tools/mgmtclassgen-exe
гомодиализ
Мелкософт пишет, что нужно через Microsoft.Management.Infrastructure, об этом и вопрос.

Где пишет? У меня вот пишет, что выше по ссылке самое оно.
...
Рейтинг: 0 / 0
mount points
    #40037733
Сон Веры Павловны
https://docs.microsoft.com/en-us/dotnet/framework/tools/mgmtclassgen-exe
гомодиализ
Мелкософт пишет, что нужно через Microsoft.Management.Infrastructure, об этом и вопрос.

Где пишет? У меня вот пишет, что выше по ссылке самое оно.


Да вот же он !
Прокрутите до C#. Уж если архитектор такое увидел, он всех разрабов заколебёт. Так у нас и случилось.
...
Рейтинг: 0 / 0
mount points
    #40037814
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гомодиализ
Да вот же он !
Прокрутите до C#. Уж если архитектор такое увидел, он всех разрабов заколебёт. Так у нас и случилось.

Ну ок, майкрософт продвигаёт новое стильное-модное, в первый раз, что ли? В документации у них про эту Microsoft.Management.Infrastructure бардак, конечно - половина топиков howto ведет на 404, но даже поиск навскидку по SoF уже позволяет написать вот такое:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var sessionOptions = new DComSessionOptions
{
  Timeout = TimeSpan.FromSeconds(30)
};
var cimSession = CimSession.Create(".", sessionOptions);
var enumeratedInstances = cimSession.EnumerateInstances(@"root\cimv2", "Win32_MountPoint");
foreach (var cimInstance in enumeratedInstances)
{
  Console.WriteLine("{0}", ((CimInstance)cimInstance.CimInstanceProperties[ "Volume" ].Value).CimInstanceProperties["DeviceID"].Value);
}


Код: plaintext
1.
2.
\\?\Volume{de7a4475-10d4-45be-b40f-dddd0e1f2154}\
\\?\Volume{af1b2532-a1dd-4342-a50a-bb1fd4499063}\
\\?\Volume{8d19b285-020a-11eb-bfe2-806e6f6e6963}\

- в принципе, не так уж и сильно отличается от старых методов работы через тот же старенький ManagementObjectSearcher.
...
Рейтинг: 0 / 0
mount points
    #40037904
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны
гомодиализ
Да вот же он !
Прокрутите до C#. Уж если архитектор такое увидел, он всех разрабов заколебёт. Так у нас и случилось.

Ну ок, майкрософт продвигаёт новое стильное-модное, в первый раз, что ли? В документации у них про эту Microsoft.Management.Infrastructure бардак, конечно - половина топиков howto ведет на 404, но даже поиск навскидку по SoF уже позволяет написать вот такое:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var sessionOptions = new DComSessionOptions
{
  Timeout = TimeSpan.FromSeconds(30)
};
var cimSession = CimSession.Create(".", sessionOptions);
var enumeratedInstances = cimSession.EnumerateInstances(@"root\cimv2", "Win32_MountPoint");
foreach (var cimInstance in enumeratedInstances)
{
  Console.WriteLine("{0}", ((CimInstance)cimInstance.CimInstanceProperties[ "Volume" ].Value).CimInstanceProperties["DeviceID"].Value);
}


Код: plaintext
1.
2.
\\?\Volume{de7a4475-10d4-45be-b40f-dddd0e1f2154}\
\\?\Volume{af1b2532-a1dd-4342-a50a-bb1fd4499063}\
\\?\Volume{8d19b285-020a-11eb-bfe2-806e6f6e6963}\

- в принципе, не так уж и сильно отличается от старых методов работы через тот же старенький ManagementObjectSearcher.
судя по вашему примеру, всё стало чертовски проще
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / mount points
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]