15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Функция SHFormatDrive.

Открывает стандартное диалоговое окно форматирования диска.

DWORD SHFormatDrive(      
    HWND hwnd,
    UINT drive,
    UINT fmtID,
    UINT options
);

Параметры

hwnd
хэндл родительского окна диалога. Диалог обязательно должен иметь родительское окно, поэтому нельзя в этом параметре указывать null.
drive
номер диска, который мы хотим отформатировать. 0 для A: , 1 для B: , 2 для С: и т.д.
fmtID
ID физического формата.
SHFMT_ID_DEFAULT
ID формата поумолчанию.
options
Параметры форматирования, которые можно передать в диалоговое окошко.
SHFMT_OPT_FULL
Полное форматирование (для диска, который ещё ни разу не форматировался). Поумолчанию "Быстрое форматирование."
SHFMT_OPT_SYSONLY
Форматирование с созданием системного диска.

Возвращаемое значение

Возвращает значение DWORD приведённое в таблице, либо fmtID последнего удачного форматирования.

SHFMT_ERROR В процессе форматирования возникла ошибка.
SHFMT_CANCEL Форматирование было отменено.
SHFMT_NOFORMAT Диск не удалось отформатировать.


Замечание

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

 

Пример:

#include <windows.h>

void main()
{
WORD DriveNumber = 0; //format drive c: 
                      //0 - диск a:, 1 - b: и т.д.
 
  const int SHFMT_OPT_QUICKFORMAT = 0;
  const int SHFMT_OPT_FULLFORMAT = 1;
  const int SHFMT_OPT_SYSONLY = 2;

  HMODULE hMod = LoadLibrary("SHELL32.DLL");
  if(hMod == INVALID_HANDLE_VALUE)
        MessageBox(0, "Не удалось загрузить DLL",
        "load error", MB_SYSTEMMODAL|MB_ICONERROR);

  typedef LONG (WINAPI*tpSHFormatDrive)(HWND, WORD, WORD, WORD);
  tpSHFormatDrive SHFormatDrive = (tpSHFormatDrive)
       GetProcAddress(GetModuleHandle("SHELL32.DLL"),"SHFormatDrive");

  if(SHFormatDrive)
        SHFormatDrive(0, DriveNumber, 0xFFFF, SHFMT_OPT_QUICKFORMAT);
  else MessageBox(0, "the procedure SHFormatDrive not found","Ошибка",
        MB_SYSTEMMODAL|MB_ICONERROR);
}

 

Дополнительная информация

Минимальная версия DLL: shell32.dll версии 5.0 и выше
Заголовок: shlobj.h
Библиотека: shell32.lib
Операционная система: Windows 2000