在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

用VB獲得大容量硬盤信息

用VB獲得大容量硬盤信息

更新時間:2019-09-02 文章作者:未知 信息來源:網絡 閱讀次數:

我的愛機用的是MSI(微星)經典的6309的板子(694X芯片),在主板的隨機光盤上,有一個非常不錯的PC Alert System Monitor系統工具,它不僅可以用來測CPU的溫度、電壓、顯卡的溫度等,還可以顯示當前系統的一些信息(安裝后該程序可以自動執行,對機器進行實時的監控)。一天剛剛下網,無聊之際打開了該工具查看自己的硬盤信息(在Win98下),我的硬盤是西部數據(Western Digital)20.5G的,其分區情況如下:C:4.0G(用來裝Win98)、D:4.0G(用于Win2000)、E:5.0G(數據)、F:5.0G(數據)、G:剩余的容量(用于備份)。可是在顯示時卻出現這樣的信息:C:D:E:F:盤的大小變成了2.05G(到后面可以知道只要分區大于2G的都不會顯示正常的大小)。

  這是為什么呢?熟悉Win32 API編程的人都知道,在用VB編程時,我們可以用相應的API函數來獲得有關系統的硬盤的信息,會不會是錯在API的調用函數呢?想到這里我用自編的程序來查看PC Alert的有關文件,發現其調用了GetDiskFreeSpace函數,問題就出在這個函數上。下面是該函數的參數說明:Byval lpRootPathName As String(為欲查看的分區的根路徑如C:\) ,lpSectorsPerCluster As Long(為一簇的扇區數), lpBytesPerSector As Long(為每一扇區的字節數), lpNumberOfFreeClusters As Long(當前分區中未使用的簇數), lpTotalNumberOfClusters As Long(總的簇數) As Long。當我們調用此函數時,是以lpBytesPerSector×lpSectorsPerCluster×TotalNumberOfClusters來計算分區總的大小的,在VB中我用來查看自己的C盤時返回值分別為512 、64、 65526,因而計算出的C盤的大小只有2.05G。

  以下是關于MSDN中的有關詳細說明:對于大于的2G分區,GetDiskFreeSpace函數可能(什么可能,是一定!)返回錯誤的值,此時函數會屏蔽存在lpNumberOfFreeClusters及lpTotalNumberOfClusters中的值,因此建議不要用該函數來獲得大于2G分區的信息。對于大于2G的分區應當使用GetDiskFreeSpaceEx函數(從Win95 OEM OSR2開始),此函數可以返回分區的有關正確信息。

  找到了問題所在便可以對癥下藥了,即用GetDiskFreeSpaceEx函數代替GetDiskFreeSpace函數即可。以下是GetDiskFreeSpaceEx函數中所要傳遞增的參數

  lpRootPathName String ,不包括卷名的磁盤根路徑名
lpFreeBytesAvailableToCaller LARGE_INTEGER,指定一個變量,用于容納調用者可用的字節數量
lpTotalNumberOfBytes LARGE_INTEGER ,指定一個變量,用于容納磁盤上的總字節數
lpTotalNumberOfFreeBytes LARGE_INTEGER,指定一個變量,用于容納磁盤上可用的字節數

Private Type LARGE_INTEGER
 lowpart As Long
 highpart As Long
End Type

  我們可以看到LARGE_INTEGER是一個由兩個long型組成的一個類型,兩個long組成表示的都是無符號的數,在轉換時應當定義一個single型的變量,使其等于highpart*(2^32-1) + lowpart,注意此處的兩個long型相當于C/C++中的無符號型整數類型,因為在VB中不存在此種類型,故而在換算時要處理好轉換關系。我本人的做法是首先判斷long型變量的正負,如是正直接相乘,如是負則用2^32-1減去該值再相乘(具體算法詳見下面的代碼)。
Option Explicit
Private Type LARGE_INTEGER
 lowpart As Long
 highpart As Long
End Type

Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) As Long

Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" _
(ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As LARGE_INTEGER, _
lpTotalNumberOfBytes As LARGE_INTEGER, lpTotalNumberOfFreeBytes _
As LARGE_INTEGER) As Long

Private Sub Command1_Click()
 Dim lngSectors&
 Dim lngTotalCluster&
 Dim lngFreeCluster&
 Dim lngPerCluster&
 Dim lngperBytes&
 Dim lngSize#
 GetDiskFreeSpace "c:\", lngPerCluster, lngperBytes, lngFreeCluster, lngTotalCluster

 MsgBox CStr(lngTotalCluster * lngperBytes * lngPerCluster)
 Debug.Print lngTotalCluster, lngperBytes, lngPerCluster
