获取磁盘类型及剩余空间 GetDiskFreeSpaceEx GetDriveTypeW GetVolumeInformation
来源:互联网 发布:app软件验收标准 编辑:程序博客网 时间:2024/06/06 19:09
WINBASEAPI BOOL WINAPI GetDiskFreeSpaceEx(
LPCWSTR lpDirectoryName,
PULARGE_INTEGER lpFreeBytesAvailableToCaller,
PULARGE_INTEGER lpTotalNumberOfBytes,
PULARGE_INTEGER lpTotalNumberOfFreeBytes
);
lpDirectoryName 驱动器的名称。
lpFreeBytesAvailableToCaller 用户可用的磁盘空间。
lpTotalNumberOfBytes 磁盘总共的空间。
lpTotalNumberOfFreeBytes 磁盘空闲的空间。
以上都是字节为单位
获取驱动器类型
WINBASEAPI UINT WINAPI GetDriveTypeW( LPCWSTR lpRootPathName );
LPCWSTR lpRootPathName 驱动器路径,如“C:”、"D:"
返回值:
DRIVE_UNKNOWN 0未知
DRIVE_NO_ROOT_DIR 1无效路经
DRIVE_REMOVABLE 2可移动磁盘
DRIVE_FIXED 3 固定
DRIVE_REMOTE 4网络驱动器
DRIVE_CDROM 5 CD-ROM
DRIVE_RAMDISK 6随机存取磁盘
获取与一个磁盘卷有关的信息
BOOL GetVolumeInformation(
LPCTSTR lpRootPathName, // address of root directory of the file system
LPTSTR lpVolumeNameBuffer, // address of name of the volume
DWORD nVolumeNameSize, // length of lpVolumeNameBuffer
LPDWORD lpVolumeSerialNumber, // address of volume serial number
LPDWORD lpMaximumComponentLength,// address of system's maximum filename length
LPDWORD lpFileSystemFlags, // address of file system flags
LPTSTR lpFileSystemNameBuffer, // address of name of file system
DWORD nFileSystemNameSize // length of lpFileSystemNameBuffer
);
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
输入参数
lpRootPathName 欲获取信息的那个卷的根路径
lpVolumeNameBuffer 用于装载卷名(卷标)的一个字串
nVolumeNameSize lpVolumeNameBuffer字串的长度
lpVolumeSerialNumber 用于装载磁盘卷序列号的变量
lpMaximumComponentLength 指定一个变量,用于装载文件名每一部分的长度。例如,在“c:\component1\component2.ext”的情况下,它就代表component1或component2名称的长度
lpFileSystemFlags 用于装载一个或多个二进制位标志的变量。对这些标志位的解释如下:
FS_CASE_IS_PRESERVED 文件名的大小写记录于文件系统
FS_CASE_SENSITIVE 文件名要区分大小写
FS_UNICODE_STORED_ON_DISK 文件名保存为Unicode格式
FS_PERSISTANT_ACLS 文件系统支持文件的访问控制列表(ACL)安全机制
FS_FILE_COMPRESSION 文件系统支持逐文件的进行文件压缩
FS_VOL_IS_COMPRESSED 整个磁盘卷都是压缩的
lpFileSystemNameBuffer String,指定一个缓冲区,用于装载文件系统的名称(如FAT,NTFS以及其他)
nFileSystemNameSize Long,lpFileSystemNameBuffer字串的长度
////////////////demo/////////////////
typedef struct
{
int num; //磁盘数量
char disk[26]; //盘符,最多支持26个盘符
}SDiskInfo;
SDiskInfo g_DiskInfo; //记录本机盘符
typedef struct s
{UINT type; // GetDriveType返回码类型
LPCSTR name; // ascii 名称
}SDriveTypeFlag;
{ DRIVE_UNKNOWN, "未知" },
{ DRIVE_NO_ROOT_DIR, "无效路经" },
{ DRIVE_REMOVABLE, "可移动磁盘" },
{ DRIVE_FIXED, "" }, //固定
{ DRIVE_REMOTE, "网络驱动器" },
{ DRIVE_CDROM, "CD-ROM" },
{ DRIVE_RAMDISK, "随机存取磁盘" },
{ 0, NULL},
};
//获取盘剩余空间
void CExaminationDlg::OnGetremainspace()
{
// TODO: Add your control notification handler code here
ULARGE_INTEGER nFreeBytesAvailable;
ULARGE_INTEGER nTotalNumberOfBytes;
ULARGE_INTEGER nTotalNumberOfFreeBytes;
CString strDisk = ""; //盘符
CString strMsg = "";
UINT uDriveType;
char name[MAX_PATH] = {0};
char format[MAX_PATH] = {0}; //磁盘格式,如NTFS或FAT
UpdateData(TRUE);
m_disk1.GetWindowText(strDisk);
strDisk += ":";
//获取磁盘分区名字
GetVolumeInformation(strDisk, name, MAX_PATH, NULL, NULL, NULL, format, MAX_PATH);
m_Descri.Empty();
m_Descri.Format("%s(%s)", name, strDisk);
uDriveType = GetDriveType(strDisk);
m_DiskType.Format("%s(%s)", g_stDriveTypeFlags[uDriveType].name, format); //获取磁盘类型
if (GetDiskFreeSpaceEx(strDisk,
&nFreeBytesAvailable,
&nTotalNumberOfBytes,
&nTotalNumberOfFreeBytes))
{
m_diskSpace.Format("%lu", nTotalNumberOfBytes.QuadPart/(ULONGLONG)(1024*1024*1024)); //磁盘总大小
m_remainSpace.Format("%lu", nFreeBytesAvailable.QuadPart/(ULONGLONG)(1024*1024*1024)); // 磁盘剩余空间
m_Percent = (signed __int64)(nTotalNumberOfBytes.QuadPart-nFreeBytesAvailable.QuadPart)*100/(signed __int64)nTotalNumberOfBytes.QuadPart;
m_RemainProg.SetPos(m_Percent);
}
else
{
strDisk.Delete(strDisk.GetLength()-1,1); //删除最后一个":"
strMsg.Format("获取%s盘剩余空间信息失败", strDisk);
MessageBox(strMsg, "提示", MB_OK|MB_ICONWARNING);
}
UpdateData(FALSE);
}
- 获取磁盘类型及剩余空间 GetDiskFreeSpaceEx GetDriveTypeW GetVolumeInformation
- 获得磁盘剩余空间:GetDiskFreeSpaceEx
- 获取磁盘剩余空间
- 获取磁盘剩余空间
- 获取磁盘序列号GetVolumeInformation
- 有关获取磁盘剩余空间及总空间
- wince获取磁盘剩余空间
- pytho获取磁盘剩余空间
- 获取磁盘使用空间和剩余空间
- 通过VBS获取磁盘剩余空间
- QT获取磁盘剩余空间大小
- 获取电脑磁盘的剩余空间
- 两种方法,获取磁盘剩余空间
- 获取磁盘使用空间和剩余空间(代码)
- 得到磁盘剩余空间
- 取得磁盘剩余空间
- 获得磁盘剩余空间
- 在Windows下通过JConfig获取磁盘剩余空间信息
- 0711
- win8 使用笔记
- Android VideoView如何播放RTSP的流
- solaris mysql 不能外网访问问题 任何主机访问
- Hibernate 关联映射 之多对一关联(二) 懒加载
- 获取磁盘类型及剩余空间 GetDiskFreeSpaceEx GetDriveTypeW GetVolumeInformation
- HOW TO: Using CVS
- Geetoo系统的安装过程
- 无线网卡的Master,Managed,ad-hoc,monitor模式
- 发给有道词典团队的建议信有恢复了,哈哈!
- 我的java之路之初识Java对象
- PowerDesigner(CDM—PDM—SQL脚本的转换流程) 随笔
- Selenium WebDriver 同步点
- 程序中关于数据交换的讨论