调用Windows外壳程序格式化磁盘

看资料介绍说 Windows 2000 以上的 SDK 提供了格式化逻辑驱动器的函数 SHFormatDrive, 这是一个外壳函数(Windows界面操作环境称之为外壳),从 shell32.dll 库导出,调用后会弹出一个格式化对话框,只有用户单击"开始"按钮后格式化才开始,使用时应包含头文件 shlobj.h 

我都照做了,下载安装了 Windows XP SP2 的 SDK, 并配置在了 VC 的 include和lib目录中了,也把新SDK的目录调到了最上面,程序中也包含了 shlobj.h, 而且看到新的 SDK 的 shlobj.h 中确实有 SHFormatDrive 函数原型,可是当我使用 SHFormatDrive 函数编译时总提示我找不到这个符号。不知道发生什么问题了,留待以后有需求时再解决吧,反正就是预编译宏展开时,不是去 include 新的 SDK 的 shlobj.h 文件,include 的是 VC98 中的 shlobj.h 文件。 无奈之时,只能手工的加载 shell32.dll, 找到 SHFormatDrive 函数地址进行调用了。

 SHFormatDrive 函数用法如下:

函数的返回值是最后一次成功格式化的碰盘标识,或者是下列取值之一:
SHFMT_ERROR         上次格式化出错,磁盘可能被格式化
SHFMT_CANCEL         格式化被取消
SHFMT_NOFORMAT       不能进行磁盘格式化 

实现代码如下: 

参考资料:1. 磁盘格式化的编程实现
          2. 《Windows 程序设计》(王艳平编著),第八章 Windows 文件操作的内存映射

本文链接 https://yanbin.blog/windows-call-shell-format-disk/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments