GetLogicalDriveStrings FindFirstVolume和FindNextVolume
文章目录
- GetLogicalDriveStrings
- 函数功能:
- 函数原型:
- 第一个参数
- 第二个参数
- 返回值:
- 代码实现
- FindFirstVolume
- 函数功能
- 第一个参数
- 第二个参数
- 返回值
- FindNextVolume
- 函数功能
- 第一个参数
- 第二个参数
- 第三个参数
- 返回值
GetLogicalDriveStrings
GetLogicalDriveStrings(BUFSIZE - 1, szLogicalDriveStrings);
函数功能:
获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径。
函数原型:
DWORD GetLogicalDriveStrings(DWORD nBufferLength, // size of bufferLPTSTR lpBuffer // drive strings buffer );
第一个参数
DODOWRD cchBuffer
,缓冲区的大小
第二个参数
LPTSTR lpszBuffer
,用于装载逻辑驱动器名称的字串。每个名字都用一个NULL
字符分隔,在最后一个名字后面用两个NULL表示中止(空中止) 例如a:\\0c:\\0d:\\0h:\\0\0
每一个名字所占三个字节,a:\ 三个字符,然后当printf
遇到一个\0输入就截止了,所以要用while循环,利用最后一个名字后面为两个\0作为判断,停止输出,这样我们就能输完所有的名字。
lstrlen(szDrive)
的结果为3,代表\0
之前有三个字节,也就印证了上面我们的假设,但如果再+1跳过\0
后,我们就能继续输出下一个名字了;但当我们遇到最后一个名字时,这个名字首地址+4之后遇到的就是\0
了。
返回值:
函数执行成功…返回填充完毕的缓冲区字符的的个数…不是长度…char
和TCHAR
返回数目都是一样的…
一般是4的倍数…(形如C:\ 包括之后的一个空字符0)…
如果缓冲区不够大,则返回值大于nBufferLength
如果失败…函数返回0…若想获得更多的错误信息,请使用GetLastError
函数
所输出这种 c:\ 叫做逻辑驱动器 名
代码实现
CHAR szLogicalDriveStrings[BUFSIZE];ZeroMemory(szLogicalDriveStrings, BUFSIZE);//把这个字符串清零GetLogicalDriveStrings(BUFSIZE - 1, szLogicalDriveStrings);//第一个参数就是字符数组的大小(长度)PCHAR szDrive;szDrive = (PCHAR)szLogicalDriveStrings;printf("%d\n", lstrlen(szDrive));/* a:\\0c:\\0d:\\0h:\\0 \0 */do {printf("%s\n", szDrive);szDrive += (lstrlen(szDrive) + 1);} while (*szDrive != '\0');
上面那个用字幕表示的,叫做逻辑驱动器名 是简单的。。。
下面 这种名称叫做设备名 每个盘都有 这个格式很特殊 这是个完整的名称 是唯一的 特殊格式的。。。
FindFirstVolume
函数功能
查找主机中的第一个驱动器,返回驱动器设备名
第一个参数
lpszVolumeName
:指向驱动器名的内存缓冲区。
第二个参数
cchBufferLength
:参数 lpszVolumeName
所指向的缓冲区大小,以字节为单位。
返回值
驱动器查找句柄, 返回一个句柄,FindNextVolume
和 FindVolumeColse
的参数, 如果执行失败, 返回 NULL。
FindNextVolume
函数功能
查找主机中后继的逻辑驱动器
第一个参数
hFindVolume
: FindFirstVolume
所返回的驱动器查找句柄。
第二个参数
lpszVolumeName
:指向保存驱动器名的内存缓冲区
第三个参数
cchBufferLength
:参数 lpszVolumeName
所指向的缓冲区大小,以字节为单位。
返回值
返回 BOOL 表示是否成功,如果失败说明已经查找完成所有逻辑驱动器。
TCHAR buf[BUFSIZE];HANDLE hVol;BOOL bFlag;hVol = FindFirstVolume(buf,BUFSIZE);if (hVol == INVALID_HANDLE_VALUE) {printf("%s\n", buf);return -1;}printf("%s\n", buf);while (FindNextVolume(hVol, buf, BUFSIZE)){printf("%s\n", buf);}bFlag = FindVolumeClose(hVol);
每个盘都有一个唯一的设备名
备注:
2021年坚持学写博客第7天(学习两个windows API) 寻梦SS
明日目标:
windows核心编程API函数
GetLogicalDriveStrings FindFirstVolume和FindNextVolume相关推荐
- FindFirstVolume系列函数遍历驱动器,获取驱动器信息
什么是"卷"? 卷,又称为"逻辑驱动器",是 NTFS, FAT32 等文件系统组织结构的最高层.卷是存储设备(如硬盘)上由文件系统管理的一块区域,是在逻辑上相 ...
- WinApi学习笔记-获取电脑中磁盘信息
#include <windows.h> #include <stdlib.h> #include <stdio.h>#define BUFSIZE 1024voi ...
- 获取硬盘和卷或分区相关信息(容量,ID,卷标名字等)
1.枚举所有硬盘 这里主要借助了setup API,这些API主要是NT4.0之后提供的一些用于操作设备的API. 枚举所有硬盘借助了SetupDiGetClassDevs与SetupDiEnumDe ...
- GetLogicalDriveStringS获取驱动器根路径
GetLogicalDriveStringS获取驱动器根路径 #include <windows.h> #include <stdlib.h> #include <std ...
- Windows API 逐个逐个学MessageBox(5) 遍历驱动器并获取驱动器属性 GetLogicalDriveStrings、GetDriveTypeA...
首先还是贴代码 VC++ Code: /* *************************************<精通Windows API> * 示例代码* GetVolumeIn ...
- Windows API ——GetLogicalDriveStrings——获取逻辑驱动器
1 TCHAR buffer[MAX_PATH]; 2 DWORD dwVal=::GetLogicalDriveStrings(MAX_PATH,buffer); 3 4 CString str; ...
- 《精通Windows API-函数、接口、编程实例》——第4章文件系统
第4章文件系统 4.2 磁盘和驱动器管理 文件系统的基本概念: 包括磁盘分区,卷,目录,文件对象,文件句柄,文件映射 1.磁盘分区: 物理磁盘,逻辑磁盘 2.卷: 也称逻辑驱动器,是NTFS,FAT3 ...
- 对硬盘操作的API介绍以及应用测试
磁盘和驱动器管理API GetLogicalDrivers 获取主机中所有的逻辑驱动器,以BitMap的形式返回. GetLogicalDriverString 获取主机中所有的逻辑 ...
- windows磁盘相关API实践说明
原帖地址:http://www.cnblogs.com/matrix-r/p/3288886.html API的列表如下,网上找的,我觉得还是蛮详细的: 磁盘和驱动器管理API GetLogicalD ...
最新文章
- Linux命令基础6-mkdir命令
- 变了味的微信你还能用多久?
- C++ Primer 5th笔记(2)chapter 2变量和基本类型:constexpr 、auto、类型别名、decltype
- linux 虚拟机安装图形界面,linux 在虚拟机中安装图形界面
- linux c之用fputc和fgetc复制文件并且打印在终端
- linux输入法没有候选,fcitx中文输入法没有备选框
- 你以为PHP那么好自定义升级?
- 第一章:第三课 选择器-状态伪类选择器[四]
- 谨以此文献给才毕业1--5年的朋友。。
- Storm sql 简单测试
- 正宗eMule官方网站导航
- 汉语语言分析(2) - 短语
- vue调用手机浏览器打开pdf_在微信中调用外部浏览器实现文件下载之解决
- (内附独家PPT)李岩:CynosDB高可用系统介绍
- java计算机毕业设计南通大学福利发放管理系统源码+系统+数据库+lw文档+mybatis+运行部署
- Canvas制作RPG手机版游戏(一):
- 〖TensorFlow2.0笔记21〗自定义数据集(宝可精灵数据集)实现图像分类+补充:tf.where!
- 看京东和淘宝的地址薄设计----填写订单的场景下
- MSSQL2019+Linux7, The SQLServerAgent is not currently running, so it cannot be notified of this
- 在html5中flex布局详解,Flex布局详解(一)
热门文章
- 成功解决 shape = predictor(img, dets[0]) IndexError: Index out of range
- DL之DNN优化技术:自定义MultiLayerNet【5*100+ReLU】对MNIST数据集训练进而比较三种权重初始值(Xavier参数初始化、He参数初始化)性能差异
- TF之LSTM:利用基于顺序的LSTM回归算法对DIY数据集sin曲线(蓝虚)预测cos(红实)(TensorBoard可视化)
- 利用多项式特征生成与递归特征消除解决特征组合与特征选择问题
- qmake 之 CONFIG 与 QT 乱谈
- Arcface demo
- Python 中的 lstrip、rstrip、strip
- React的核心概念
- Java 中浮点数---------BigDecimal和double(初探)
- c/c++头文件函数一览表