国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

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

用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

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

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        欧美精品一卡两卡| 色综合久久六月婷婷中文字幕| 亚洲精品免费在线播放| 亚洲一区二区在线视频| 青草av.久久免费一区| 国产91丝袜在线18| 欧美三级电影一区| 国产欧美精品在线观看| 一二三四区精品视频| 国模少妇一区二区三区| 色94色欧美sute亚洲线路一久| 日韩亚洲欧美高清| 亚洲四区在线观看| 久久99精品国产.久久久久| 色婷婷综合久久久久中文一区二区| 日韩欧美国产综合| 亚洲一区二区三区四区在线| 国产一二三精品| 欧美精品一级二级三级| 成人免费小视频| 国产一区二区三区在线观看免费视频 | 国产日韩av一区| 偷窥国产亚洲免费视频| eeuss国产一区二区三区| 欧美xxxxxxxx| 亚洲18色成人| 色天使久久综合网天天| 国产蜜臀av在线一区二区三区| 免播放器亚洲一区| 欧美少妇xxx| 亚洲日本在线a| 成a人片亚洲日本久久| 精品1区2区在线观看| 日韩av不卡一区二区| 欧美天堂一区二区三区| 国产免费成人在线视频| 亚洲成人www| 欧美日韩成人综合| 夜夜嗨av一区二区三区四季av| 午夜精品影院在线观看| 91小视频在线| 日韩视频一区在线观看| 亚洲蜜桃精久久久久久久| 国产成人99久久亚洲综合精品| 91麻豆精品国产综合久久久久久| 亚洲视频一区在线| av一本久道久久综合久久鬼色| 久久久久青草大香线综合精品| 免费观看在线色综合| 欧美伦理电影网| 亚洲电影视频在线| 精品视频一区二区不卡| 亚洲电影视频在线| 91精品国产高清一区二区三区蜜臀| 日韩国产成人精品| 日韩激情视频在线观看| 欧美视频在线观看一区二区| 一区二区欧美在线观看| 欧美伊人久久久久久久久影院 | 欧美在线你懂得| 一区二区三区免费看视频| 91免费在线播放| 一区二区三区美女| 欧美日韩国产系列| 麻豆精品一区二区av白丝在线| 精品区一区二区| 国产成人免费视频一区| 亚洲视频一区二区在线观看| 欧美日韩一级黄| 裸体健美xxxx欧美裸体表演| 久久久精品国产免费观看同学| 国产美女视频一区| 亚洲婷婷在线视频| 欧美日韩国产精品成人| 精品一区二区在线播放| 中文在线一区二区| 欧美最猛性xxxxx直播| 天天综合天天综合色| 欧美精品一区二区三区四区| 国产大陆a不卡| 一区二区三区高清不卡| 精品毛片乱码1区2区3区| 成人av中文字幕| 性感美女极品91精品| 久久久99免费| 欧美性xxxxx极品少妇| 久久99这里只有精品| 日韩一区有码在线| 91精品国产品国语在线不卡| 国产99精品国产| 天天综合网 天天综合色| 久久久久国产精品厨房| 欧美日韩精品综合在线| 国产精品一品视频| 亚洲高清免费在线| 国产日韩欧美麻豆| 欧美精品久久天天躁| 成人黄色国产精品网站大全在线免费观看| 一区二区国产盗摄色噜噜| 精品黑人一区二区三区久久| 在线精品视频小说1| 国产老肥熟一区二区三区| 亚洲国产日韩精品| 国产精品家庭影院| 欧美va天堂va视频va在线| 色香蕉成人二区免费| 国产一区二区福利视频| 亚洲444eee在线观看| 亚洲女同ⅹxx女同tv| 久久综合九色综合97_久久久| 欧美午夜电影一区| av日韩在线网站| 国产精品18久久久久久久久 | 国产精品久久毛片av大全日韩| 欧美欧美欧美欧美首页| 色综合天天天天做夜夜夜夜做| 国产在线播放一区| 蜜臀精品久久久久久蜜臀| 亚洲午夜免费福利视频| 中文字幕日韩av资源站| 久久精品水蜜桃av综合天堂| 日韩免费成人网| 91精品啪在线观看国产60岁| 欧美最猛性xxxxx直播| 91免费国产在线观看| 不卡在线视频中文字幕| 成人午夜激情视频| 国产精品99精品久久免费| 精品一区二区三区免费| 久久精品二区亚洲w码| 奇米影视7777精品一区二区| 亚洲国产精品久久艾草纯爱| 一区二区三区蜜桃网| 亚洲黄色录像片| 亚洲蜜臀av乱码久久精品| 成人欧美一区二区三区| 136国产福利精品导航| 国产精品国产三级国产aⅴ中文| 中文字幕av一区二区三区高| 国产精品理论在线观看| 国产精品亲子乱子伦xxxx裸| 国产精品免费视频网站| 国产精品久久久久国产精品日日| 欧美国产精品中文字幕| 国产精品久久免费看| 亚洲精品免费看| 亚洲国产精品一区二区尤物区| 亚洲激情第一区| 图片区日韩欧美亚洲| 麻豆91免费看| 国产精品99久久久久久久vr| 成人久久久精品乱码一区二区三区| 成人久久18免费网站麻豆| 91麻豆精品在线观看| 欧美日韩中文精品| 日韩欧美视频在线| 国产拍欧美日韩视频二区| 中文字幕制服丝袜成人av| 一区二区国产视频| 日本三级韩国三级欧美三级| 激情五月播播久久久精品| 成人黄色大片在线观看| 欧美伊人久久久久久久久影院| 91精品午夜视频| 精品国免费一区二区三区| 国产精品区一区二区三| 亚洲电影视频在线| 成人免费毛片嘿嘿连载视频| 久久亚洲精品小早川怜子| 99视频一区二区| 亚洲尤物视频在线| 欧美一级黄色片| 色94色欧美sute亚洲线路一久| 国产精品不卡在线观看| 在线视频一区二区免费| 日一区二区三区| 久久久久国产成人精品亚洲午夜 | 久久国产精品99久久久久久老狼| 久久久久久夜精品精品免费| 99久久99久久免费精品蜜臀| 肉肉av福利一精品导航| 国产精品美女视频| 欧美一区二区三区系列电影| 成人网男人的天堂| 日韩高清一区在线| 1000部国产精品成人观看| 日韩精品在线一区| 欧美日韩一区高清| 99天天综合性| 国产精品中文欧美| 日韩 欧美一区二区三区| 18成人在线视频| 国产偷国产偷精品高清尤物 | 视频一区视频二区中文字幕| 国产精品久久夜| 久久久99精品免费观看不卡| 日韩欧美高清dvd碟片| 欧美在线免费观看亚洲| 91亚洲永久精品| av不卡免费在线观看|