1.获取盘符 CString UDisk::GetDiskLetter() { CString strDiskLetter=_T(""); LPTSTR lpDrives = new TCHAR[MAX_PATH]; DWORD dwLen = ::GetLogicalDriveStrings(MAX_PATH, lpDrives); CString sDrives[26] ; for(DWORD nIndex = 0; nIndex < dwLen / 4; nIndex++) { if(::GetDriveType(lpDrives + nIndex * 4) == DRIVE_REMOVABLE) { sDrives[nIndex] += (CString)(lpDrives + nIndex * 4); if(sDrives[nIndex]!=_T("A://") && sDrives[nIndex]!=_T("B://")) { CString usbPath = sDrives[nIndex]; strDiskLetter = usbPath.Left(1); //AfxMessageBox(strDiskLetter); break; } } } delete lpDrives; return strDiskLetter; } 2.获取容量 //获取盘符的容量 int UDisk:: IsDiskHaveSpace(CString usbDiskLetter) { CString strDir = usbDiskLetter.Left(1); strDir += L":"; BOOL bRet = FALSE; unsigned __int64 i64FreeBytesToCaller = 0; unsigned __int64 i64TotalBytes = 0; unsigned __int64 i64FreeBytes = 0; DWORD DWFREE = 0; typedef DWORD (WINAPI * GETDISKFREESPACEEX)(LPCTSTR , PULARGE_INTEGER , PULARGE_INTEGER , PULARGE_INTEGER ); bRet = GetDiskFreeSpaceEx(strDir, (PULARGE_INTEGER)&i64FreeBytesToCaller, (PULARGE_INTEGER)&i64TotalBytes, (PULARGE_INTEGER)&i64FreeBytes); if (bRet) { if (i64FreeBytes < 3276800) //6553600 为64M //524288000byte是0.5G //if (i64FreeBytes < 5242880000) //524288000byte是0.5G return 0; else return 1; } else { return 0; } }