为啥64G优盘不能格式化为FAT32?
来源:嵌入式专栏 发布时间:2024-08-22 分享至微信


作者 | strongerHuang


不知道大家有没有格式化过64G、128G的U盘或SD卡?

在windows系统上,你会发现格式64G以上的U盘或SD卡,只能格式化为NTFS或exFAT格式,不能格式化为FAT32的格式。



原则上FAT32格式可以支持2T的硬盘,但为什么windows系统会出现这样的问题呢?

话要从30年前说起:在1994年末一个下雨的周四早上,我(作者,戴夫-普卢默)在微软写的这个格式对话框......

戴夫-普卢默 (Dave Plummer) 是微软的资深工程师,今年他在自己的 X 账户上分享了创建 "格式化" 对话框的故事。


在1994年末一个下雨的周四早上,我在微软写的这个格式对话框。我们将Windows95用户界面的数百万行代码移植到NT上,格式只是windowsNT与Windows95不同的地方之一,我们不得不提出一些自定义UI。


我拿出一张纸,写下了与格式化磁盘相关的所有选项,比如文件系统、标签、集群大小、压缩、加密等等。


然后我打开了VC++ 2.0,并使用资源编辑器将你必须做出的所有选择按大致顺序排列成一个简单的垂直堆栈。。。


当时这个设计的初衷并不是为了美观,只是一个临时的解决方案。但是,没想到这个方案一用就是30年。即使现在最新的 Windows 11,格式化对话框仍然维持着当年的样式。

不过,最近微软官方博客发布消息:Windows 11 将取消了 FAT32 分区的 32GB 大小限制(最大可设置为 2TB


但是这项变化仅面向命令行生效。图形界面里的格式化对话框仍然有 32GB 的 FAT32 分区大小限制。


64G、128G优盘如何格式化为FAT32?

方法其实有很多,自己写代码实现,也可以通过第三方工具实现。

1、自己写代码实现

比如,我们单片机上常用FatFS就可以实现。
FRESULT f_mkfs(      const TCHAR* path,    /* 逻辑驱动器号 */      BYTE opt,             /* 格式选项 */      DWORD au,             /* 分配单元大小 */      void* work,           /* 指向工作缓冲区的指针 */      UINT len              /* 工作缓冲区大小 */  );    // 示例:在逻辑驱动器0上创建一个FAT32文件系统  BYTE work[_MAX_SS]; // 工作缓冲区,大小通常为扇区大小(如512字节、1024字节等)  FRESULT res = f_mkfs("0:", FM_FAT32, 0, work, sizeof(work));  if (res != FR_OK) {      // 处理错误  }

2、用第三方工具实现

比如:DiskGenius这款工具,免费版本就可以实现该功能。


[ 新闻来源:嵌入式专栏,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论

暂无评论哦,快来评论一下吧!