vb 下面函数如何修改获取整个硬盘容量.在线等,急用!

来源:百度知道 编辑:UC知道 时间:2024/09/25 20:28:24
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()
'用GetDiskFreeSpaceEx得到正确的容量
Dim lngFreeCaller As LARGE_INTEGER
Dim lngTotal As LARGE_INTEGER
Dim lngTotalFree As LARGE_INTEGER
Dim sngSize#

GetDiskFreeSpaceEx "d:\", lngFreeCaller, lngTotal, lngTotalFree

'以下用

#include <windows.h>
#include <winioctl.h>

BOOL
GetDriveGeometry(DISK_GEOMETRY *pdg)
{
HANDLE hDevice; // handle to the drive to be examined
BOOL bResult; // results flag
DWORD junk; // discard results

hDevice = CreateFile("\\\\.\\PhysicalDrive0", // drive to open
0, // don't need any access to the drive
FILE_SHARE_READ | FILE_SHARE_WRITE, // share mode
NULL, // default security attributes
OPEN_EXIST