使用IOCTL_DISK_GET_LENGTH_INFO控制码获取磁盘空间大小
2013-06-24 11:29
916 查看
GetDiskFreeSpace 和GetDiskFreeSpaceEx获取磁盘空间大小都是有quota限制的。如果管理员为某用户在某分区上设置了配额,这个用户下,用前面两个API就不能正常获得分区大小。MSDN上说明可以用IOCTL_DISK_GET_LENGTH_INFO获得分区总大小,下面代码即是使用方法。\
参考:http://technet.microsoft.com/zh-cn/subscriptions/aa365178
by happycyp
int _tmain(int argc, _TCHAR* argv[]) { HANDLE hDev = CreateFile(_T("\\\\.\\c:") , GENERIC_READ , FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING , 0, 0); GET_LENGTH_INFORMATION disk_len; DWORD dwRet = 0; if (hDev != INVALID_HANDLE_VALUE) { DeviceIoControl(hDev, IOCTL_DISK_GET_LENGTH_INFO, NULL, 0, &disk_len, sizeof(disk_len), &dwRet, NULL); INT64 nUseSize = disk_len.Length.QuadPart; INT64 sizeGB = nUseSize / 1014 / 1024 /1024; CString szSize; szSize.Format(L"C盘大小 %I64d GB", sizeGB); ::MessageBox(0, szSize, L"提示", MB_OK); CloseHandle(hDev); } return 0; }
参考:http://technet.microsoft.com/zh-cn/subscriptions/aa365178
by happycyp
相关文章推荐
- IOCTL_DISK_GET_LENGTH_INFO查询硬盘物理容量居然会导致 使用驱动器X:中的光盘之前需要将其格式化
- 使用HD/IDE层的ioctl接口获取磁盘容量get_hdd_max_sector
- 文件磁盘相关函数[15]-获取磁盘空间信息 WinAPI:GetDiskFreeSpaceEx;
- 使用ioctl获取磁盘大小
- 使用HD/IDE层的ioctl接口获取磁盘容量get_hdd_max_sector
- C#在Linux下获取文件夹信息(所在磁盘总大小,使用空间,已用空间,使用率)
- 获取磁盘类型及剩余空间 GetDiskFreeSpaceEx GetDriveTypeW GetVolumeInformation
- Linux下使用du命令查看文件或目录占用磁盘空间大小
- php获取服务器所有磁盘空间大小
- mac下获取磁盘的总空间大小和可用空间大小
- 磁盘和sd卡的可用空间大小获取
- linux下使用 du查看某个文件或目录占用磁盘空间的大小
- 遇到问题---java获取网络文件大小失败getContentLength()为-1 完整解决方法
- 获取Exe文件版本信息的函数(使用GetFileVersionInfo得到TFileVersionInfo结构体,包含12项内容)
- linux下使用 du查看某个文件或目录占用磁盘空间的大小
- 利用GetProcessMemoryInfo 获取进程内存使用
- linux下使用 du查看某个文件或目录占用磁盘空间的大小
- linux下使用 du查看某个文件或目录占用磁盘空间的大小
- 遇到问题---java获取网络文件大小失败getContentLength()为-1 完整解决方法
- iOS中使用c函数快速获取一个目录所占的空间大小