日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GetLogicalDrives GetDriveType GetVolumeInformation和FindVolumeClose

發(fā)布時間:2025/3/21 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GetLogicalDrives GetDriveType GetVolumeInformation和FindVolumeClose 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。