SDK遍历驱动器并获取驱动属性
来源:互联网 发布:无线网络管理工具 mac 编辑:程序博客网 时间:2024/06/06 14:19
提示这里分成两个文件,一个是GetDriveInfo.h,另一个是APIFinfFirstVolume.cpp
//APIFinfFirstVolume.cpp 代码如下
/*
// 在这个程序里面。显示的驱动不是如C:\这样的
// 而是直接显示 物理驱动的唯一标示,
// 每个都是不一样的请仔细看清楚了!
// 这些都是 保存驱动器名称的内存缓存区
// \\?\Volume{56ffabb3-0ce3-11e1-a106-806d6172696f}\ C:\
// \\?\Volume{56ffabb4-0ce3-11e1-a106-806d6172696f}\ D:\
// \\?\Volume{56ffabb5-0ce3-11e1-a106-806d6172696f}\ E:\
// 不同之处在这里,向上看
http://wenwen.soso.com/z/q254494002.htm?sp=1001
*/
/*****************************
// 遍历驱动器并获取驱动属性
*****************************/
/*宏定义*/
#define _WIN32_WINNT 0x0501
//#define BUFSIZE MAX_PATH
/*头文件*/
#include <windows.h>
#include <stdio.h>
#include "GetDriveInfo.h" //自己写的头文件
/*************************
//功能:应用程序主函数,遍历驱动器并调用
// GetDriverInfo 获取驱动器属性
*************************/
int main(void)
{
TCHAR buf[BUFSIZE]; //卷标信息 //
HANDLE hVol; //卷遍历
BOOL bFlag;
//ZeroMemory(buf, MAX_PATH);
hVol = FindFirstVolume(buf,BUFSIZE);//
if(hVol == INVALID_HANDLE_VALUE)
{
printf(TEXT("NO Volume Found!\n"));
return -1;
}
GetDriverInfo(buf);
//printf("\n\n%s\n",szDriveName);
while( FindNextVolume(
hVol,
buf,
BUFSIZE))//
{
GetDriverInfo(buf);
}
bFlag = FindVolumeClose( hVol );
return (bFlag);
}
//---------------------------------------------------------------------------------------------------------------
//---------------------------GetDriverInfo.h---------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------
//GetDriveInfo.h代码如下
/*宏定义*/
#define BUFSIZE 1024
/*函数声明*/
BOOL GetLogicDriverInfo(LPSTR szDrive);
/*************************
//BOOL GetDriverInfo(LPSTR szDrive)
//功能:
//参数:
//指明要获取属性的驱动器的根路径,如C:\
//返回BOOL值:表示是否成功
*************************/
BOOL GetDriverInfo(LPSTR szDrive)
{
UINT uDriveType;
DWORD dwVolumeSerialNumber;
DWORD dwMaximumComponentLenght;
DWORD dwFileSystemFlags;
CHAR szFileSystemNameBuffer[ BUFSIZE];
CHAR szDriveName[MAX_PATH]; //驱动器名称
printf("\n\n%s\n",szDrive);
uDriveType = GetDriveType(szDrive); //获取驱动类型
switch(uDriveType)
{
case DRIVE_UNKNOWN: //未知驱动器
printf("The Driver type cannot be determined.");
break;
case DRIVE_NO_ROOT_DIR: //无根目录的驱动器
printf("The root path is invalid, no volume is mounted at the path.");
break;
case DRIVE_REMOVABLE: //不可移除的驱动器
printf("The drive is a type that removable media,for example,a floppy drive or removable hard disk.");
break;
case DRIVE_FIXED: //固定驱动器
printf("The drive is a type that cannot be removable,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.");
case DRIVE_RAMDISK: //随机存储驱动
printf("The drive is a ram disk.");
break;
default:
break;
}
//无法获取驱动信息 返回BOOL值
if( !GetVolumeInformation (
szDrive, //输入参数,指向所要获取属性的驱动器的根路径字符串
szDriveName, //输出参数,返回驱动器名称
MAX_PATH, //输入参数,内存缓冲区大小
&dwVolumeSerialNumber, //输出参数,存储驱动器序列号
&dwMaximumComponentLenght, //输出参数,返回文件系统所支持的文件组成部分的最大值
&dwFileSystemFlags, //输出参数,判断多种驱动的属性值,用在 case 那里,如FILE_VOLUME_QUOTAS
szFileSystemNameBuffer, //输出参数,表示文件系统类型,如NTFS,FAT32,CDFS
BUFSIZE //缓冲区大小
))
{
return FALSE;
}
if(0 != lstrlen(szDriveName))
{
printf("\nDrive Name is %s\n",szDriveName);
}
printf("\nVolume Serial Number is %u",dwVolumeSerialNumber); //空间大小
printf("\nMaximum Componet Lenght is %u",dwMaximumComponentLenght); //最大组件长度 (命名长度)
printf("\nSystem Type is %s\n",szFileSystemNameBuffer);
if(dwFileSystemFlags & FILE_SUPPORTS_REPARSE_POINTS)
{
printf("The file system does not support volume mount points.\n");
}
else if(dwFileSystemFlags & FILE_VOLUME_QUOTAS)
{
printf("The file system supports disk quotas.\n");
}
else if(dwFileSystemFlags & FILE_CASE_SENSITIVE_SEARCH)
{
printf("The file system supports case-senstive file names.\n");
}
//use this method get other infomation
/*if(dwFileSystemFlags & )
{
printf("");
}
//
printf("Other....\n");
*/
return TRUE;
}
- SDK遍历驱动器并获取驱动属性
- 基于visual c++之windows核心编程代码分析(23)遍历驱动器并获取驱动器属性
- 基于visual c++之windows核心编程代码分析(23)遍历驱动器并获取驱动器属性
- 遍历卷获得驱动器属性
- 驱动器属性
- 2017.07.02 获取系统中所有驱动器的根路径和驱动器属性(版本一)
- C++ windows API获取驱动器根路径和属性(-)
- 遍历控件并赋属性
- 基于MT7688 原厂SDK 使用SPI控制器驱动TFT屏幕ILI9225驱动器(spi接口)
- java中遍历实体类属性和类型,并赋值和获取值
- java反射遍历实体类属性和类型,并赋值和获取值
- java反射遍历实体类属性和类型,并赋值和获取值
- 判断驱动器属性(十三)
- jQuery获取并遍历Dom
- 获取驱动器序列号
- 获取逻辑驱动器信息
- 遍历逻辑驱动器片断code
- 遍历逻辑驱动器片断code
- centos 6.3上不了外网,网关,内网是正常
- [原创]Win64微软汇编语言入门范例
- sql 内存
- URL与URI总结
- (个人笔记)生成验证码
- SDK遍历驱动器并获取驱动属性
- 主要控件名简写对照表
- google的protocol buffer学习
- QString 与中文问题
- Ubuntu下面的中文输入法定制
- 通讯录同步【一】
- Debugging Android core dumps
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务