用vb获得大容量硬盘信息

用vb获得大容量硬盘信息

ID:17633524

大小:34.00 KB

页数:7页

时间:2018-09-04

用vb获得大容量硬盘信息_第1页
用vb获得大容量硬盘信息_第2页
用vb获得大容量硬盘信息_第3页
用vb获得大容量硬盘信息_第4页
用vb获得大容量硬盘信息_第5页
资源描述:

《用vb获得大容量硬盘信息》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、用vb获得大容量硬盘信息_visualbasic教程这是为什么呢?熟悉Win32API编程的人都知道,在用VB编程时,我们可以用相应的API函数来获得有关系统的硬盘的信息,会不会是错在API的调用函数呢?想到这里我用自编的程序来查看PCAlert的有关文件,发现其调用了GetDiskFreeSpace函数,问题就出在这个函数上。下面是该函数的参数说明:ByvallpRootPathNameAsString(为欲查看的分区的根路径如C:),lpSectorsPerClusterAsLong(为一簇的扇区数),lpBytesPerSec

2、torAsLong(为每一扇区的字节数),lpNumberOfFreeClustersAsLong(当前分区中未使用的簇数),lpTotalNumberOfClustersAsLong(总的簇数)AsLong。当我们调用此函数时,是以lpBytesPerSector×lpSectorsPerCluster×TotalNumberOfClusters来计算分区总的大小的,在VB中我用来查看自己的C盘时返回值分别为512、64、65526,因而计算出的C盘的大小只有2.05G。  以下是关于MSDN中的有关详细说明:对于大于的2G分区,G

3、etDiskFreeSpace函数可能(什么可能,是一定!)返回错误的值,此时函数会屏蔽存在lpNumberOfFreeClusters及lpTotalNumberOfClusters中的值,因此建议不要用该函数来获得大于2G分区的信息。对于大于2G的分区应当使用GetDiskFreeSpaceEx函数(从Win95OEMOSR2开始),此函数可以返回分区的有关正确信息。  找到了问题所在便可以对症下药了,即用GetDiskFreeSpaceEx函数代替GetDiskFreeSpace函数即可。以下是GetDiskFreeSpaceE

4、x函数中所要传递增的参数 lpRootPathNameString ,不包括卷名的磁盘根路径名lpFreeBytesAvailableToCallerLARGE_INTEGER,指定一个变量,用于容纳调用者可用的字节数量lpTotalNumberOfBytesLARGE_INTEGER ,指定一个变量,用于容纳磁盘上的总字节数lpTotalNumberOfFreeBytesLARGE_INTEGER,指定一个变量,用于容纳磁盘上可用的字节数PrivateTypeLARGE_INTEGER lowpartAsLong highpartA

5、sLongEndType  我们可以看到LARGE_INTEGER是一个由两个long型组成的一个类型,两个long组成表示的都是无符号的数,在转换时应当定义一个single型的变量,使其等于highpart*(2^32-1)lowpart,注意此处的两个long型相当于C/C中的无符号型整数类型,因为在VB中不存在此种类型,故而在换算时要处理好转换关系。我本人的做法是首先判断long型变量的正负,如是正直接相乘,如是负则用2^32-1减去该值再相乘(具体算法详见下面的代码)。OptionExplicitPrivateTypeLARG

6、E_INTEGER lowpartAsLong highpartAsLongEndTypePrivateDeclareFunctionGetDiskFreeSpaceLib"kernel32"Alias"GetDiskFreeSpaceA"(ByVallpRootPathNameAsString,lpSectorsPerClusterAsLong,lpBytesPerSectorAsLong,lpNumberOfFreeClustersAsLong,lpTotalNumberOfClustersAsLong)AsLongPrivate

7、DeclareFunctionGetDiskFreeSpaceExLib"kernel32"Alias"GetDiskFreeSpaceExA"_(ByVallpRootPathNameAsString,lpFreeBytesAvailableToCallerAsLARGE_INTEGER,_lpTotalNumberOfBytesAsLARGE_INTEGER,lpTotalNumberOfFreeBytes_AsLARGE_INTEGER)AsLongPrivateSubCommand1_Click() DimlngSectors

8、& DimlngTotalCluster& DimlngFreeCluster& DimlngPerCluster& DimlngperBytes& DimlngSize# GetDiskFreeSpace"c:",l

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。