C/C++ Windows API——獲取磁盤信息

      網友投稿 1050 2025-03-31

      // LogicalDrive.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include //將PULARGE_INTEGER類型的字節(B)數轉化為(GB)單位 #define GB(x) (x.HighPart << 2) + (x.LowPart >> 20) / 1024.0 int main() { int driveCount = 0; char szDriveInfo[16 + 1] = {0}; /* 獲取主機中所有的邏輯驅動器字母,以BitMap的形式返回 DWORD GetLogicalDrives(); return 一個DWORD類型的值,第一位表示所對應的驅動器是否存在。一般情況下DWORD的數據長度是32位,在這個DWORD中,每一位對應了一個邏輯驅動器是否存在。第二位如果是“1”則表示驅動器“B:”存在,第四位如果是“1”則表示驅動器“D:”存在,以此類推 */ DWORD driveInfo = GetLogicalDrives(); _itoa_s(driveInfo, szDriveInfo, 2); printf("GetLogicalDrives -> %016s\n", szDriveInfo); while (driveInfo) { if (driveInfo & 1) { driveCount++; } driveInfo >>= 1; } printf("LogicalDriveCount = %d\n", driveCount); /* 獲取一個字串,其中包含了當前所有邏輯驅動器的根驅動器路徑。 DWORD GetLogicalDriveStrings( DWORD nBufferLength, // size of buffer, 如果是此參數為0 后面的lpBuffer則不使用 LPTSTR lpBuffer // drive strings buffer, 用于裝載邏輯驅動器名稱的字串。每個名字都用一個NULL字符分隔,在最后一個名字后面用兩個NULL表示中止(空中止) 例如A:\C:\ ); return 返回填充完畢的緩沖區字符的的個數..不是長度..char和TCHAR 返回數目都是一樣的.. 一般是4的倍數...(形如C:\ 包括之后的一個空字符0).. 如果緩沖區不夠大,則返回值大于nBufferLength 如果失敗..函數返回0..若想獲得更多的錯誤信息,請使用GetLastError函數 */ int driveStrLen = GetLogicalDriveStrings(0, NULL); printf("GetLogicalDriveStrings -> %d\n\n", driveStrLen); //exception must have a constant value //char driveStr[driveStrLen]; TCHAR *driveStr = new TCHAR[driveStrLen]; GetLogicalDriveStrings(driveStrLen, driveStr); TCHAR *lpDriveStr = driveStr; for (int i = 0; i < driveCount; i++) { /* 獲取磁盤類型 UINT GetDriveType( _In_opt_ LPCWSTR 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 */ UINT driveType = GetDriveType(lpDriveStr); char *szDriveTypeArr[] = { "DRIVE_UNKNOWN", "DRIVE_NO_ROOT_DIR", "DRIVE_REMOVABLE", "DRIVE_FIXED", "DRIVE_REMOTE", "DRIVE_CDROM", "DRIVE_RAMDISK" }; ULARGE_INTEGER freeBytesAvailableToCaller; ULARGE_INTEGER totalNumberOfBytes; ULARGE_INTEGER totalNumberOfFreeBytes; /* 獲取與一個磁盤的類型以及剩余空間容量有關的信息 BOOL GetDiskFreeSpaceExW( _In_opt_ LPCWSTR lpDirectoryName, //不包括卷名的磁盤根路徑名 _Out_opt_ PULARGE_INTEGER lpFreeBytesAvailableToCaller, //磁盤的可用字節數 _Out_opt_ PULARGE_INTEGER lpTotalNumberOfBytes, //磁盤的總字節數 _Out_opt_ PULARGE_INTEGER lpTotalNumberOfFreeBytes //磁盤的剩余字節數 ); */ GetDiskFreeSpaceEx(lpDriveStr, &freeBytesAvailableToCaller, &totalNumberOfBytes, &totalNumberOfFreeBytes); printf("GetLogicalDriveStrings -> %ls\n", lpDriveStr); printf("GetDriveType -> %d=%s\n", driveType, szDriveTypeArr[driveType]); printf("GetDiskFreeSpaceEx -> Available=%f, Total=%f, free=%f\n\n", GB(freeBytesAvailableToCaller), GB(totalNumberOfBytes), GB(totalNumberOfFreeBytes)); lpDriveStr += 4; } delete driveStr; system("pause"); return 0; }

      1

      2

      3

      4

      5

      6

      7

      C/C++ Windows API——獲取磁盤信息

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      76

      77

      78

      79

      80

      81

      82

      83

      84

      85

      86

      87

      88

      89

      90

      91

      92

      93

      94

      95

      96

      97

      98

      99

      100

      API C++ Windows

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:自己建一個在線文檔(自己搭建在線文檔
      下一篇:如何插入一個目錄(怎樣在目錄里面添加一個)
      相關文章
      www亚洲一级视频com| 大胆亚洲人体视频| 国产亚洲精品资在线| 亚洲gay片在线gv网站| 国产亚洲玖玖玖在线观看| 亚洲一卡二卡三卡四卡无卡麻豆 | 亚洲av日韩av不卡在线观看| 亚洲精品乱码久久久久久中文字幕 | 亚洲成片观看四虎永久| 免费亚洲视频在线观看| 精品久久久久久久久亚洲偷窥女厕| 自拍偷区亚洲国内自拍| 男人天堂2018亚洲男人天堂| 亚洲色精品VR一区区三区| 亚洲日韩国产欧美一区二区三区 | 91亚洲国产成人久久精品| 亚洲无成人网77777| 亚洲日本香蕉视频| 亚洲婷婷综合色高清在线| 亚洲一卡2卡3卡4卡国产网站| 亚洲视频在线一区二区三区| 亚洲欧洲日本国产| 中文字幕亚洲综合小综合在线 | 亚洲av无码久久忘忧草| 亚洲精品免费网站| 亚洲男同gay片| 精品国产日韩亚洲一区在线| 国产成人久久精品亚洲小说| 国产成人毛片亚洲精品| 亚洲乱码国产一区三区| 亚洲大尺度无码专区尤物| 亚洲国产综合91精品麻豆| 亚洲成人在线免费观看| 国产v亚洲v天堂a无| 亚洲av无一区二区三区| 亚洲第一区精品观看| 亚洲一区精品伊人久久伊人| 亚洲午夜未满十八勿入网站2| 亚洲AV永久无码精品一百度影院| 麻豆亚洲AV永久无码精品久久| 亚洲国产精品免费在线观看|