как узнать расположение разделов linux (и вообще любых разделов, которые win не(!) монтирует), а также любую информацию об их присутствии?.. Помниться в C++ это достаточно криво делается через IOCTL_DISK_GET_DRIVE_LAYOUT, но хочу написать на C#.. Нет ли например в WMI или ещё где такой возможности, ибо не хочется определять кучу функций из API... не могу вкурить почему мелкософт не признает разделы отличные от Fat/NTFS и не создаст нормальных средств для работы с ними... хотя возможно просто я плохо ищу
единственное что более или менее некривое приходит на ум это создание компановочного блока (.dll) на С++ и дальнейшее его использование в проекте на C# (например определить метод реализующий DeviceIoControl). Благо .net позволяет так делать. Если кто знаком, посоветуйте какие могут возникнуть проблемы
Cneg Код (Text): [DllImport("Kernel32.dll", SetLastError = false, CharSet = CharSet.Auto)] public static extern bool DeviceIoControl( Microsoft.Win32.SafeHandles.SafeFileHandle hDevice, EIOControlCode IoControlCode, [MarshalAs(UnmanagedType.AsAny)] [In] object InBuffer, uint nInBufferSize, [MarshalAs(UnmanagedType.AsAny)] [out] object OutBuffer, uint nOutBufferSize, ref uint pBytesReturned, [In] ref System.Threading.NativeOverlapped Overlapped );
и таким макаром, как я понимаю, мне ещё надо определить createfile и closehandle чтобы воспользоваться хотя бы deviceiocontrol...
фактически получается что это текст компановочного блока написанного на C++.. есть ли разница по сравнению с тем что я просто создам dll с конкретными методами на С++ и буду подключать в проект C# как внешний компоновочный блок?
Cneg Зачем вам С++, если собрались писать на C#? Создавайте интеропы нужных апи (CreateFileW/CloseHandle/DeviceIOControl) и дерзайте
censored просто уже есть некоторые возможности, которые нужно включить в проект на C#, написанные на C++. В силу огромной ленивости хочется это сделать как можно проще и без извращений. интероп - имеется ввиду (как частный случай) тот код который вы привели? просто такое название не слышал..
Cneg Ну в такой случае C++\CLI: наружу managaed интерфейс, внутри нативные методы (обычный код). P.S. Interrops -- достачно обыденная практика в .NET'e, поиск по фразу выдает кучу ссылок, в двух словах, интероп -- переходник (wrappeer).