Class HkeyPerformanceDataUtil

java.lang.Object
oshi.driver.windows.registry.HkeyPerformanceDataUtil

@ThreadSafe public final class HkeyPerformanceDataUtil extends Object
Utility to read HKEY_PERFORMANCE_DATA information.
  • Field Details

    • LOG

      private static final org.slf4j.Logger LOG
    • HKEY_PERFORMANCE_TEXT

      private static final String HKEY_PERFORMANCE_TEXT
      See Also:
    • COUNTER

      private static final String COUNTER
      See Also:
    • COUNTER_INDEX_MAP

      private static final Map<String,Integer> COUNTER_INDEX_MAP
    • maxPerfBufferSize

      private static int maxPerfBufferSize
  • Constructor Details

    • HkeyPerformanceDataUtil

      private HkeyPerformanceDataUtil()
  • Method Details

    • readPerfDataFromRegistry

      public static <T extends Enum<T> & PerfCounterWildcardQuery.PdhCounterWildcardProperty> Triplet<List<Map<T,Object>>,Long,Long> readPerfDataFromRegistry(String objectName, Class<T> counterEnum)
      Reads and parses a block of performance data from the registry.
      Type Parameters:
      T - PDH Counters use an Enum to identify the fields to query in either the counter or WMI backup, and use the enum values as keys to retrieve the results.
      Parameters:
      objectName - The counter object for which to fetch data
      counterEnum - Which counters to return data for
      Returns:
      A triplet containing the results. The first element maps the input enum to the counter values where the first enum will contain the instance name as a String, and the remaining values will either be Long, Integer, or null depending on whether the specified enum counter was present and the size of the counter value. The second element is a timestamp in 100nSec increments (Windows 1601 Epoch) while the third element is a timestamp in milliseconds since the 1970 Epoch.
    • getCounterIndices

      private static <T extends Enum<T> & PerfCounterWildcardQuery.PdhCounterWildcardProperty> Pair<Integer,EnumMap<T,Integer>> getCounterIndices(String objectName, Class<T> counterEnum)
      Looks up the counter index values for the given counter object and the enum of counter names.
      Type Parameters:
      T - An enum containing the counters, whose class is passed as counterEnum
      Parameters:
      objectName - The counter object to look up the index for
      counterEnum - The Enum containing counters to look up the indices for. The first Enum value will be ignored.
      Returns:
      A Pair containing the index of the counter object as the first element, and an EnumMap mapping counter enum values to their index as the second element, if the lookup is successful; null otherwise.
    • readPerfDataBuffer

      private static com.sun.jna.Memory readPerfDataBuffer(String objectName)
      Read the performance data for a counter object from the registry.
      Parameters:
      objectName - The counter object for which to fetch data. It is the user's responsibility to ensure this key exists in COUNTER_INDEX_MAP.
      Returns:
      A buffer containing the data if successful, null otherwise.
    • mapCounterIndicesFromRegistry

      private static Map<String,Integer> mapCounterIndicesFromRegistry()