End Sub

Private Type LARGE_INTEGER
 lowpart As Long
 highpart As Long
End Type
Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) As Long

Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" _
(ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As LARGE_INTEGER, _
lpTotalNumberOfBytes As LARGE_INTEGER, lpTotalNumberOfFreeBytes _
As LARGE_INTEGER) As Long

Private Sub Command1_Click()
'用GetDiskFreeSpace得到錯誤的容量
 Dim lngSectors&
 Dim lngTotalCluster&
 Dim lngFreeCluster&
 Dim lngPerCluster&
 Dim lngperBytes&
 Dim lngSize#
 GetDiskFreeSpace "c:\", lngPerCluster, lngperBytes, lngFreeCluster, lngTotalCluster

  MsgBox CStr(lngTotalCluster * lngperBytes * lngPerCluster)
End Sub

Private Sub cmdStart_Click()
'用GetDiskFreeSpaceEx得到正確的容量
 Dim lngFreeCaller As LARGE_INTEGER
 Dim lngTotal As LARGE_INTEGER
 Dim lngTotalFree As LARGE_INTEGER
 Dim sngSize#

 GetDiskFreeSpaceEx "c:\", lngFreeCaller, lngTotal, lngTotalFree
'以下用來顯示出分區總容量(以G為單位)
 MsgBox GetSize(lngTotal) / 2 ^ 30
End Sub

Private Function GetSize(lngSize As LARGE_INTEGER) As Single

'用來從LARGE_INTEGER型變量中換算出實際的大小
With lngSize
 If .highpart < 0 Then
  GetSize = (2 ^ 32 - 1 - .highpart) * (2 ^ 32 - 1)
 Else
  GetSize = .highpart * (2 ^ 32 - 1)
 End If
 If .lowpart < 0 Then
  GetSize = GetSize + (2 ^ 32 - 1 - .lowpart)
 Else
  GetSize = GetSize + .lowpart
 End If
End With
End Function

Private Function GetSize(lngSize As LARGE_INTEGER) As Single

 '用來從LARGE_INTEGER型變量中換算出實際的大小
 With lngSize
  If .highpart < 0 Then
   GetSize = (2 ^ 32 - 1 - .highpart) * (2 ^ 32 - 1)
  Else
   GetSize = .highpart * (2 ^ 32 - 1)
  End If
  If .lowpart < 0 Then
   GetSize = GetSize + (2 ^ 32 - 1 - .lowpart)
  Else
   GetSize = GetSize + .lowpart
  End If
 End With
