Windows下用C++删除磁盘分区信息
做一个能对U盘重新分区的小工具,使用该方法删除U盘中原有的分区表。
1 bool CCesDiskDll::DestroyDisk(unsigned char deviceNumber) 2 { 3 DWORD readed; 4 char diskName[_DISK_PATH_LEN_]; 5 sprintf(diskName, "\\\\.\\PhysicalDrive%d", deviceNumber); 6 HANDLE hDisk = CreateFileA(diskName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 7 nullptr, OPEN_EXISTING, 0, nullptr); 8 if (hDisk == INVALID_HANDLE_VALUE) 9 { 10 CErrorHandle::ErrorMessageBox(TEXT("磁盘读取异常")); 11 return false; 12 } 13 if (!DeviceIoControl(hDisk, IOCTL_DISK_DELETE_DRIVE_LAYOUT, nullptr, 0, nullptr, 0, &readed, 14 nullptr)) 15 { 16 CErrorHandle::ErrorMessageBox(TEXT("磁盘分区表删除异常")); 17 CloseHandle(hDisk); 18 return false; 19 } 20 if (!DeviceIoControl(hDisk, IOCTL_DISK_UPDATE_PROPERTIES, nullptr, 0, nullptr, 0, &readed, 21 nullptr)) 22 { 23 CErrorHandle::ErrorMessageBox(TEXT("磁盘分区表刷新异常")); 24 CloseHandle(hDisk); 25 return false; 26 } 27 CloseHandle(hDisk); 28 return true; 29 }