window API一天一练习之获取磁盘空间
来源:互联网 发布:招行香港一卡通 mac 编辑:程序博客网 时间:2024/05/22 10:55
获取磁盘空间大小主要有两个API 。GetDiskFreeSpace 和GetDiskFreeSpaceEx。
BOOL WINAPI GetDiskFreeSpace( _In_ LPCTSTR lpRootPathName, _Out_ LPDWORD lpSectorsPerCluster, _Out_ LPDWORD lpBytesPerSector, _Out_ LPDWORD lpNumberOfFreeClusters, _Out_ LPDWORD lpTotalNumberOfClusters);
lpRootPathName // 磁盘根目录,如果为NULL则使用的是当前磁盘根目录
lpSectorsPerCluster //是个指针,获取每簇的扇区数lpBytesPerSector //获取每个扇区的字节数使用GetDiskFreeSpaceEx可以避免使用算数来获取磁盘空间大小。lpNumberOfFreeClusters //空闲的簇数lpTotalNumberOfClusters //总共的簇数
BOOL WINAPI GetDiskFreeSpaceEx( _In_opt_ LPCTSTR lpDirectoryName, _Out_opt_ PULARGE_INTEGER lpFreeBytesAvailable, _Out_opt_ PULARGE_INTEGER lpTotalNumberOfBytes, _Out_opt_ PULARGE_INTEGER lpTotalNumberOfFreeBytes);
lpDirectoryName //磁盘目录
lpFreeBytesAvailable //用户可以获取的磁盘空间大小
lpTotalNumberOfBytes //磁盘的总空间大小,如果使用了用户配额,则用户获取的总空间大小可能小于磁盘真正的大小
lpTotalNumberOfFreeBytes //磁盘空闲空间大小
参数类型
typedef union _ULARGE_INTEGER { struct { DWORD LowPart; //低32位 DWORD HighPart; //高32位 }; struct { DWORD LowPart; //低32位 DWORD HighPart; //高32位 } u; ULONGLONG QuadPart; //64位无符号整型} ULARGE_INTEGER, *PULARGE_INTEGER;如果你的主机支持64位整型数,则用QuadPart存储,否则用LowPart 和HighPart存储64位数值
void GetDiskSpaceInformation(LPSTR szDrive){printf("volume %s \n",szDrive);DWORD64 dwAvailableByte, dwTotalNumberOfByte,dwFreeNumberOfByte;if (!GetDiskFreeSpaceEx(szDrive,(PULARGE_INTEGER)&dwAvailableByte,(PULARGE_INTEGER)&dwTotalNumberOfByte,(PULARGE_INTEGER)&dwFreeNumberOfByte)){printf("cannot get disk free space \n");}else{printf("GetSpace by GetDiskFreeSpaceEx()\n");printf("可用磁盘空间大小(字节): %I64d\n",dwAvailableByte);printf("磁盘空间总大小(字节) : %I64d\n",dwTotalNumberOfByte);printf("空闲磁盘空间总大小(字节) : %I64d\n",dwFreeNumberOfByte);}DWORD dwSectorsPerCluster,dwBytesPerSector,dwNumberOfFreeClusters,dwTotalNumberOfClusters;if (GetDiskFreeSpace(szDrive,&dwSectorsPerCluster,&dwBytesPerSector,&dwNumberOfFreeClusters,&dwTotalNumberOfClusters)){printf("GetSpace by GetDiskFreeSpace()\n");printf("每簇的扇区数: %d\n",dwSectorsPerCluster);printf("每个扇区的字节数 : %d\n",dwBytesPerSector);printf("空闲簇数 : %d\n",dwNumberOfFreeClusters);printf("总的簇数: %d\n",dwTotalNumberOfClusters);printf("磁盘空间总大小(字节) : %I64d\n",(DWORD64)dwTotalNumberOfClusters *(DWORD64)dwSectorsPerCluster * (DWORD64)dwBytesPerSector);printf("空闲磁盘空间总大小(字节) : %I64d\n",(DWORD64)dwNumberOfFreeClusters*(DWORD64)dwSectorsPerCluster * (DWORD64)dwBytesPerSector);}}
void GetDisksInformationEx(){printf("Begin Call GetDisksInformationEx()\n");CHAR szLogicalDriveString[BUFFERSIZE];PCHAR szDrive;ZeroMemory(szLogicalDriveString,BUFFERSIZE);GetLogicalDriveStrings(BUFFERSIZE - 1, szLogicalDriveString);szDrive = szLogicalDriveString;while (*szDrive){printf("volume %s\n",szDrive);GetDiskSpaceInformation(szDrive);szDrive += (lstrlen(szDrive) + 1);}printf("end Call GetDisksInformationEx()\n");}
- window API一天一练习之获取磁盘空间
- window API一天一练习之磁盘遍历
- window API一天一练之操作文件和目录
- window API一天一练之共享内存
- window API一天一练之邮槽
- API函数获取磁盘空间
- window api之 GetDriveType
- 获取磁盘空间
- VC编程练习之API笔记(一)
- 使用API函数获取磁盘空间及磁盘类型
- Window API函数大全(一)
- Window API函数大全(一)
- Window API (一)数据类型
- JavaScript练习一之键盘敲击获取关键词
- window->注册界面获取API(常用)
- PowerShell2.0之桌面计算机维护(一)监控磁盘空间
- 一天一练之基数排序
- 获取磁盘空间信息(十四)
- 统计自然语言处理的基础学习之一
- android 拍照和上传
- Windows_oracle10g_2013_11_10_主动维护
- 11个实用的Apache .htaccess配置
- VS2008 Pocket PC 2003 SE仿真程序上网设置
- window API一天一练习之获取磁盘空间
- mysql workbench 1175错误
- STL 队列的使用方法
- bias和variance
- java项目web.xml文件报错
- p45-09
- STL 栈的使用
- MFC中使用SDL播放音频没有声音的解决方法
- Oracle学习笔记 之 sqlplus 用法