- 转载:http://raylinn.iteye.com/blog/570274
 
- BOOL Result; 
 
- DWORD szReturned;  
 
- unsigned int SectorSize = 512;  
 
- LARGE_INTEGER DiskSize.QuadPart = 40007761920i64;  
 
- LARGE_INTEGER Part_1_size.QuadPart = 27406600704i64;  
 
- LARGE_INTEGER Part_2_size.QuadPart =40007761920i64-27406600704i64;   
 
-   
 
- DWORD szNewLayout = sizeof(DRIVE_LAYOUT_INFORMATION_EX)+4*sizeof(PARTITION_INFOR MATION_EX);  
 
-   
 
- DRIVE_LAYOUT_INFORMATION_EX *dl = (DRIVE_LAYOUT_INFORMATION_EX*) new BYTE[szNewLayout];  
 
-   
 
- hDrive=CreateFile("\\\\.\\PhysicalDrive1",GENERIC_READ|GEN ERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,  
 
-          NULL, 
 
-          OPEN_EXISTING, 
 
-          0,
 
-          NULL);   
 
-    
 
- if(!hDrive){  
 
-         
 
-     }  
 
-   
 
-   
 
- CREATE_DISK disk;  
 
- ZeroMemory(&disk,sizeof(CREATE_DISK));  
 
- disk.PartitionStyle = PARTITION_STYLE_MBR;  
 
- disk.Mbr.Signature = 0xA4B57300;
 
-   
 
-  Result = DeviceIoControl(hDrive,IOCTL_DISK_CREATE_DISK,&disk,size of(CREATE_DISK),NULL,0,&szReturned,NULL);   
 
-  if(!Result){  
 
-         
 
-     }  
 
- DeviceIoControl(hDrive,IOCTL_DISK_UPDATE_PROPERTIES,  
 
-         NULL,0,NULL,0,&szReturned,NULL);  
 
-   
 
-  
 
-  ZeroMemory(dl,szNewLayout);  
 
-  dl->PartitionEntry[0].PartitionStyle = PARTITION_STYLE_MBR;  
 
-  dl->PartitionEntry[0].StartingOffset.QuadPart = 32256;  
 
-  dl->PartitionEntry[0].PartitionLength = Part_1_Size;  
 
-  dl->PartitionEntry[0].PartitionNumber = 1;  
 
-  dl->PartitionEntry[0].RewritePartition = TRUE;  
 
-  dl->PartitionEntry[0].Mbr.PartitionType = 0x07;
 
-  dl->PartitionEntry[0].Mbr.BootIndicator = TRUE;  
 
-  dl->PartitionEntry[0].Mbr.RecognizedPartition = 1;  
 
-  dl->PartitionEntry[0].Mbr.HiddenSectors=32256/SectorSize;  
 
-   
 
-  dl->PartitionEntry[1].PartitionStyle=PARTITION_STYLE_MBR;  
 
-  dl->PartitionEntry[1].StartingOffset.QuadPart= Part_1_Size.QuadPart + 32256i64;  
 
-  dl->PartitionEntry[1].PartitionLength = Part_2_Size;  
 
-  dl->PartitionEntry[1].PartitionNumber=2;  
 
-  dl->PartitionEntry[1].RewritePartition = TRUE;  
 
-  dl->PartitionEntry[1].Mbr.PartitionType = 0x07;  
 
-  dl->PartitionEntry[1].Mbr.RecognizedPartition = 1;  
 
-  dl->PartitionEntry[1].Mbr.HiddenSectors = (32256i64+Part_1_Size.QuadPart)/SectorSize;  
 
-   
 
-  
 
-  for (int item=0;item<4;item++)  
 
-      dl->PartitionEntry[item].RewritePartition = 1;  
 
-   
 
-  
 
-  dl->PartitionStyle = PARTITION_STYLE_MBR;  
 
-  dl->PartitionCount = 4;
 
-  dl->Mbr.Signature = 0xA4B57300;  
 
-   
 
-  
 
-  Result = DeviceIoControl(hDrive,IOCTL_DISK_SET_DRIVE_LAYOUT_EX,  
 
-          & ; ;nbs p;      dl,szNewLayout,NULL,0,& ; ; ;szReturned,NULL);  
 
-  if(!Result)  
 
-         throw Exception(WhatError());  
 
-   
 
-  
 
-  DeviceIoControl(hDrive,IOCTL_DISK_UPDATE_PROPERTIES,  
 
-         NULL,0,NULL,0,&szReturned,NULL);  
 
-   
 
- CloseHandle(hDrive);  
 
- delete dl;  
 
用IO创建并格式化分区
原文:https://www.cnblogs.com/piaoxuewaiwai/p/8866292.html