吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1430|回复: 3
收起左侧

[已解决] 如何使用visual c++格式化特定硬盘上的特定分区

[复制链接]
Billraozihan 发表于 2020-7-21 16:36
本帖最后由 Billraozihan 于 2020-7-23 18:19 编辑

如题,想用c++和windows api制作一个磁盘分区软件,已经完成了分区部分的功能,但是找不到c++格式化分区的方法。

分区方案是固定的:mbr分区表,尾部620MB FAT32文件系统,其余全部可用容量给一个文件系统为exFAT的分区。

分区部分的实现我是直接用creatfile+writefile写的分区表(获得总扇区数 -> creatfile打开磁盘 -> readfile检验第0扇区末尾是否是 55 AA (正常mbr分区表的代表性字符,防止写入时出错)  -> 通过获取到的总扇区数计算第一个exfat的分区的容量 -> 将计算成的容量改写成16进制倒叙(初步过滤大于2TB容量的磁盘) -> writefile写入)因此新建立的两个分区均没有盘符,均未格式化。

查询msdn以及其他社区后得知有一名为 FormatEx 的函数可以格式化带有盘符的分区。再次查找之后得知 windows api 可以将 盘符 与 磁盘GUID 互相转换。但无奈 盘符 没有,guid 又不知道。

因此,在这里求助各位大佬:如何使用visual c++格式化特定硬盘上的特定分区。

(或者可以将问题改为:MBR 分区表下各个分区的盘符信息的存储位置在哪里?(知道这个信息后可以通过writefile手动写盘符))

谢谢

补充:这个程序的兼容性要求是 Windows XP。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Billraozihan 发表于 2020-7-21 21:13
本帖最后由 Billraozihan 于 2020-7-21 21:34 编辑
星间旅行 发表于 2020-7-21 20:00
看看Powershell的 Get-Partition 的结果呢?Get-Partition | Format-List  就能看到所有的磁盘ID了。
Get- ...

谢谢,使用
[PowerShell] 纯文本查看 复制代码
Get-Partition -DiskNumber 2 | Select-Object AccessPaths
实现了功能。
[PowerShell] 纯文本查看 复制代码
Get-Partition -DiskNumber 2 | Select-Object GUID
会获取不到我用我的方法分出的分区

不过还是没有解决全部问题,这个程序的兼容性要求是windows xp,而这段ps代码在win7上就会失效。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 14:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表