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 }

 

posted @ 2015-11-02 21:18  瘋子朱磊  阅读(725)  评论(0编辑  收藏  举报