View Javadoc
1   /*
2    * Copyright 2020-2022 The OSHI Project Contributors
3    * SPDX-License-Identifier: MIT
4    */
5   package oshi.driver.windows.wmi;
6   
7   import com.sun.jna.platform.win32.COM.WbemcliUtil.WmiQuery;
8   import com.sun.jna.platform.win32.COM.WbemcliUtil.WmiResult;
9   
10  import oshi.annotation.concurrent.ThreadSafe;
11  import oshi.util.platform.windows.WmiQueryHandler;
12  
13  /**
14   * Utility to query WMI class {@code Win32_DiskDrive}
15   */
16  @ThreadSafe
17  public final class Win32DiskDrive {
18  
19      private static final String WIN32_DISK_DRIVE = "Win32_DiskDrive";
20  
21      /**
22       * Disk drive properties
23       */
24      public enum DiskDriveProperty {
25          INDEX, MANUFACTURER, MODEL, NAME, SERIALNUMBER, SIZE;
26      }
27  
28      private Win32DiskDrive() {
29      }
30  
31      /**
32       * Queries the disk drive name info
33       *
34       * @param h An instantiated {@link WmiQueryHandler}. User should have already initialized COM.
35       * @return Information regarding each disk drive.
36       */
37      public static WmiResult<DiskDriveProperty> queryDiskDrive(WmiQueryHandler h) {
38          WmiQuery<DiskDriveProperty> diskDriveQuery = new WmiQuery<>(WIN32_DISK_DRIVE, DiskDriveProperty.class);
39          return h.queryWMI(diskDriveQuery, false);
40      }
41  }