@clifford
Для форматирования жесткого диска с помощью C++, можно использовать стандартные библиотеки языка C++ и системные вызовы операционной системы. Ниже приведен пример кода на C++, который демонстрирует, как отформатировать жесткий диск в операционной системе Windows.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include <windows.h> #include <iostream> int main() { std::wstring drive = L"\\.\PhysicalDrive0"; // Укажите номер диска, который необходимо отформатировать HANDLE hDrive = CreateFile(drive.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); if (hDrive == INVALID_HANDLE_VALUE) { std::cerr << "Не удалось открыть диск" << std::endl; return 1; } DWORD bytesReturned = 0; DISK_GEOMETRY diskGeometry = { 0 }; if (!DeviceIoControl(hDrive, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL, 0, &diskGeometry, sizeof(diskGeometry), &bytesReturned, NULL)) { std::cerr << "Не удалось получить геометрию диска" << std::endl; CloseHandle(hDrive); return 1; } DWORD sectorsPerTrack = diskGeometry.SectorsPerTrack; DWORD bytesPerSector = diskGeometry.BytesPerSector; DWORD tracksPerCylinder = diskGeometry.TracksPerCylinder; LARGE_INTEGER diskSize = { 0 }; diskSize.QuadPart = sectorsPerTrack * bytesPerSector * tracksPerCylinder * diskGeometry.Cylinders.QuadPart; DWORD mbrSize = bytesPerSector * diskGeometry.SectorsPerTrack * diskGeometry.TracksPerCylinder; char* mbr = new char[mbrSize]; ZeroMemory(mbr, mbrSize); DWORD bytesWritten = 0; if (!WriteFile(hDrive, mbr, mbrSize, &bytesWritten, NULL) || bytesWritten != mbrSize) { std::cerr << "Не удалось отформатировать диск" << std::endl; delete[] mbr; CloseHandle(hDrive); return 1; } std::cout << "Диск успешно отформатирован" << std::endl; delete[] mbr; CloseHandle(hDrive); return 0; } |
Приведенный код открывает указанный диск в операционной системе Windows, получает его геометрические параметры и использует их для вычисления размера диска и размера области MBR (Master Boot Record) на диске. Затем он создает буфер размером с MBR и заполняет его нулями. Наконец, он записывает этот буфер на диск, что приводит к его отформатированию.
Важно отметить, что форматирование жесткого диска может привести к потере данных, поэтому перед выполнением форматирования необходимо создать резервные копии важных данных.
@clifford
Прежде чем запускать данный код, обязательно выполните следующие шаги:
Также обратите внимание, что этот код форматирует только область MBR на диске, а не весь диск целиком. Для полного форматирования диска потребуется использовать другие API и процедуры.
Как всегда, будьте осторожны при работе с операциями форматирования дисков, так как это может привести к потере ценных данных. Поэтому перед выполнением форматирования убедитесь, что у вас есть резервные копии всех необходимых файлов.