Съемные носители формата с программированием c#

Я хочу к формату (FAT32) съемный диск с программированием c#. В Интернете я нашел путь, но проблема состоит в том, что он открывает универсальную программу формата окон. Но я хочу сделать это с C# только и не созданный в поддержке окон.

Мой метод:

// FAT32 Format Button click event
[DllImport("shell32.dll")]
static extern uint SHFormatDrive(IntPtr hwnd, uint drive, uint fmtID, uint options);
5
задан Greg 13 July 2010 в 18:57
поделиться

3 ответа

Я не верю, что в C# есть что-то, что может универсально выполнить форматирование диска любого формата. Метод, который вы используете, вероятно, является лучшим способом сделать это в Windows.

Если вы хотите, чтобы он был действительно общим, вам все равно понадобится какой-то специфический для платформы метод получения доступа к аппаратному обеспечению для выполнения работы. C# предоставит вам только стандартную функциональность ввода/вывода.

Вы можете поискать сторонние библиотеки, которые являются кроссплатформенными, если это действительно то, что вам нужно. Есть шанс, что имеющееся у вас решение может работать и на других платформах (например, mono), хотя я о них мало что знаю.

1
ответ дан 14 December 2019 в 18:55
поделиться

Вы можете использовать wmi , есть способ, позволяющий это сделать.

http://msdn.microsoft.com/en-us/library/aa390432%28v=VS.85%29.aspx

4
ответ дан 14 December 2019 в 18:55
поделиться

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

Я не знаю, что, кроме собственно p/invoke'ng DeviceIoCtl, можно здесь использовать. У Марка Руссиновича (известного в SysInternals) раньше была утилита под названием "FormatX", которая делала на NT4 то же, что DeviceIOCtl делает на более поздних версиях, но, похоже, она была снята с производства, исходники и все такое. Я думаю, что лучшим вариантом будет создание отдельного процесса командной оболочки, вызывающего утилиту format с правильными параметрами. Просто откройте консоль и введите format /?, чтобы получить представление. Конечно, вы можете использовать System.Diagnostics.Process, чтобы сделать это с помощью командного интерпретатора (с cmd.exe /c).

0
ответ дан 14 December 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: