博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows API 第19篇 FindFirstVolumeMountPoint FindNextVolumeMountPoint
阅读量:6836 次
发布时间:2019-06-26

本文共 2006 字,大约阅读时间需要 6 分钟。

相关函数:

HANDLE FindFirstVolumeMountPoint(
                                                              LPTSTR lpszRootPathName,     // volume name
                                                              LPTSTR lpszVolumeMountPoint, // output buffer
                                                              DWORD cchBufferLength        // size of output buffer
                                                             );
BOOL FindNextVolumeMountPoint(
                                                             HANDLE hFindVolumeMountPoint,    // search handle
                                                             LPTSTR lpszVolumeMountPoint,     // output buffer
                                                             DWORD cchBufferLength            // size of output buffer
                                                        );
BOOL FindVolumeMountPointClose
                                                            HANDLE hFindVolumeMountPoint    // search handle
                                                          );

 

说明:

这几个函数都是与驱动器挂载点操作相关的,关于挂载点就不多介绍了,可以在磁盘管理中,选择更改驱动器号和路径里设置,设置后自己看看效果就理解挂载点的意思了。
这三个函数的使用和FindFirstVolume, FindNextVolume, FindVolumeClose函数的使用差不多,而这里用FindFirstVolume函数找到的卷名恰好可以做为FindFirstVolumeMountPoint的第一个参数,

所以他们可以一起使用,不过我测试过直接拿诸如“C:\\”的参数传到FindFirstVolumeMountPoint的第一个参数里也是可以成功的。

下面写一个测试代码:

int _tmain(int argc, _TCHAR* argv[]){	CHAR szVolumeName[MAX_PATH] = { 0 };	CHAR szVolumeMountPoint[MAX_PATH] = { 0 };	HANDLE hVolume;	HANDLE hVolumeMountPoint;	//查找第一个驱动器名字	hVolume = FindFirstVolumeA(szVolumeName, MAX_PATH);	if (INVALID_HANDLE_VALUE == hVolume)		return 0;        printf("%s \n", szVolumeName);        //根据名字找挂载点	hVolumeMountPoint = FindFirstVolumeMountPointA(szVolumeName, szVolumeMountPoint, MAX_PATH);	if (INVALID_HANDLE_VALUE == hVolumeMountPoint)	{		FindVolumeClose(hVolume);                return 0;	}	while (FindNextVolumeMountPointA(hVolumeMountPoint, szVolumeMountPoint, MAX_PATH))	{		printf("%s \n", szVolumeMountPoint);	}		while (FindNextVolumeA(hVolume, szVolumeName, MAX_PATH))	{		printf("%s \n", szVolumeName);		hVolumeMountPoint = FindFirstVolumeMountPointA(szVolumeName, szVolumeMountPoint, MAX_PATH);		do		{			if (INVALID_HANDLE_VALUE == hVolumeMountPoint)			{				break;			}			printf("%s \n", szVolumeMountPoint);		}		while (FindNextVolumeMountPointA(hVolumeMountPoint, szVolumeMountPoint, MAX_PATH));	}	FindVolumeClose(hVolume);	FindVolumeMountPointClose(hVolumeMountPoint);}

 分析:一般我们的机上子没有挂载点,所以上面的程序找不到挂载点,只能看到GetFirstVolume函数有返回值。不过可以手动设置挂载点,只要你设置挂载点后就会看到GetFirstVolumeMountPoint也会返回有效句柄了

转载于:https://www.cnblogs.com/priarieNew/p/9755437.html

你可能感兴趣的文章
《Spring技术内幕》——导读
查看>>
电讯盈科企业方案公司成立全球数据中心联盟
查看>>
美国情报部门表示可通过物联网监控公民
查看>>
2016年俄罗斯M2M市场达100亿俄罗斯卢布
查看>>
AI民主化:你愿意与Cortana共享绝密隐私吗?
查看>>
零售连锁企业CRM可以实现什么?
查看>>
说说CORS与jsonp
查看>>
Vue组件间通信
查看>>
webpack笔记
查看>>
最最最常用的十大ES6特性总结
查看>>
leetcode.最小栈问题
查看>>
js实现可执行的字符串计算
查看>>
IPFS基本使用
查看>>
玩转Go语言之闭包
查看>>
iOS 控制器的实例 的block循环引用
查看>>
用委托者模式实现的多类型Adapter
查看>>
大数据技术于应用 可视化图表的开发应用
查看>>
说说MySQL索引相关
查看>>
小猿圈Java学习之程序员需要注意的5项守则
查看>>
CentOS 6.5安装Redis-2.8.23
查看>>