Package oshi.util.platform.windows
Class WmiQueryHandler
java.lang.Object
oshi.util.platform.windows.WmiQueryHandler
Utility to handle WMI Queries. Designed to be extended with user-customized behavior.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic WmiQueryHandler
Factory method to create an instance of this class.int
Returns the current threading model for COM initialization, as OSHI is required to match if an external program has COM initialized already.int
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) COM Exception handler.boolean
initCOM()
Initializes COM library and sets security to impersonate the local userprotected boolean
initCOM
(int coInitThreading) Initializes COM with a specific threading modelboolean
Security only needs to be initialized once.<T extends 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.<T extends Enum<T>>
com.sun.jna.platform.win32.COM.WbemcliUtil.WmiResult<T>queryWMI
(com.sun.jna.platform.win32.COM.WbemcliUtil.WmiQuery<T> query, boolean initCom) Query WMI for values.static void
setInstanceClass
(Class<? extends WmiQueryHandler> instanceClass) Define a subclass to be instantiated bycreateInstance()
.void
setWmiTimeout
(int wmiTimeout) Sets the WMI timeout.int
Switches the current threading model for COM initialization, as OSHI is required to match if an external program has COM initialized already.void
UnInitializes COM library.
-
Constructor Details
-
WmiQueryHandler
protected WmiQueryHandler()
-
-
Method Details
-
createInstance
Factory method to create an instance of this class. To override this class, usesetInstanceClass(Class)
to define a subclass 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 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. Makes no assumptions on whether the user has previously initialized COM.- 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
-
queryWMI
public <T extends Enum<T>> com.sun.jna.platform.win32.COM.WbemcliUtil.WmiResult<T> queryWMI(com.sun.jna.platform.win32.COM.WbemcliUtil.WmiQuery<T> query, boolean initCom) Query WMI for values.- 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 propertiesinitCom
- Whether to initialize COM. Iftrue
, initializes COM before the query and uninitializes after. Iffalse
, assumes the user has initialized COM separately. This can improve WMI query performance.- 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) COM Exception handler. Logs a warning message.- 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) Initializes COM with a specific threading model- Parameters:
coInitThreading
- The threading model- Returns:
- True if COM was initialized and needs to be uninitialized, false otherwise
-
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).
-