基于visual c++之windows核心编程代码分析(23)遍历驱动器并获取驱动器属性
来源:互联网 发布:标签打印排版软件 编辑:程序博客网 时间:2024/06/03 02:56
我们在进行Windows编程的时候,经常需要进行遍历驱动器并获取驱动器属性,我们来实现遍历驱动器并获取驱动器属性。请见代码实现与注释讲解
#define _WIN32_WINNT 0x0501/* 头文件 */#include <windows.h>#include <stdio.h>/* 预定义 */#define BUFSIZE MAX_PATH/* 函数申明 */BOOL GetDirverInfo(LPSTR szDrive);/* ************************************* 功能应用程序主函数,遍历驱动器并调用*GetDirverInfo 获取驱动器属性**************************************/int main(void){TCHAR buf[BUFSIZE]; // 卷标信息HANDLE hVol; // 卷遍历句柄BOOL bFlag;hVol = FindFirstVolume (buf, BUFSIZE );if (hVol == INVALID_HANDLE_VALUE){printf (TEXT("No volumes found!\n"));return (-1);}GetDirverInfo (buf);while( FindNextVolume(hVol,buf,BUFSIZE)){GetDirverInfo (buf);}bFlag = FindVolumeClose(hVol);return (bFlag);}/* ************************************ * BOOL GetDirverInfo(LPSTR szDrive) * 功能获取驱动器的属性 * 参数LPSTR szDrive * 指明要获取属性的驱动器的根路径 如 C:\ * 返回值 BOOL 是否成功 **************************************/BOOL GetDirverInfo(LPSTR szDrive){UINT uDriveType;DWORD dwVolumeSerialNumber;DWORD dwMaximumComponentLength;DWORD dwFileSystemFlags;CHAR szFileSystemNameBuffer[BUFSIZE];CHAR szDirveName[MAX_PATH];printf("\n%s\n",szDrive);uDriveType = GetDriveType(szDrive);switch(uDriveType){case DRIVE_UNKNOWN:printf("The drive type cannot be determined. ");break;case DRIVE_NO_ROOT_DIR:printf("The root path is invalid, for example, no volume is mounted at the path. ");break;case DRIVE_REMOVABLE:printf("The drive is a type that has removable media, for example, a floppy drive or removable hard disk. ");break;case DRIVE_FIXED:printf("The drive is a type that cannot be removed, for example, a fixed hard drive. ");break;case DRIVE_REMOTE:printf("The drive is a remote (network) drive. ");break;case DRIVE_CDROM:printf("The drive is a CD-ROM drive. ");break;case DRIVE_RAMDISK:printf("The drive is a RAM disk. ");break;default:break;}if (!GetVolumeInformation(szDrive,szDirveName,MAX_PATH,&dwVolumeSerialNumber,&dwMaximumComponentLength,&dwFileSystemFlags,szFileSystemNameBuffer,BUFSIZE)){return FALSE;}if(0!=lstrlen(szDirveName)){printf ("\nDrive Name is %s\n",szDirveName);}printf ("\nVolume Serial Number is %u",dwVolumeSerialNumber);printf ("\nMaximum Component Length is %u",dwMaximumComponentLength);printf ("\nSystem Type is %s\n",szFileSystemNameBuffer);if(dwFileSystemFlags & FILE_SUPPORTS_REPARSE_POINTS){printf ("The file system does not support volume mount points.\n");}if(dwFileSystemFlags & FILE_VOLUME_QUOTAS){printf ("The file system supports disk quotas.\n");}if(dwFileSystemFlags & FILE_CASE_SENSITIVE_SEARCH){printf ("The file system supports case-sensitive file names.\n");}//you can use these value to get more informaion////FILE_CASE_PRESERVED_NAMES//FILE_CASE_SENSITIVE_SEARCH//FILE_FILE_COMPRESSION//FILE_NAMED_STREAMS//FILE_PERSISTENT_ACLS//FILE_READ_ONLY_VOLUME//FILE_SUPPORTS_ENCRYPTION//FILE_SUPPORTS_OBJECT_IDS//FILE_SUPPORTS_REPARSE_POINTS//FILE_SUPPORTS_SPARSE_FILES//FILE_UNICODE_ON_DISK//FILE_VOLUME_IS_COMPRESSED//FILE_VOLUME_QUOTASprintf("...\n");return TRUE;}
- 基于visual c++之windows核心编程代码分析(23)遍历驱动器并获取驱动器属性
- 基于visual c++之windows核心编程代码分析(23)遍历驱动器并获取驱动器属性
- SDK遍历驱动器并获取驱动属性
- 基于visual c++之windows核心编程代码分析(46)遍历数字证书
- 基于Visual C++之Windows核心编程代码分析(4)获取操作系统信息
- 基于visual c++之windows核心编程代码分析(13)获取磁盘可用空间信息
- 基于visual c++之windows核心编程代码分析(21)获取和设置环境变量
- 基于Visual C++之Windows核心编程代码分析(4)获取操作系统信息
- 基于visual c++之windows核心编程代码分析(13)获取磁盘可用空间信息
- 基于visual c++之windows核心编程代码分析(21)获取和设置环境变量
- 基于visual c++之windows核心编程代码分析 实现Windows服务并安装,控制
- 基于visual c++之windows核心编程代码分析(9)实现Windows服务并安装,控制
- 基于visual c++之windows核心编程代码分析(9)实现Windows服务并安装,控制
- 基于visual c++之windows核心编程代码分析(52)使用WMI 获取进程启动参数
- 基于Visual C++之Windows核心编程代码分析(2)实现Windows用户管理
- 基于visual c++之windows核心编程代码分析(61)打造自己的Windows输入法
- 基于Visual C++之Windows核心编程代码分析(2)实现Windows用户管理
- 基于Visual C++之Windows核心编程代码分析(2)实现Windows用户管理
- Silverlight开发历程—动画(线性动画一些效果)
- gzip: stdin: not in gzip format tar: Child returned status 1
- 程序员编程艺术:第十章、如何给10^7个数据量的磁盘文件排序
- 庖丁解牛TLD(四)——Tracking解析
- .net应该要知道的内容
- 基于visual c++之windows核心编程代码分析(23)遍历驱动器并获取驱动器属性
- 大学英语四级,你悲催了没
- 感悟定位人生之一(从前天的项目聚会的失落说起)
- struts2实现文件下载
- 关于在配置Samba服务器遇到的一些问题!
- amchart导出图片(ssh实现)
- 亲爱的,我会更加努力,成为一个更优秀的人
- Python - 熟悉httplib2
- 【我所認知的BIOS】—>PCI 配置空間拾趣-2