GetLogicalDrives GetDriveType GetVolumeInformation和FindVolumeClose
文章目錄
- GetLogicalDrives
- 功能
- 返回值
- 代碼實現(xiàn):
- GetDriveType
- 函數(shù)聲明
- 函數(shù)功能
- 第一個參數(shù):
- 返回值
- GetVolumeInformation
- 函數(shù)聲明
- 函數(shù)功能
- 第一個參數(shù)
- 第二個參數(shù)
- 第三個參數(shù)
- 第四個參數(shù)
- 第五個參數(shù)
- 第六個參數(shù)
- 第七個參數(shù)
- 第八個參數(shù)
- 返回值
- 代碼實現(xiàn):
- FindVolumeClose
- 函數(shù)功能
- 第一個參數(shù)
- 返回值
GetLogicalDrives
功能
獲取主機中所有的邏輯驅(qū)動器,以 BitMap 的形式返回
無參函數(shù)
返回值
GetLogicalDrive 函數(shù)返回一個 DWORD 類型的值,第一位表示所對應(yīng)的驅(qū)動器是否存在。
一般情況下 DWORD 的數(shù)據(jù)長度是 32 位,在這個 DWORD 中,每一位對應(yīng)了一個邏輯驅(qū)動器是
否存在。第二位如果是“1”則表示驅(qū)動器“B:”存在,第 4 位如果是“1”則表示驅(qū)動器
“D:”是存在的,以此類推
代碼實現(xiàn):
DWORD size = GetLogicalDrives();printf("%d", size);
124在二進制數(shù)據(jù)上面剛好占據(jù)了5個1,也就代表5個盤
GetDriveType
函數(shù)聲明
UINT GetDriveType( LPCTSTR lpRootPathName // root directory );函數(shù)功能
判斷一個磁盤驅(qū)動器的類型
第一個參數(shù):
LPCSTR lpRootPathName這里也就只需要輸入根目錄就行,舉個例子: “c:\”
返回值
Long,如驅(qū)動器不能識別,則返回零。
如指定的目錄不存在,則返回1。
如執(zhí)行成功,則用下述任何一個常數(shù)指定驅(qū)動器類型:
- DRIVE_REMOVABLE, 可移動磁盤
- DRIVE_FIXED, 固定磁盤
- DRIVE_REMOTE, 網(wǎng)絡(luò)磁盤
- DRIVE_CDROM 光驅(qū)
- DRIVE_RAMDISK 為RAM
- DRIVE_UNKNOWN 未知的磁盤類型
- DRIVE_NO_ROOT_DIR 說明lpRootPathName是無效的
一堆宏定義:
#define DRIVE_UNKNOWN 0 #define DRIVE_NO_ROOT_DIR 1 #define DRIVE_REMOVABLE 2 #define DRIVE_FIXED 3 #define DRIVE_REMOTE 4 #define DRIVE_CDROM 5 #define DRIVE_RAMDISK 6代碼實現(xiàn):
LPCSTR root = "c:\\";long c =GetDriveType(root);printf("%d", c);
所以這里c盤就是固定磁盤嘍
GetVolumeInformation
函數(shù)聲明
GetVolumeInformationA(_In_opt_ LPCSTR lpRootPathName,_Out_writes_opt_(nVolumeNameSize) LPSTR lpVolumeNameBuffer,_In_ DWORD nVolumeNameSize,_Out_opt_ LPDWORD lpVolumeSerialNumber,_Out_opt_ LPDWORD lpMaximumComponentLength,_Out_opt_ LPDWORD lpFileSystemFlags,_Out_writes_opt_(nFileSystemNameSize) LPSTR lpFileSystemNameBuffer,_In_ DWORD nFileSystemNameSize);函數(shù)功能
獲取與一個磁盤卷有關(guān)的信息
第一個參數(shù)
lpRootPathName:輸入?yún)?shù),指向所要獲取屬性的驅(qū)動器的根路徑字符串。
第二個參數(shù)
lpVolumeNameBuffer:輸出參數(shù),返回驅(qū)動器名。
第三個參數(shù)
nVolumeNameSize:輸入?yún)?shù),lpVolumeNameBuffer字串的長度
第四個參數(shù)
lpVolumeSerialNumber:輸出參數(shù),用于裝載磁盤卷序列號的變量
第五個參數(shù)
lpMaximumComponentLength:輸出參數(shù),指定一個變量,用于裝載文件名每一部分的長度
第六個參數(shù)
lpFileSystemFlags:輸出參數(shù),用于裝載一個或多個二進制位標志的變量
第七個參數(shù)
lpFileSystemNameBuffer:輸出參數(shù),指定一個緩沖區(qū),用于裝載文件系統(tǒng)的名稱(如FAT,NTFS以及其他)
第八個參數(shù)
nFileSystemNameSize:輸入?yún)?shù),lpFileSystemNameBuffer字串的長度
返回值
Long,非零表示成功,零表示失敗。會設(shè)置GetLastError
代碼實現(xiàn):
DWORD Serialnumber;DWORD ComponentLength ;DWORD SystemFlags;char SystemNameBuffer[BUFSIZE] = { 0 };GetVolumeInformation(root, buf, BUFSIZE, &Serialnumber, &ComponentLength, &SystemFlags, SystemNameBuffer, BUFSIZE);printf("%s, %s", buf, SystemNameBuffer);這里輸出也就代表我的c盤是OS(系統(tǒng))盤,然后lpFileSystemNameBuffer 是NTFS
FindVolumeClose
函數(shù)功能
關(guān)閉 FindFirstVolume 打開的卷遍歷句柄
第一個參數(shù)
hFindVolume:要關(guān)閉的驅(qū)動器查找句柄
返回值
返回 BOOL 值表示是否成功關(guān)閉句柄
代碼實現(xiàn):
HANDLE hVol;BOOL bFlag;hVol = FindFirstVolume(buf,BUFSIZE);if (hVol == INVALID_HANDLE_VALUE) {printf("%s\n", buf);return -1;}// printf("%s\n", buf);while (FindNextVolume(hVol, buf, BUFSIZE)){// printf("%s\n", buf);}bFlag = FindVolumeClose(hVol);
輸出1也就代表成功關(guān)閉卷遍歷句柄
備注:
2021年堅持學寫博客第8天(學習四個windows API) 尋夢SS
明日目標:
windows核心編程API函數(shù)
總結(jié)
以上是生活随笔為你收集整理的GetLogicalDrives GetDriveType GetVolumeInformation和FindVolumeClose的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GetLogicalDriveStrin
- 下一篇: GetDiskFreeSpace 和