End Function

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • www.久久久精品| 狠狠躁狠狠躁视频专区| 亚洲视频在线不卡| 激情视频综合网| 亚洲 欧美 另类人妖| 国产第一页视频| 男女爽爽爽视频| 国产麻花豆剧传媒精品mv在线| 欧美日韩二三区| 97xxxxx| 国产极品美女高潮无套久久久| 亚洲 高清 成人 动漫| 国产91在线视频观看| 99热自拍偷拍| 午夜久久久精品| 在线成人免费av| 强开小嫩苞一区二区三区网站| 亚洲色婷婷久久精品av蜜桃| 欧日韩免费视频| 任你操这里只有精品| www.99av.com| www.黄色网址.com| 国产亚洲欧美在线视频| 九色91popny| 美女黄色片网站| 久久成人免费观看| av噜噜在线观看| 99国产精品白浆在线观看免费| 国产乱子伦农村叉叉叉| 激情视频免费网站| 久久99久久99精品| 青青在线视频免费| 青青在线视频免费观看| 免费国产成人av| 97久久国产亚洲精品超碰热| 黑鬼大战白妞高潮喷白浆| gogogo免费高清日本写真| 日本欧美黄色片| 交换做爰国语对白| 免费看a级黄色片| 91黄色在线看| 久久久久久久高清| 麻豆传传媒久久久爱| 黑人巨大国产9丨视频| 亚洲中文字幕久久精品无码喷水| 成人在线观看毛片| av亚洲天堂网| 亚洲 欧美 另类人妖| 日韩免费视频播放| 91亚洲精品国产| 色呦呦网站入口| 污视频网站观看| 国产三区在线视频| www.亚洲成人网| 潘金莲一级淫片aaaaa免费看| 精品久久久久久久免费人妻| 丁香色欲久久久久久综合网| 在线观看视频在线观看| 一道本在线免费视频| 能在线观看的av| 免费在线观看亚洲视频| 久久综合久久久久| 国产一级不卡视频| 日韩精品免费一区| 穿情趣内衣被c到高潮视频| 亚欧精品在线视频| 国产传媒免费观看| 亚洲天堂网站在线| 日韩第一页在线观看| 国产精品嫩草影视| 好色先生视频污| 99re6这里有精品热视频| 17c丨国产丨精品视频| 精品无码国产一区二区三区av| 欧美人与动牲交xxxxbbbb| 国产专区在线视频| 亚洲欧洲日产国码无码久久99 | 污污的视频免费| 久久精品一二三四| 国产精品久久久久久久乖乖| 欧美无砖专区免费| 日韩免费一级视频| 亚洲综合日韩欧美| 四虎4hu永久免费入口| 国产精品va在线观看无码| 国产二级片在线观看| av观看免费在线| 国产精欧美一区二区三区白种人| 亚洲a级黄色片| 国产成人一区二区三区别| 欧美 日韩 国产在线观看| 国产一级不卡毛片| 在线观看成人免费| ww国产内射精品后入国产| 九九九在线观看视频| 警花观音坐莲激情销魂小说| 奇米精品一区二区三区| 99re精彩视频| 丰满少妇久久久| 尤物国产在线观看| 男人插女人视频在线观看| 日本成人黄色网| 97在线免费视频观看| 国产精品少妇在线视频| 欧美大片免费播放| 亚洲 欧美 日韩系列| 国产一区二区三区小说| 欧美成人福利在线观看| 18禁免费观看网站| 黄色三级视频在线播放| 美女av免费在线观看| ijzzijzzij亚洲大全| 久久久久久香蕉| 欧美,日韩,国产在线| 一区二区三区四区久久| 国产精品久久久毛片| 欧美一区二区三区爽大粗免费| 小说区视频区图片区| 久热精品在线播放| 国产日产欧美视频| 亚洲熟妇国产熟妇肥婆| 国产免费内射又粗又爽密桃视频| 91国内在线播放| 8x8x最新地址| 国产精品久久久毛片| 六月丁香婷婷在线| 九色在线视频观看| 日韩欧美国产免费| 3d动漫一区二区三区| 黄色一级大片免费| 中文字幕日韩精品无码内射| 久久精品国产精品亚洲精品色| 成年网站在线播放| 97超碰成人在线| 欧美美女性视频| 一区二区三区国产好的精华液| 香港日本韩国三级网站| 老司机久久精品| 亚洲精品在线网址| 欧美性受xxxx黑人猛交88| www.com污| 国产欧美高清在线| 国产免费黄视频| 丰满爆乳一区二区三区| 久久久999免费视频| 成熟了的熟妇毛茸茸| 亚洲熟妇av一区二区三区| 成人精品视频一区二区| www.超碰com| 超碰中文字幕在线观看| 日韩不卡视频一区二区| 欧美成人精品免费| 成人久久久久久久久| 青青青在线视频免费观看| 国产精品自在自线| 久久久天堂国产精品| 久久国产亚洲精品无码| 麻豆三级在线观看| 2021国产视频| 国产三级三级三级看三级| 日日干日日操日日射| www.亚洲成人网| 熟妇人妻无乱码中文字幕真矢织江| 九色91popny| 久久99久久99精品| 日韩在线不卡一区| 你真棒插曲来救救我在线观看| 欧美激情国产精品日韩| 久久99国产精品一区| 91精品91久久久中77777老牛| jizz欧美性11| 欧美成人一区二区在线观看| av中文字幕网址| 成人一级片网站| 欧美交换配乱吟粗大25p| 欧美三级理论片| xxxx18hd亚洲hd捆绑| 亚洲天堂伊人网| 熟女人妇 成熟妇女系列视频| 男人的天堂视频在线| 欧美婷婷精品激情| 国产av无码专区亚洲精品| 国产精品视频网站在线观看| www.国产视频.com| 日韩亚洲在线视频| 国模无码视频一区二区三区| 一区二区三区一级片| 中文字幕在线观看日| 精品久久久久av| 免费av观看网址| 乱人伦xxxx国语对白| 久久亚洲国产成人精品无码区| 三区视频在线观看| 天堂av手机在线| 亚洲国产日韩欧美在线观看| 日韩视频第二页| 久久精品国产精品亚洲色婷婷| 免费看毛片的网址| 男人添女人下部高潮视频在观看| 国产在线视频综合|