Некоторые флешки не будут форматироваться в коде (C ++), но будут форматироваться через. & quot; Управление дисками & quot; виджет, что мне не хватает?

Я унаследовал некоторый код C ++ для форматирования флэш-накопителей USB, но он не работает, если флэш-диск находится в плохом состоянии, и я не могу понять, почему (или что делает состояние флэш-диска плохим).

Если на флэш-накопителе (USB-брелке) есть раздел, но нет файловой системы, и он находится в смешном состоянии, мой код формата WMI завершается с ошибкой 11 «нет носителя в накопителе», но с помощью виджета «Управление дисками Windows» форматирование диска просто отлично , И после форматирования с помощью виджета «Управление дисками» мой код WMI также отформатирует его с этого момента. Мой код будет даже хорошо отформатирован после удаления раздела с использованием diskpart и повторного создания раздела, если он был отформатирован с помощью виджета «Управление дисками» до удаления раздела.

Я могу воспроизвести это с несколькими марками и размерами USB-накопителя. Чтобы привести его в смешное состояние, я сначала копирую данные на диск, затем удаляю и воссоздаю раздел с помощью diskpart. После слов иногда диск будет в смешном состоянии, где я не могу отформатировать его, а иногда я могу отформатировать его нормально. Всегда виджет управления дисками может отформатировать его нормально. Запуск моего кода «Как администратор» не имеет значения.

Может кто-нибудь помочь мне разобраться, что виджет «Управление дисками» делает по-другому или чего мне не хватает? Я в растерянности относительно того, почему это не работает, когда это не работает, поэтому я действительно не знаю, что попробовать дальше для решения.

Вот что я делаю в коде (C ++):

/* Parameters are set as follows */
pInParInst->FileSystem = exFat
pInParInst->QuickFormat = true
pInParInst->Label = "MyDisk"

IWbemServices::ExecMethod ("\\PC-NAME\ROOT\CIMV2:Win32_Volume.DeviceID="\\\\?\\Volume{f110cf76-ff7b-11e2-8697-005056c00008}\\"",
"Format",
0,
NULL,
pInParInst,
&pOutPar,
NULL);/* When checking the result:  */
pOutPar->Get(L"ReturnValue", 0, &vtRetVal, NULL, 0);

vtRetVal.vt = 3 /* type is int */
vtRetVal.intVal = 11 /* No media in drive */

Вот как выглядит флэш-диск в виджете «Управление дисками Windows» перед его форматированием:

введите описание изображения здесь

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]