【vc】 获取磁盘信息代码

 / 获取驱动器卷标
void CDeviceVolDlg::OnGetDeviceVol(void)
{
 TCHAR namebuf[12];
 TCHAR sysnamebuf[10];
 DWORD namesize=12;
 DWORD sysnamesize=10;
 DWORD serialnumber;
 DWORD maxlen;
 DWORD fileflag;

 DWORD dwSize;

 m_DeviceList.DeleteAllItems();

 //获取驱动器信息
 dwSize = ::GetLogicalDriveStrings(0, NULL);
 if (dwSize>0)
 {
  HANDLE heap=::GetProcessHeap();
  LPTSTR lp=(LPTSTR)HeapAlloc(heap, HEAP_ZERO_MEMORY, dwSize*sizeof(TCHAR));
  ::GetLogicalDriveStrings(dwSize*sizeof(TCHAR), lp);
  while(*lp!=0)
  {
   UINT res=::GetDriveType(lp);
   if(res==DRIVE_FIXED)
    m_DeviceList.InsertItem(0,lp,0);
   lp=_tcschr(lp,0)+1;
  }
 }

 int num = m_DeviceList.GetItemCount();

 for (int i=0; i<num; i++)
 {
  CString str,temp;
  str = m_DeviceList.GetItemText(i, 0);
  //逻辑盘的序列号
  ::GetVolumeInformation(str, namebuf, namesize, &serialnumber, &maxlen, &fileflag, sysnamebuf, sysnamesize);
  //temp.Format(_T("%s"), namebuf);
  //m_DeviceList.SetItemText(i, 1, temp);

  temp.Format(_T("%d"), serialnumber);
  m_DeviceList.SetItemText(i, 1, temp);

  temp.Format(_T("%s"), sysnamebuf);
  m_DeviceList.SetItemText(i, 2, temp);

  ULARGE_INTEGER nFreeBytesAvailable;
  ULARGE_INTEGER nTotalNumberOfBytes;
  ULARGE_INTEGER nTotalNumberOfFreeBytes;

  //获取磁盘空间
  if (GetDiskFreeSpaceEx(str, &nFreeBytesAvailable, &nTotalNumberOfBytes, &nTotalNumberOfFreeBytes))
  {
   temp.Format(_T("%u G"), nTotalNumberOfBytes.QuadPart/(1024*1024*1024));
   m_DeviceList.SetItemText(i, 3, temp);

   temp.Format(_T("%u G"), nFreeBytesAvailable.QuadPart/(1024*1024*1024));
   m_DeviceList.SetItemText(i, 4, temp);
  }
 }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值