BOOL Result; // used to read bad DeviceIoControl calls
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;
// Very important! Size correctly this structure. Even if there's only
// one primary partition, you MUST size the buffer to contain
// AT LEAST 4 PARTITION_INFORMATION_EX!
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];
// Open handle to physical device
// NtCreateFile() function can be used too with "\\device\\harddisk1\\partiton0" path.
hDrive=CreateFile("\\\\.\\PhysicalDrive1",GENERIC_READ|GEN ERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, //default security attributes
OPEN_EXISTING, // disposition
0,// file attributes
NULL);
if(!hDrive){
// handle the error
}
CREATE_DISK disk;
ZeroMemory(&disk,sizeof(CREATE_DISK));
disk.PartitionStyle = PARTITION_STYLE_MBR;
disk.Mbr.Signature = 0xA4B57300;// the signature can be randomly generated
// Create primary partition MBR
Result = DeviceIoControl(hDrive,IOCTL_DISK_CREATE_DISK,&disk,size of(CREATE_DISK),NULL,0,&szReturned,NULL);
if(!Result){
// handle the error
}
DeviceIoControl(hDrive,IOCTL_DISK_UPDATE_PROPERTIES,
NULL,0,NULL,0,&szReturned,NULL);
//Setup drive layout
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;// PARTITION_IFS (NTFS partition or logical drive)
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;
// set RewritePartition=true in every partition to force rewrite.
for (int item=0;item<4;item++)
dl->PartitionEntry[item].RewritePartition = 1;
// setup drive layout
dl->PartitionStyle = PARTITION_STYLE_MBR;
dl->PartitionCount = 4;// specify AT LEAST 4 partitions!!!
dl->Mbr.Signature = 0xA4B57300;
// Set layout
Result = DeviceIoControl(hDrive,IOCTL_DISK_SET_DRIVE_LAYOUT_EX,
& ; ;nbs p; dl,szNewLayout,NULL,0,& ; ; ;szReturned,NULL);
if(!Result)
throw Exception(WhatError());
// update disk properties
DeviceIoControl(hDrive,IOCTL_DISK_UPDATE_PROPERTIES,
NULL,0,NULL,0,&szReturned,NULL);
CloseHandle(hDrive);
delete dl;
分享到:
相关推荐
### 优化分区并格式化以提高IO性能 #### Linux系统操作步骤详解 1. **下载auto_fdisk.zip** - 在云服务器中下载`auto_fdisk.zip`文件,使用wget命令进行下载: ```sh wget ...
2. **格式化**:格式化是指为硬盘分区创建一个新的文件系统,清除所有数据并设置必要的结构。这通常包括创建FAT(文件分配表)或NTFS这样的文件系统,这些系统定义了如何在硬盘上存储和检索文件。 3. **文件系统**...
函数族 用途 可用于所有的流 只用于stdin和stdout 内存中的字符串 scanf 格式化输入 fscanf scanf sscanf printf 格式化输出 fprintf printf sprintf
通过官方渠道获取并使用HP U盘格式化工具,用户可以确保其操作过程的安全性和可靠性。 该工具的V2.0.6版本表明它已经经过多次迭代和优化,修复了可能存在的bug,并且可能增加了新的功能或性能提升。在使用过程中,...
格式化数据的IO指的是按照特定格式读取或写入数据,如控制浮点数的小数位数、添加分隔符等。这个实例005——使用C++实现格式化数据的IO.zip文件,很可能包含了C++源代码示例,教你如何在实际项目中实现这一功能。...
3. **代码格式化与自动完成**:VS Code的插件系统提供了一系列代码辅助工具,如自动代码格式化、代码提示和错误检查。 通过以上步骤,你可以在VS Code中建立起一个功能完备的PlatformIO开发环境,轻松应对ESP32、...
本文将详细讲解如何使用C#获取U盘的盘符、序列号,查询其容量大小,并实现后台格式化及创建指定目录的功能。 首先,获取U盘盘符是通过枚举系统中的所有逻辑驱动器来实现的。C#的`System.IO.DriveInfo`类提供了获取...
在Java编程语言中,输入/输出(IO)流是处理数据传输的核心机制,尤其是在读取和创建文件时。本文将详细讲解如何使用IO流来读取和创建文件,以及涉及的相关概念和技术。 首先,理解IO流的基本概念至关重要。IO流...
首先,要进行磁盘格式化,我们需要使用.NET Framework提供的`System.IO`命名空间中的`DriveInfo`类。`DriveInfo`类提供了获取硬盘驱动器信息以及执行格式化操作的方法。以下是一个简单的示例,展示如何获取磁盘列表...
Atom-atom-drawio是一个专为Atom文本编辑器设计的扩展包,它的主要功能是集成Draw.io图表编辑器,使得用户可以直接在Atom环境中创建和编辑流程图、UML图、网络拓扑图等各种图形。这一特性极大地提升了开发人员和设计...
例如,我们可以创建一个文件并写入格式化的数据: ```cpp #include #include #include int main() { std::ofstream outFile("output.txt"); if (outFile.is_open()) { outFile (10) (15) ; outFile (10) ...
"CC2540 IO CODE" 是一个与CC2540微控制器相关的编程项目,主要涉及的是输入/输出(IO)代码。CC2540是一款由Texas Instruments(德州仪器)生产的超低功耗蓝牙智能单片机,广泛应用于蓝牙BLE(Bluetooth Low Energy...
3. **内核模块编程**:`linux_io_control.ko`是内核模块,用于添加对GPIO的特定硬件支持,可能包括初始化、设置方向、读写GPIO值等功能。 4. **编程接口**:如`gpio_get_value()`和`gpio_set_value()`函数,分别...
packagecontrol.io/channel_v3.json
【磁盘格式化命令】是计算机操作中用于初始化磁盘并准备存储数据的重要工具。FORMAT命令主要用于对磁盘进行格式化处理,包括划分磁道和扇区,检测并标记坏道,建立目录区和文件分配表(FAT)。格式化过程中,磁盘的...
PlatformIO IDE(VSCode) 基本使用 ... PlatformIO IDE 的基本使用到这里就结束了,我们已经学会了如何新建一个项目,编写代码,并将其上传到开发板上。下一步,我们将学习如何使用 PlatformIO IDE 进行调试和优化代码。
读一个,写到另一个文件,每隔一秒钟向文件中写入一行数据
用默认的配置进行格式化之后如下: 使用如下配置后,格式化之后的代码如下: 最终修改成下面这样比较合适: 以上这篇AndroidStudio修改Code Style来格式化自定义标签的xml文件方式就是小编分享给大家的全部内容...
在“多线程格式化移动磁盘”这个场景中,我们可以创建多个线程,每个线程负责格式化一个特定的磁盘分区。这样做的好处是可以充分利用多核处理器的计算能力,加快格式化过程。但需要注意的是,由于磁盘格式化涉及到对...
要使用这个工具,用户需要有西门子PLC的IO表文件,并将其按照指定的格式转换。转换过程可能涉及到数据清洗和格式调整,确保所有必要的信息都被正确解析。一旦转换完成,将生成的文件导入MCGS系统,系统会自动生成...