精通api,05挂载点

原创
2022/09/21 20:06
阅读数 61

挂载点

FindFirstVolumeMountPoint/FindNextVolumeMountPoint/

FindVolumeMountPointClose(关闭)/GetVolumeNameForVolumeMountPoint/SetVolumeMountPc

#定义 _32窗口新技 0x0501

#包含<窗口.h>
#包含<标io.h>
#包含<文符.h>
#定义 缓冲大小 最大路径
#定义 文系名缓冲大小 最大路径

// 功能 列举挂载点
处理卷挂载点(句柄 h点, 文符*点缓冲,双字 点缓冲大小双字, 文符*缓冲)
{
b标志;//结果,
文符 路径[缓冲大小];//全路径
文符 目标[缓冲大小];//挂载点设备

打印格式("\t找到的挂载点是\"%s\"\n",点缓冲);

L串复制(路径,缓冲);
L串连接(路径,点缓冲);

b标志=对卷挂载点取卷名(路径,目标,缓冲大小);

(!b标志)
打印格式("\t试取卷名对%s失败.\n",路径);

打印格式("\t该卷目标挂载点是%s.\n",目标);

b标志=找下一卷挂载点(h点, 点缓冲, 点缓冲大小双字);
(b标志);
}
// 功能 判断卷类型,列举挂载点
处理卷(句柄 h卷,文符*缓冲,双字 i缓冲大小)
{
b标志; // 返回标志
句柄 h点; // 卷句柄
文符 点缓冲[缓冲大小];// 挂载点路径
双字 系统标志双字; // 文件系统标记
文符 文件系统名缓冲[文系名缓冲大小];

打印格式("找到卷是\"%s\".\n",缓冲);

// 是否新文系
取卷信息(缓冲,无效,0,无效,无效,
&系统标志双字,文件系统名缓冲,
文系名缓冲大小);

(!(系统标志双字&文件支持再解析点))
{
打印格式("\t文件系统不支持卷挂载点.\n");
} {
// 本卷中的挂载点
h点=找第一卷挂载点(
缓冲,// 卷的跟跟踪
点缓冲,// 挂载点路径
缓冲大小
);

(h点==无效句柄值)
{
打印格式("\t找不到卷挂载点!\n");
}

{
// 处理挂载点
b标志=处理卷挂载点(h点,点缓冲,缓冲大小,缓冲);
// 循环
(b标志)
b标志=处理卷挂载点(h点,点缓冲,缓冲大小,缓冲);
// 结束
找卷挂载点关闭(h点);
}
}

// 下一个
b标志=找下一卷(h卷,缓冲,i缓冲大小);

(b标志);
}
// 函数 获取挂载点
取挂载点()
{
文符 缓冲[缓冲大小];//卷标识符
句柄 h卷; //卷句柄
b标志; //结果标志

打印格式("本计算机卷挂载点信息:\n\n");
// 打开卷
h卷=找第一卷(缓冲,缓冲大小);
(h卷==无效句柄值)
{
打印格式("找不到!\n");(-1);
}

b标志=处理卷(h卷,缓冲,缓冲大小);
(b标志)
{
b标志=处理卷(h卷,缓冲,缓冲大小);
}

b标志=找关闭卷(h卷);
(b标志);
}

// 功能 使用方法
使用(p 参值)
{
打印格式("\n\n\t%s,在挂载点挂载卷.\n",参值);
打印格式("\t示例, \"挂载 双:\\挂载\\驱动\\ E:\\\"\n");
}

( 参个数,p 参值[])
{
b标志;
缓冲[缓冲大小];

(参个数!=3)
{
取挂载点();
使用(参值[0]);
(-1);
}

b标志=对卷挂载点取卷名(
参值[2], // 输入挂载点或目录
缓冲, // 输出卷名
缓冲大小
);

(b标志!=)
{
打印格式("提取卷名%s失败.\n",参值[2]);
(-2);
}

打印格式("%s的卷名s是%s\n",参值[2],缓冲);
b标志=置卷挂载点(
参值[1], //挂载点
缓冲 //需要挂载的卷
);

(!b标志)
{
打印格式("在%s尝试挂载%s失败.错误代码是\n",参值[1],参值[2],取上次错误());
}

(b标志);
}



本文分享自微信公众号 - 周三石(gh_6eecda59ada1)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部