读取本地磁盘信息



//显示本地服务器磁盘信息到List
VOID CFileManagerDlg::FixedServerVolumeInformation()
{
	//磁盘信息
	char	VolumeList[0x500] = { 0 };
	//游走指针
	CHAR	*Travel = NULL;
	

	//清空一下列表
	m_CList_Dialog_File_Manager_Server_Show.DeleteAllItems();
	while (m_CList_Dialog_File_Manager_Server_Show.DeleteColumn(0) != 0);
	
	//初始化列表信息
	m_CList_Dialog_File_Manager_Server_Show.InsertColumn(0, "名称", LVCFMT_CENTER, 45);
	m_CList_Dialog_File_Manager_Server_Show.InsertColumn(1, "类型", LVCFMT_CENTER, 80);
	m_CList_Dialog_File_Manager_Server_Show.InsertColumn(2, "文件系统", LVCFMT_CENTER,85);
	m_CList_Dialog_File_Manager_Server_Show.InsertColumn(3, "总大小", LVCFMT_CENTER, 100);
	m_CList_Dialog_File_Manager_Server_Show.InsertColumn(4, "可用空间", LVCFMT_CENTER,100);

	//设置列表可选
	m_CList_Dialog_File_Manager_Server_Show.SetExtendedStyle(LVS_EX_FULLROWSELECT);






	//读取本地磁盘信息

	GetLogicalDriveStrings(sizeof(VolumeList), (LPSTR)VolumeList); 
	
	Travel = VolumeList;
	//文件系统类型
	CHAR	FileSystem[MAX_PATH]; 

	unsigned __int64	HardDiskAmount = 0;  
	unsigned __int64	HardDiskFreeSpace = 0;
	unsigned long		HardDiskAmountMB = 0; // 总大小
	unsigned long		HardDiskFreeSpaceMB = 0;   // 剩余空间


	for (int i = 0; *Travel != '\0'; i++, Travel += lstrlen(Travel) + 1)
	{
		memset(FileSystem, 0, sizeof(FileSystem));
		// 文件系统信息及大小
		GetVolumeInformation(Travel, NULL, 0, NULL, NULL, NULL, FileSystem, MAX_PATH);
		ULONG	FileSystemLength = lstrlen(FileSystem) + 1;
		
		//磁盘空间信息
		if (GetDiskFreeSpaceEx(Travel, (PULARGE_INTEGER)&HardDiskFreeSpace, (PULARGE_INTEGER)&HardDiskAmount, NULL))
		{
			HardDiskAmountMB = HardDiskAmount / 1024 / 1024;
			HardDiskFreeSpaceMB = HardDiskFreeSpace / 1024 / 1024;
		}
		else
		{
			HardDiskAmountMB = 0;
			HardDiskFreeSpaceMB = 0;
		}

		//盘符名称  顺便获得系统的图标	
		int	iItem = m_CList_Dialog_File_Manager_Server_Show.InsertItem(i, Travel, GetServerIconIndex(Travel, GetFileAttributes(Travel)));	

		//设置隐藏数据 1代表文件夹 0代表文件
		m_CList_Dialog_File_Manager_Server_Show.SetItemData(iItem, 1);

		//文件系统
		m_CList_Dialog_File_Manager_Server_Show.SetItemText(iItem, 2, FileSystem);

		//磁盘信息  为本地磁盘还是外部存储
		SHFILEINFO	sfi;
		SHGetFileInfo(Travel, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(SHFILEINFO), SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES);
		m_CList_Dialog_File_Manager_Server_Show.SetItemText(iItem, 1, sfi.szTypeName);


		CString	v1;
		v1.Format("%10.1f GB", (float)HardDiskAmountMB / 1024);
		m_CList_Dialog_File_Manager_Server_Show.SetItemText(iItem, 3, v1);
		v1.Format("%10.1f GB", (float)HardDiskFreeSpaceMB / 1024);
		m_CList_Dialog_File_Manager_Server_Show.SetItemText(iItem, 4, v1);

	}
}



//获得本地系统盘符图标
int	CFileManagerDlg::GetServerIconIndex(LPCTSTR Volume, DWORD FileAttributes)
{
	SHFILEINFO	sfi;
	if (FileAttributes == INVALID_FILE_ATTRIBUTES)
		FileAttributes = FILE_ATTRIBUTE_NORMAL;
	else
		FileAttributes |= FILE_ATTRIBUTE_NORMAL;

	SHGetFileInfo
	(
		Volume,
		FileAttributes,
		&sfi,
		sizeof(SHFILEINFO),
		SHGFI_SYSICONINDEX | SHGFI_USEFILEATTRIBUTES
	);

	return sfi.iIcon;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值