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 WmiQueryHandlercreateInstance()Factory method to create an instance of this class.intgetComThreading()Returns the current threading model for COM initialization, as OSHI is required to match if an external program has COM initialized already.intgetWmiTimeout()Gets the current WMI timeout.protected voidhandleComException(com.sun.jna.platform.win32.COM.WbemcliUtil.WmiQuery<?> query, com.sun.jna.platform.win32.COM.COMException ex)handleComException.booleaninitCOM()Initializes COM library and sets security to impersonate the local userprotected booleaninitCOM(int coInitThreading)initCOM.booleanisSecurityInitialized()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 voidsetInstanceClass(java.lang.Class<? extends WmiQueryHandler> instanceClass)Define a subclass to be instantiated bycreateInstance().voidsetWmiTimeout(int wmiTimeout)Sets the WMI timeout.intswitchComThreading()Switches the current threading model for COM initialization, as OSHI is required to match if an external program has COM initialized already.voidunInitCOM()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.WmiQueryobject.ex- aCOMExceptionobject.
-
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).
-