检测逻辑驱动器
来源:互联网 发布:响应式源码 编辑:程序博客网 时间:2024/05/09 01:32
主要用到的API有GetLogicalDrives ,GetLogicalDirveStrings, GetDriveType, GetDiskFreeSpace.分别介绍如下:
1. DWORD GetLogicalDrives(void)
此函数没有参数,它的返回值是一个掩码,用来描述当前可用的逻辑驱动器。第0位代表驱动器A,第一位代表驱动器B,,第2位代表驱动器C,依次类推。若某一位为1,则说明该位所对应的驱动器可用,为0则相反。
2 . DWORD GetLogicalDriveStrings(
DWORD nBufferLength, // 下面lpBuffer所指向的缓冲区大小
LPTSTR lpBuffer ) // 驱动器名缓冲区,其存储格式为"A:/",0,"B:/",0,"C:/",0,....,0,0
3. UINT GetDriveType( LPCTSTR lpRootPathName) // 要检测的逻辑驱动器的根目录
返回值为:
DRIVE_UNKOWN 无法识别该驱动器
DRIVE_REMOVABLE 可移动磁盘
DRIVE_CDROM 光盘
DRIVE_FIXED 固定磁盘
等。
4. BOOL GetDiskFreeSpace(
LPCTSTR lpRootPathName, // 要检测的磁盘驱动器如"c:/"
LPDWORD lpSectionsPerCluster, // 每一簇的扇区数
LPDWORD lpBytesPerSector, // 每一扇区的字节数
LPDWORD lpNumberOfFreeClusters, // 空闲簇数
LPDWORD lpTotalNumberOfClusters) // 总共簇数
驱动器总容量的计算:簇总数 x 每簇的扇区数 x 每扇区的字节数
驱动器空闲容量计算:空闲簇数 x 每簇的扇区数 x 每扇区的字节数
例:
char lpBuffer[1024];
::GetLogicalDriveStrings(1024, lpBuffer);
int nDrivers = 0;
while(*(lpBuffer + nDrivers * 4) != 0)
{
cout<<lpBuffer+nDrivers * 4 ;
UINT nType = ::GetDriveType(lpBuffer + nDrivers*4);
if(nType == DRIVE_UNKNOWN)
{
cout<<"/tUNKNOWN/t";
}else if(nType == DRIVE_REMOVABLE)
{
cout<<"/tREMOVABLE/t";
}else if(nType == DRIVE_FIXED)
{
cout<<"/tFIXED/t";
}else if(nType == DRIVE_CDROM)
{
cout<<"/tCDROM/t";
}DWORD dwSectionsPerCluster; // 每一簇的扇区数
DWORD dwBytesPerSector; // 每一扇区的字节数
DWORD dwNumberOfFreeClusters; // 可用的簇数
DWORD dwTotalNumberOfClusters; // 总簇数
// 驱动器总容量计算公式 : 簇总数 x 每簇扇区数 x 每扇区的字节数
// 驱动器空闲容量计算公式: 未使用的簇 x 每簇扇区数 x 每扇区的字节数GetDiskFreeSpace(lpBuffer + nDrivers * 4 ,
&dwSectionsPerCluster,
&dwBytesPerSector,
&dwNumberOfFreeClusters,
&dwTotalNumberOfClusters);double free,total;
total = double(dwTotalNumberOfClusters) * double(dwSectionsPerCluster) * double(dwBytesPerSector);
free = double(dwNumberOfFreeClusters) * double(dwSectionsPerCluster) * double(dwBytesPerSector);
cout<<total/1024<<"K/t";
cout<<free/1024<<"K";cout<<endl;
nDrivers ++;
}
- 检测逻辑驱动器
- 获取逻辑驱动器信息
- 逻辑驱动器的得到
- 遍历逻辑驱动器片断code
- 遍历逻辑驱动器片断code
- Delphi编程检测驱动器类型
- 找到当前所有逻辑驱动器的根驱动器路径
- 主磁盘分区,扩展磁盘分区,逻辑驱动器
- 《Windows核心编程》---逻辑驱动器操作
- 删除逻辑驱动器后的数据回复
- Windows7中创建逻辑驱动器(扩展分区)
- Windows7中创建逻辑驱动器(扩展分区)
- TI逻辑驱动器类族注释
- 用C#和WMI获取逻辑驱动器详细信息(驱动器类型,文件系统,剩余空间等)
- C/C++ 获取当前所有逻辑驱动器的根驱动器路径
- 碰撞检测逻辑
- 用C#和WMI获取逻辑驱动器详细信息
- WinAPI: GetLogicalDriveStrings - 获取系统中存在的逻辑驱动器字符串
- 调用Nero SDK 刻录光盘(含代码)
- 各大学BBS
- 昨天太可怕了 吓到 过儿了
- Javascript DOM
- 感谢无名网友送我一个即将忘却的纪念
- 检测逻辑驱动器
- farewell to Gltc
- bbbb
- 采用FileSystemWatcher类监控网络目录
- 如何在opensolaris2008.05清除root密码
- [原创]BCC5.5编译pcre有关的程序的方法
- 在OpenSolaris2008.05中使用远程桌面
- 在机房内通过网络安装方法和Ghost安装Solaris的介绍
- ModelMakerTools 实现单例模式