SHFormatDrive格式化硬盘

从实际应用的角度看,从Windows   9X到Windows   NT都应该提供这个FormatDisk函数,否则怎么实现资源管理器窗口的磁盘格式化呢?笔者通过仔细查找发现,Windows   确实提供了这样一个函数,尽管文档资料没有注明,但是如果我们使用View   Dependencies打开Shell2.dll,就会发现这个函数。它就是SHFormatDrive,编译连接到Shell32.lib。尽管通过平台的SDK文档和SHELLAPI.H文件并不能发现这个函数,但是Win32各个操作系统都能找到它的踪影。应用程序可以通过调用这个函数实现借用外壳的磁盘格式化对话框格式化磁盘。调用约定如下:

DWORD   WINAPI   SHFormatDrive(HWND   hwnd,UINT   drive,UINT   fmtID,UINT   options);   

参数含义如下:

hwnd:拥有对话框的窗口句柄,注意hwnd为NULL时,并不会导致这个对话框生成一个上层的应用程序,也就是说,这个参数总是非NULL,这个对话框只能作为一个窗口的子窗口,而不能作为一个单独的应用程序;
drive:要格式化的驱动器号,以A:   ==   0为基准,依此类推;
fmtID:必须设定为   SHFMT_ID_DEFAULT,即0xFFFF;
options:可以有两个选择项:SHFMT_OPT_FULL   0x0001和SHFMT_OPT_SYSONLY   0x0002,如果这一项设置为零,系统就要使用快速格式化作为默认设置。     

该函数的返回值要么为一个下列以SHFMT_开头的值,要么是一个成功格式化的磁盘标识。

//上次格式化出错,磁盘可能被格式化
#define   SHFMT_ERROR   0xFFFFFFFFL
//格式化被取消
#define   SHFMT_CANCEL   0xFFFFFFFEL
//   不能进行磁盘格式化
#define   SHFMT_NOFORMAT   0xFFFFFFFDL     

实现步骤   
1.函数接口声明

typedef   DWORD   (WINAPI   *PFNSHFORMATDRIVE)(HWND   hwnd,UINT   drive,UINT   fmtID,UINT   options);   

2.加载Shell32.dll库

HINSTANCE   hInstance=LoadLibrary(_T
(“Shell32.dll”));
If(hInstance==NULL)   return;   

3.获得函数指针

PFNSHFORMATDRIVE   pFnSHFormatDrive=(
PFNSHFORMATDRIVE)GetProcessAddress(_T
(“SHFormatDrive”));
if(pFnSHFormatDrive==NULL)
{
FreeLibrary(hInstance);
return;
}   

4.调用函数

(pFnSHFormatDrive)(hwnd,drive/*a:==0*/,fmtID/*   SHFMT_ID_DEFAULT   */,options);   

5.释放句柄资源

FreeLibrary(hInstance);
Return; 

