WMI Logical Disk Information

The Win32_LogicalDisk WMI class returns information about the local storage devices on a local computer. This class allows you to run the ChkDsk program on a given storage device. But most importantly, it provides you with information about the size, availability and file system for each hard drive.

From MSDN:

The Win32_LogicalDisk WMI class represents a data source that resolves to an actual local storage device on a computer system running Windows.

Sample usage

Function GetLogicalDiskInfo()

Dim objWMI As Object
Dim disks As Object
Dim disk As Object

  Set objWMI = GetWMIService

  Set disks = objWMI.ExecQuery("Select * from Win32_LogicalDisk")

  For Each disk In disks
    Debug.Print disk.Access
    Debug.Print disk.Availability
    Debug.Print disk.BlockSize
    Debug.Print disk.Caption
    Debug.Print disk.Compressed
    Debug.Print disk.ConfigManagerErrorCode
    Debug.Print disk.ConfigManagerUserConfig
    Debug.Print disk.CreationClassName
    Debug.Print disk.Description
    Debug.Print disk.DeviceID
    Debug.Print disk.DriveType
    Debug.Print disk.ErrorCleared
    Debug.Print disk.ErrorDescription
    Debug.Print disk.ErrorMethodology
    Debug.Print disk.FileSystem
    Debug.Print disk.FreeSpace
    Debug.Print disk.InstallDate
    Debug.Print disk.LastErrorCode
    Debug.Print disk.MaximumComponentLength
    Debug.Print disk.MediaType
    Debug.Print disk.Name
    Debug.Print disk.NumberOfBlocks
    Debug.Print disk.PNPDeviceID
    Debug.Print disk.PowerManagementCapabilities
    Debug.Print disk.PowerManagementSupported
    Debug.Print disk.ProviderName
    Debug.Print disk.Purpose
    Debug.Print disk.QuotasDisabled
    Debug.Print disk.QuotasIncomplete
    Debug.Print disk.QuotasRebuilding
    Debug.Print disk.Size
    Debug.Print disk.Status
    Debug.Print disk.StatusInfo
    Debug.Print disk.SupportsDiskQuotas
    Debug.Print disk.SupportsFileBasedCompression
    Debug.Print disk.SystemCreationClassName
    Debug.Print disk.SystemName
    Debug.Print disk.VolumeDirty
    Debug.Print disk.VolumeName
    Debug.Print disk.VolumeSerialNumber
  Next disk

End Function

Function GetWMIService() As Object
' http://msdn.microsoft.com/en-us/library/aa394586(VS.85).aspx
Dim strComputer As String

  strComputer = "."

  Set GetWMIService = GetObject("winmgmts:" _
                              & "{impersonationLevel=impersonate}!\\" _
                              & strComputer & "\root\cimv2")
End Function

Site last updated: May 17, 2012

Random Data Generator