C++遍歷磁碟驅動器的示例程式碼
阿新 • • 發佈:2021-01-04
#include <stdio.h> #include <windows.h> typedef struct tagDRIVER { // (1)磁碟碟符 wchar_t disk; // (2)磁碟總的大小 double all; // (3)磁碟可用空間 double free; // (4)磁碟型別(是光碟、硬碟、還是行動硬碟) int type; }DRIVER; void GetDrivers() { BOOL fResult; // 定義 磁碟訊息結構體 DRIVER dir; // 遍歷磁碟 for (wchar_t d = 'A'; d <= 'Z'; d++) { // 磁碟訊息結構體清0 memset(&dir,sizeof(DRIVER)); unsigned _int64 i64FreeBytesToCaller; unsigned _int64 i64TotalBytes; unsigned _int64 i64FreeBytes; TCHAR szTemp[3] = { d,':','\0' }; // 獲取磁碟型別 UINT uType = GetDriveTypeW(szTemp); // DRIVE_UNKNOWN 無法確定驅動器型別。 // DRIVE_NO_ROOT_DIR 根路徑無效; 例如,指定路徑上沒有安裝卷。 // DRIVE_REMOVABLE 驅動器有可移動介質; 例如,軟盤驅動器,拇指驅動器或快閃記憶體卡讀卡器。 // DRIVE_FIXED 驅動器有固定的媒體; 例如,硬碟驅動器或快閃記憶體驅動器。 // DRIVE_REMOTE 該驅動器是遠端(網路)驅動器。 // DRIVE_CDROM 該驅動器是一個CD-ROM驅動器。 // DRIVE_RAMDISK 驅動器是RAM磁碟。 switch (uType) { case DRIVE_FIXED: { // 硬碟是1 dir.type = 1; break; } case DRIVE_CDROM: { // 光碟是2 dir.type = 2; break; } case DRIVE_REMOTE: { // 行動硬碟是3 dir.type = 3; break; } default: { continue; } } // GetDiskFreeSpaceEx獲取與一個磁碟的組織以及剩餘空間容量有關的資訊 fResult = GetDiskFreeSpaceEx(szTemp,(PULARGE_INTEGER)&i64FreeBytesToCaller,(PULARGE_INTEGER)&i64TotalBytes,(PULARGE_INTEGER)&i64FreeBytes); // 碟符 dir.disk = d; if (fResult) { dir.all = (double)(i64TotalBytes / 1024.0 / 1024 / 1024); dir.free = (double)(i64FreeBytesToCaller / 1024.0 / 1024 / 1024); } else { dir.all = 0.0; dir.free = 0.0; } printf("%C盤:共%.2fGB,可用%.2fGB,磁碟型別:%d\n",dir.disk,dir.all,dir.free,dir.type); } } int main() { GetDrivers(); getchar(); return 0; }
以上就是C++遍歷磁碟驅動器的示例程式碼的詳細內容,更多關於C++遍歷磁碟驅動器的資料請關注我們其它相關文章!