SHFormatDrive格式化硬盘相关推荐

  1. 树莓派-格式化硬盘(U盘)为ext4格式并挂载

    一直找不到关于树莓派格式化硬盘或U盘成ext4并挂载的教程,经过多方寻找,终于找到一个可行的方法(其他方法不是缺步骤就是命令不对).不想吐槽引擎的搜索机制,故将其记录,以便后来者或将来需要时使用. 原 ...

  2. linux下Bash编程until语句及格式化硬盘分区等编写脚本(十)

    linux下Bash编程until语句及格式化硬盘分区等编写脚本(十) 1.循环语句结构总结 1.1.while语句当条件满足时,进入循环语句 while 条件; do 语句 done 1.2.unt ...

  3. linux挂载硬盘的分区创建,Linux 新增硬盘、新建分区、格式化硬盘、挂载硬盘的操作...

    今天学校有一台机器发现有块硬盘没有挂载,然后叫我挂载一下,这里记录一下 Linux 下新增硬盘分区.格式化硬盘.挂载硬盘的操作. 查看当前硬盘 首先我们查看一下当前的硬盘配置.使用命令 sudo fd ...

  4. 对计算机的硬盘进行高级格式化,牛刀初试 高级格式化硬盘完全体验

    性能对比 笔者对高级格式化标准的硬盘进行了测试.WD20EARS硬盘的未对齐分区在PCMark Vantage HDD测试中,成绩非常不理想,只有2452分,明显不正常.而对齐操作后,分数上升到了37 ...

  5. linux格式化外接硬盘命令,linux格式化硬盘命令

    这是一个很少用到的命令,除非你可以预知你的操作产生的后果,linuxso不建议你使用此命令. 名称: mformat 使用权限: 所有使用者 使用方式: mformat[-t cylinders] [ ...

  6. 格式化硬盘并安装Win10和Ubuntu双系统

    格式化硬盘并安装Win10和Ubuntu双系统 格式化硬盘并安装Win10 我拿到一台二手台式机,它原本是Ubuntu系统,上面有多个用户,且磁盘空间几乎已经占满了.我现在需要将硬盘格式化,安装Win ...

  7. 如何在Windows DOS环境下格式化硬盘

    在Windows环境下格式化硬盘的方法比较多,本文介绍如何在DOS环境下彻底格式化某硬盘.该方法主要适合于未分区或里面已经有不同操作系统的硬盘,因为这类盘插在电脑上,在设备管理器里面可以看到,但你在系 ...

  8. 计算机格式化什么意思,格式化硬盘是什么意思?怎么格式?格式了有什么用?会有什么后果?...

    格式化硬盘,如何格式化硬盘,如何硬盘格式化?这是广大电脑初学者经常询问的问题,因为格式化硬盘是安装装系统的前提,所以这就成为了需要首先解决的问题,本文将针对如何格式化硬盘这个专题给广大网友作答: 两种 ...

  9. 计算机怎么格式化硬盘,电脑怎么格式化硬盘

    格式化一词大家肯定都听说过,它会清除磁盘或分区中所有的文件,是进行初始化的一种操作.很多朋友不会格式化电脑硬盘.那么接下来就教大家如何格式化硬盘? 方法一: 1.打开我的电脑,选择需要格式化的硬盘,比 ...

最新文章

  1. linux清除邮件队列
  2. Scala集合:List增加元素及集合拼接操作
  3. 分享程序员提升自身能力的7个实用网站
  4. 假如,绿茶婊的目标变成女生......
  5. 网站 html 中英文切换 - API 总结篇
  6. ssis zip压缩文件_在SSIS中处理参差不齐的正确格式的文件
  7. 严重漏洞已存在16年,数亿台打印机受影响
  8. 青花瓷Charles安装
  9. 使用工具YUMI制作多系统启动盘
  10. Selenium_python 断言
  11. 红警ol服务器维护中1003,红警OL频繁掉线怎们么办 网络断开连接解决办法
  12. idea debug报错无法调试 Disconnected from the target VM
  13. 深受启发的21个故事
  14. 计算机的职业形象,计算机专业科开展学生干部职业形象塑造专题培训
  15. Linux内核之进程管理《Linux内核设计与实现》
  16. 睡到自然醒的7个关键
  17. 获取微信小程序源码教程
  18. 京东 java 待遇_【深圳京东工资】java开发工程师待遇-看准网
  19. 使用GPO禁用本地管理员帐户
  20. 项目管理软件Primavera P6简介

热门文章

  1. C++ 代码调试建议
  2. Spring MVC —— form表单post提交出现乱码
  3. sonar扫描java、js、jsp技术
  4. php 5.0 新字符串
  5. [BZOJ 3207] 花神的嘲讽计划Ⅰ【Hash + 可持久化线段树】
  6. apt-get 操作过程中提示无法解析域名“cn.archive.ubuntu.com” 的解决
  7. 在线最大公因数计算器
  8. Linux 不同方法查看进程消耗CPU IO 等
  9. box-sizing 的作用
  10. ROS,launch学习