Package oshi.util.platform.windows
Class WmiQueryHandler
java.lang.Object
oshi.util.platform.windows.WmiQueryHandler
@ThreadSafe public class WmiQueryHandler extends java.lang.Object
Utility to handle WMI Queries
-
Constructor Summary
Constructors Constructor Description WmiQueryHandler()
-
Method Summary
Modifier and Type Method Description static WmiQueryHandler
createInstance()
Factory method to create an instance of this class.int
getComThreading()
Returns the current threading model for COM initialization, as OSHI is required to match if an external program has COM initialized already.int
getWmiTimeout()
Gets the current WMI timeout.protected void
handleComException(com.sun.jna.platform.win32.COM.WbemcliUtil.WmiQuery<?> query, com.sun.jna.platform.win32.COM.COMException ex)
handleComException.boolean
initCOM()
Initializes COM library and sets security to impersonate the local userprotected boolean
initCOM(int coInitThreading)
initCOM.boolean
isSecurityInitialized()
Security only needs to be initialized once.<T extends java.lang.Enum<T>>
com.sun.jna.platform.win32.COM.WbemcliUtil.WmiResult<T>queryWMI(com.sun.jna.platform.win32.COM.WbemcliUtil.WmiQuery<T> query)
Query WMI for values, with no timeout.static void
setInstanceClass(java.lang.Class<? extends WmiQueryHandler> instanceClass)
Define a subclass to be instantiated bycreateInstance()
.void
setWmiTimeout(int wmiTimeout)
Sets the WMI timeout.int
switchComThreading()
Switches the current threading model for COM initialization, as OSHI is required to match if an external program has COM initialized already.void
unInitCOM()
UnInitializes COM library.
-
Constructor Details
-
WmiQueryHandler
public WmiQueryHandler()
-
-
Method Details
-
createInstance
Factory method to create an instance of this class. To override this class, usesetInstanceClass(Class)
to define a sublcass which extendsWmiQueryHandler
.- Returns:
- An instance of this class or a class defined by
setInstanceClass(Class)
-
setInstanceClass
Define a subclass to be instantiated bycreateInstance()
. The class must extendWmiQueryHandler
.- Parameters:
instanceClass
- The class to instantiate withcreateInstance()
.
-
queryWMI
public <T extends java.lang.Enum<T>> com.sun.jna.platform.win32.COM.WbemcliUtil.WmiResult<T> queryWMI(com.sun.jna.platform.win32.COM.WbemcliUtil.WmiQuery<T> query)Query WMI for values, with no timeout.- Type Parameters:
T
- WMI queries use an Enum to identify the fields to query, and use the enum values as keys to retrieve the results.- Parameters:
query
- A WmiQuery object encapsulating the namespace, class, and properties- Returns:
- a WmiResult object containing the query results, wrapping an EnumMap
-
handleComException
protected void handleComException(com.sun.jna.platform.win32.COM.WbemcliUtil.WmiQuery<?> query, com.sun.jna.platform.win32.COM.COMException ex)handleComException.
- Parameters:
query
- aWbemcliUtil.WmiQuery
object.ex
- aCOMException
object.
-
initCOM
public boolean initCOM()Initializes COM library and sets security to impersonate the local user- Returns:
- True if COM was initialized and needs to be uninitialized, false otherwise
-
initCOM
protected boolean initCOM(int coInitThreading)initCOM.
- Parameters:
coInitThreading
- a int.- Returns:
- a boolean.
-
unInitCOM
public void unInitCOM()UnInitializes COM library. This should be called once for every successful call to initCOM. -
getComThreading
public int getComThreading()Returns the current threading model for COM initialization, as OSHI is required to match if an external program has COM initialized already.- Returns:
- The current threading model
-
switchComThreading
public int switchComThreading()Switches the current threading model for COM initialization, as OSHI is required to match if an external program has COM initialized already.- Returns:
- The new threading model after switching
-
isSecurityInitialized
public boolean isSecurityInitialized()Security only needs to be initialized once. This boolean identifies whether that has happened.- Returns:
- Returns the securityInitialized.
-
getWmiTimeout
public int getWmiTimeout()Gets the current WMI timeout. WMI queries will fail if they take longer than this number of milliseconds. A value of -1 is infinite (no timeout).- Returns:
- Returns the current value of wmiTimeout.
-
setWmiTimeout
public void setWmiTimeout(int wmiTimeout)Sets the WMI timeout. WMI queries will fail if they take longer than this number of milliseconds.- Parameters:
wmiTimeout
- The wmiTimeout to set, in milliseconds. To disable timeouts, set timeout as -1 (infinite).
-