/* * Copyright 2009 Hans Leidekker for CodeWeavers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ cpp_quote("DEFINE_GUID(CLSID_WbemLocator, 0x4590f811,0x1d3A,0x11d0,0x89,0x1f,0x00,0xaa,0x00,0x4b,0x2e,0x24);") cpp_quote("DEFINE_GUID(CLSID_WbemStatusCode, 0xeb87e1bd,0x3233,0x11d2,0xae,0xc9,0x00,0xc0,0x4f,0xb6,0x88,0x20);") import "oaidl.idl"; import "objidl.idl"; interface IWbemContext; interface IWbemServices; interface IWbemStatusCodeText; interface IWbemCallResult; interface IWbemObjectSink; interface IWbemClassObject; interface IEnumWbemClassObject; interface IWbemQualifierSet; typedef [v1_enum] enum tag_WBEMSTATUS { WBEM_NO_ERROR = 0, WBEM_S_NO_ERROR = 0, WBEM_S_SAME = 0, WBEM_S_FALSE = 1, WBEM_S_ALREADY_EXISTS = 0x40001, WBEM_S_RESET_TO_DEFAULT = 0x40002, WBEM_S_DIFFERENT = 0x40003, WBEM_S_TIMEDOUT = 0x40004, WBEM_S_NO_MORE_DATA = 0x40005, WBEM_S_OPERATION_CANCELLED = 0x40006, WBEM_S_PENDING = 0x40007, WBEM_S_DUPLICATE_OBJECTS = 0x40008, WBEM_S_ACCESS_DENIED = 0x40009, WBEM_S_PARTIAL_RESULTS = 0x40010, WBEM_S_SOURCE_NOT_AVAILABLE = 0x40017, WBEM_E_FAILED = 0x80041001, WBEM_E_NOT_FOUND = 0x80041002, WBEM_E_ACCESS_DENIED = 0x80041003, WBEM_E_PROVIDER_FAILURE = 0x80041004, WBEM_E_TYPE_MISMATCH = 0x80041005, WBEM_E_OUT_OF_MEMORY = 0x80041006, WBEM_E_INVALID_CONTEXT = 0x80041007, WBEM_E_INVALID_PARAMETER = 0x80041008, WBEM_E_NOT_AVAILABLE = 0x80041009, WBEM_E_CRITICAL_ERROR = 0x8004100a, WBEM_E_INVALID_STREAM = 0x8004100b, WBEM_E_NOT_SUPPORTED = 0x8004100c, WBEM_E_INVALID_SUPERCLASS = 0x8004100d, WBEM_E_INVALID_NAMESPACE = 0x8004100e, WBEM_E_INVALID_OBJECT = 0x8004100f, WBEM_E_INVALID_CLASS = 0x80041010, WBEM_E_PROVIDER_NOT_FOUND = 0x80041011, WBEM_E_INVALID_PROVIDER_REGISTRATION = 0x80041012, WBEM_E_PROVIDER_LOAD_FAILURE = 0x80041013, WBEM_E_INITIALIZATION_FAILURE = 0x80041014, WBEM_E_TRANSPORT_FAILURE = 0x80041015, WBEM_E_INVALID_OPERATION = 0x80041016, WBEM_E_INVALID_QUERY = 0x80041017, WBEM_E_INVALID_QUERY_TYPE = 0x80041018, WBEM_E_ALREADY_EXISTS = 0x80041019, WBEM_E_OVERRIDE_NOT_ALLOWED = 0x8004101a, WBEM_E_PROPAGATED_QUALIFIER = 0x8004101b, WBEM_E_PROPAGATED_PROPERTY = 0x8004101c, WBEM_E_UNEXPECTED = 0x8004101d, WBEM_E_ILLEGAL_OPERATION = 0x8004101e, WBEM_E_CANNOT_BE_KEY = 0x8004101f, WBEM_E_INCOMPLETE_CLASS = 0x80041020, WBEM_E_INVALID_SYNTAX = 0x80041021, WBEM_E_NONDECORATED_OBJECT = 0x80041022, WBEM_E_READ_ONLY = 0x80041023, WBEM_E_PROVIDER_NOT_CAPABLE = 0x80041024, WBEM_E_CLASS_HAS_CHILDREN = 0x80041025, WBEM_E_CLASS_HAS_INSTANCES = 0x80041026, WBEM_E_QUERY_NOT_IMPLEMENTED = 0x80041027, WBEM_E_ILLEGAL_NULL = 0x80041028, WBEM_E_INVALID_QUALIFIER_TYPE = 0x80041029, WBEM_E_INVALID_PROPERTY_TYPE = 0x8004102a, WBEM_E_VALUE_OUT_OF_RANGE = 0x8004102b, WBEM_E_CANNOT_BE_SINGLETON = 0x8004102c, WBEM_E_INVALID_CIM_TYPE = 0x8004102d, WBEM_E_INVALID_METHOD = 0x8004102e, WBEM_E_INVALID_METHOD_PARAMETERS = 0x8004102f, WBEM_E_SYSTEM_PROPERTY = 0x80041030, WBEM_E_INVALID_PROPERTY = 0x80041031, WBEM_E_CALL_CANCELLED = 0x80041032, WBEM_E_SHUTTING_DOWN = 0x80041033, WBEM_E_PROPAGATED_METHOD = 0x80041034, WBEM_E_UNSUPPORTED_PARAMETER = 0x80041035, WBEM_E_MISSING_PARAMETER_ID = 0x80041036, WBEM_E_INVALID_PARAMETER_ID = 0x80041037, WBEM_E_NONCONSECUTIVE_PARAMETER_IDS = 0x80041038, WBEM_E_PARAMETER_ID_ON_RETVAL = 0x80041039, WBEM_E_INVALID_OBJECT_PATH = 0x8004103a, WBEM_E_OUT_OF_DISK_SPACE = 0x8004103b, WBEM_E_BUFFER_TOO_SMALL = 0x8004103c, WBEM_E_UNSUPPORTED_PUT_EXTENSION = 0x8004103d, WBEM_E_UNKNOWN_OBJECT_TYPE = 0x8004103e, WBEM_E_UNKNOWN_PACKET_TYPE = 0x8004103f, WBEM_E_MARSHAL_VERSION_MISMATCH = 0x80041040, WBEM_E_MARSHAL_INVALID_SIGNATURE = 0x80041041, WBEM_E_INVALID_QUALIFIER = 0x80041042, WBEM_E_INVALID_DUPLICATE_PARAMETER = 0x80041043, WBEM_E_TOO_MUCH_DATA = 0x80041044, WBEM_E_SERVER_TOO_BUSY = 0x80041045, WBEM_E_INVALID_FLAVOR = 0x80041046, WBEM_E_CIRCULAR_REFERENCE = 0x80041047, WBEM_E_UNSUPPORTED_CLASS_UPDATE = 0x80041048, WBEM_E_CANNOT_CHANGE_KEY_INHERITANCE = 0x80041049, WBEM_E_CANNOT_CHANGE_INDEX_INHERITANCE = 0x80041050, WBEM_E_TOO_MANY_PROPERTIES = 0x80041051, WBEM_E_UPDATE_TYPE_MISMATCH = 0x80041052, WBEM_E_UPDATE_OVERRIDE_NOT_ALLOWED = 0x80041053, WBEM_E_UPDATE_PROPAGATED_METHOD = 0x80041054, WBEM_E_METHOD_NOT_IMPLEMENTED = 0x80041055, WBEM_E_METHOD_DISABLED = 0x80041056, WBEM_E_REFRESHER_BUSY = 0x80041057, WBEM_E_UNPARSABLE_QUERY = 0x80041058, WBEM_E_NOT_EVENT_CLASS = 0x80041059, WBEM_E_MISSING_GROUP_WITHIN = 0x8004105a, WBEM_E_MISSING_AGGREGATION_LIST = 0x8004105b, WBEM_E_PROPERTY_NOT_AN_OBJECT = 0x8004105c, WBEM_E_AGGREGATING_BY_OBJECT = 0x8004105d, WBEM_E_UNINTERPRETABLE_PROVIDER_QUERY = 0x8004105f, WBEM_E_BACKUP_RESTORE_WINMGMT_RUNNING = 0x80041060, WBEM_E_QUEUE_OVERFLOW = 0x80041061, WBEM_E_PRIVILEGE_NOT_HELD = 0x80041062, WBEM_E_INVALID_OPERATOR = 0x80041063, WBEM_E_LOCAL_CREDENTIALS = 0x80041064, WBEM_E_CANNOT_BE_ABSTRACT = 0x80041065, WBEM_E_AMENDED_OBJECT = 0x80041066, WBEM_E_CLIENT_TOO_SLOW = 0x80041067, WBEM_E_NULL_SECURITY_DESCRIPTOR = 0x80041068, WBEM_E_TIMED_OUT = 0x80041069, WBEM_E_INVALID_ASSOCIATION = 0x8004106a, WBEM_E_AMBIGUOUS_OPERATION = 0x8004106b, WBEM_E_QUOTA_VIOLATION = 0x8004106c, WBEM_E_RESERVED_001 = 0x8004106d, WBEM_E_RESERVED_002 = 0x8004106e, WBEM_E_UNSUPPORTED_LOCALE = 0x8004106f, WBEM_E_HANDLE_OUT_OF_DATE = 0x80041070, WBEM_E_CONNECTION_FAILED = 0x80041071, WBEM_E_INVALID_HANDLE_REQUEST = 0x80041072, WBEM_E_PROPERTY_NAME_TOO_WIDE = 0x80041073, WBEM_E_CLASS_NAME_TOO_WIDE = 0x80041074, WBEM_E_METHOD_NAME_TOO_WIDE = 0x80041075, WBEM_E_QUALIFIER_NAME_TOO_WIDE = 0x80041076, WBEM_E_RERUN_COMMAND = 0x80041077, WBEM_E_DATABASE_VER_MISMATCH = 0x80041078, WBEM_E_VETO_DELETE = 0x80041079, WBEM_E_VETO_PUT = 0x8004107a, WBEM_E_INVALID_LOCALE = 0x80041080, WBEM_E_PROVIDER_SUSPENDED = 0x80041081, WBEM_E_SYNCHRONIZATION_REQUIRED = 0x80041082, WBEM_E_NO_SCHEMA = 0x80041083, WBEM_E_PROVIDER_ALREADY_REGISTERED = 0x80041084, WBEM_E_PROVIDER_NOT_REGISTERED = 0x80041085, WBEM_E_FATAL_TRANSPORT_ERROR = 0x80041086, WBEM_E_ENCRYPTED_CONNECTION_REQUIRED = 0x80041087, WBEM_E_PROVIDER_TIMED_OUT = 0x80041088, WBEM_E_NO_KEY = 0x80041089, WBEM_E_PROVIDER_DISABLED = 0x8004108a } WBEMSTATUS; typedef [v1_enum] enum tag_WBEM_TIMEOUT_TYPE { WBEM_NO_WAIT = 0, WBEM_INFINITE = 0xffffffff } WBEM_TIMEOUT_TYPE; typedef [v1_enum] enum tag_CIMTYPE_ENUMERATION { CIM_ILLEGAL = 0xfff, CIM_EMPTY = 0, CIM_SINT16 = 2, CIM_SINT32 = 3, CIM_REAL32 = 4, CIM_REAL64 = 5, CIM_STRING = 8, CIM_BOOLEAN = 11, CIM_OBJECT = 13, CIM_SINT8 = 16, CIM_UINT8 = 17, CIM_UINT16 = 18, CIM_UINT32 = 19, CIM_SINT64 = 20, CIM_UINT64 = 21, CIM_DATETIME = 101, CIM_REFERENCE = 102, CIM_CHAR16 = 103, CIM_FLAG_ARRAY = 0x2000 } CIMTYPE_ENUMERATION; typedef long CIMTYPE; [ object, restricted, local, uuid(dc12a687-737f-11cf-884d-00aa004b2e24), pointer_default(unique) ] interface IWbemLocator : IUnknown { HRESULT ConnectServer( [in] const BSTR strNetworkResource, [in] const BSTR strUser, [in] const BSTR strPassword, [in] const BSTR strLocale, [in] LONG lSecurityFlags, [in] const BSTR strAuthority, [in] IWbemContext *pCtx, [out] IWbemServices **ppNamespace); }; [ object, local, uuid(eb87e1bc-3233-11d2-aec9-00c04fb68820) ] interface IWbemStatusCodeText : IUnknown { HRESULT GetErrorCodeText( [in] HRESULT hRes, [in] LCID LocaleId, [in] LONG lFlags, [out] BSTR *MessageText); HRESULT GetFacilityCodeText( [in] HRESULT hRes, [in] LCID LocaleId, [in] LONG lFlags, [out] BSTR *MessageText); }; typedef [v1_enum] enum tag_WBEM_GENERIC_FLAG_TYPE { WBEM_FLAG_RETURN_WBEM_COMPLETE = 0, WBEM_FLAG_BIDIRECTIONAL = 0, WBEM_FLAG_RETURN_ERROR_OBJECT = 0, WBEM_FLAG_DONT_SEND_STATUS = 0, WBEM_FLAG_SEND_ONLY_SELECTED = 0, WBEM_FLAG_RETURN_IMMEDIATELY = 0x10, WBEM_FLAG_FORWARD_ONLY = 0x20, WBEM_FLAG_NO_ERROR_OBJECT = 0x40, WBEM_FLAG_SEND_STATUS = 0x80, WBEM_FLAG_ENSURE_LOCATABLE = 0x100, WBEM_FLAG_DIRECT_READ = 0x200, WBEM_MASK_RESERVED_FLAGS = 0x1f000, WBEM_FLAG_USE_AMENDED_QUALIFIERS = 0x20000, WBEM_FLAG_STRONG_VALIDATION = 0x100000 } WBEM_GENERIC_FLAG_TYPE; [ object, restricted, uuid(9556dc99-828c-11cf-a37e-00aa003240c7), pointer_default(unique) ] interface IWbemServices : IUnknown { HRESULT OpenNamespace( [in] const BSTR strNamespace, [in] long lFlags, [in] IWbemContext *pCtx, [out] IWbemServices **ppWorkingNamespace, [out] IWbemCallResult **ppResult); HRESULT CancelAsyncCall( [in] IWbemObjectSink *pSink); HRESULT QueryObjectSink( [in] long lFlags, [out] IWbemObjectSink **ppResponseHandler); HRESULT GetObject( [in] const BSTR strObjectPath, [in] long lFlags, [in] IWbemContext *pCtx, [out] IWbemClassObject **ppObject, [out] IWbemCallResult **ppCallResult); HRESULT GetObjectAsync( [in] const BSTR strObjectPath, [in] long lFlags, [in] IWbemContext *pCtx, [in] IWbemObjectSink *pResponseHandler); HRESULT PutClass( [in] IWbemClassObject *pObject, [in] long lFlags, [in] IWbemContext *pCtx, [out] IWbemCallResult **ppCallResult); HRESULT PutClassAsync( [in] IWbemClassObject *pObject, [in] long lFlags, [in] IWbemContext *pCtx, [in] IWbemObjectSink *pResponseHandler); HRESULT DeleteClass( [in] const BSTR strClass, [in] long lFlags, [in] IWbemContext *pCtx, [out] IWbemCallResult **ppCallResult); HRESULT DeleteClassAsync( [in] const BSTR strClass, [in] long lFlags, [in] IWbemContext *pCtx, [in] IWbemObjectSink *pResponseHandler); HRESULT CreateClassEnum( [in] const BSTR strSuperclass, [in] long lFlags, [in] IWbemContext *pCtx, [out] IEnumWbemClassObject **ppEnum); HRESULT CreateClassEnumAsync( [in] const BSTR strSuperclass, [in] long lFlags, [in] IWbemContext *pCtx, [in] IWbemObjectSink *pResponseHandler); HRESULT PutInstance( [in] IWbemClassObject *pInst, [in] long lFlags, [in] IWbemContext *pCtx, [out] IWbemCallResult **ppCallResult); HRESULT PutInstanceAsync( [in] IWbemClassObject *pInst, [in] long lFlags, [in] IWbemContext *pCtx, [in] IWbemObjectSink *pResponseHandler); HRESULT DeleteInstance( [in] const BSTR strObjectPath, [in] long lFlags, [in] IWbemContext *pCtx, [out] IWbemCallResult **ppCallResult); HRESULT DeleteInstanceAsync( [in] const BSTR strObjectPath, [in] long lFlags, [in] IWbemContext *pCtx, [in] IWbemObjectSink *pResponseHandler); HRESULT CreateInstanceEnum( [in] const BSTR strFilter, [in] long lFlags, [in] IWbemContext *pCtx, [out] IEnumWbemClassObject **ppEnum); HRESULT CreateInstanceEnumAsync( [in] const BSTR strFilter, [in] long lFlags, [in] IWbemContext *pCtx, [in] IWbemObjectSink *pResponseHandler); HRESULT ExecQuery( [in] const BSTR strQueryLanguage, [in] const BSTR strQuery, [in] long lFlags, [in] IWbemContext *pCtx, [out] IEnumWbemClassObject **ppEnum); HRESULT ExecQueryAsync( [in] const BSTR strQueryLanguage, [in] const BSTR strQuery, [in] long lFlags, [in] IWbemContext *pCtx, [in] IWbemObjectSink *pResponseHandler); HRESULT ExecNotificationQuery( [in] const BSTR strQueryLanguage, [in] const BSTR strQuery, [in] long lFlags, [in] IWbemContext *pCtx, [out] IEnumWbemClassObject **ppEnum); HRESULT ExecNotificationQueryAsync( [in] const BSTR strQueryLanguage, [in] const BSTR strQuery, [in] long lFlags, [in] IWbemContext *pCtx, [in] IWbemObjectSink *pResponseHandler); HRESULT ExecMethod( [in] const BSTR strObjectPath, [in] const BSTR strMethodName, [in] long lFlags, [in] IWbemContext *pCtx, [in] IWbemClassObject *pInParams, [out] IWbemClassObject **ppOutParams, [out] IWbemCallResult **ppCallResult); HRESULT ExecMethodAsync( [in] const BSTR strObjectPath, [in] const BSTR strMethodName, [in] long lFlags, [in] IWbemContext *pCtx, [in] IWbemClassObject *pInParams, [in] IWbemObjectSink *pResponseHandler); }; [ object, restricted, uuid(027947e1-d731-11ce-a357-000000000001) ] interface IEnumWbemClassObject : IUnknown { HRESULT Reset(); HRESULT Next( [in] long lTimeout, [in] ULONG uCount, [out, size_is(uCount), length_is(*puReturned)] IWbemClassObject **apObjects, [out] ULONG *puReturned); HRESULT NextAsync( [in] ULONG uCount, [in] IWbemObjectSink *pSink); HRESULT Clone( [out] IEnumWbemClassObject **ppEnum); HRESULT Skip( [in] long lTimeout, [in] ULONG nCount); }; [ object, restricted, local, uuid(dc12a681-737f-11cf-884d-00aa004b2e24) ] interface IWbemClassObject : IUnknown { HRESULT GetQualifierSet( [out] IWbemQualifierSet **ppQualSet); HRESULT Get( [in,string] LPCWSTR wszName, [in] long lFlags, [out] VARIANT *pVal, [out] CIMTYPE *pType, [out] long *plFlavor); HRESULT Put( [in,string] LPCWSTR wszName, [in] long lFlags, [in] VARIANT *pVal, [in] CIMTYPE Type); HRESULT Delete( [in,string] LPCWSTR wszName); HRESULT GetNames( [in,string] LPCWSTR wszQualifierName, [in] long lFlags, [in] VARIANT *pQualifierVal, [out] SAFEARRAY *pNames); HRESULT BeginEnumeration( [in] long lEnumFlags); HRESULT Next( [in] long lFlags, [out] BSTR *strName, [out] VARIANT *pVal, [out] CIMTYPE *pType, [out] long *plFlavor); HRESULT EndEnumeration(); HRESULT GetPropertyQualifierSet( [in,string] LPCWSTR wszProperty, [out] IWbemQualifierSet **ppQualSet); HRESULT Clone( [out] IWbemClassObject **ppCopy); HRESULT GetObjectText( [in] long lFlags, [out] BSTR *pstrObjectText); HRESULT SpawnDerivedClass( [in] long lFlags, [out] IWbemClassObject **ppNewClass); HRESULT SpawnInstance( [in] long lFlags, [out] IWbemClassObject **ppNewInstance); HRESULT CompareTo( [in] long lFlags, [in] IWbemClassObject *pCompareTo); HRESULT GetPropertyOrigin( [in,string] LPCWSTR wszName, [out] BSTR *pstrClassName); HRESULT InheritsFrom( [in] LPCWSTR strAncestor); HRESULT GetMethod( [in,string] LPCWSTR wszName, [in] long lFlags, [out] IWbemClassObject **ppInSignature, [out] IWbemClassObject **ppOutSignature); HRESULT PutMethod( [in,string] LPCWSTR wszName, [in] long lFlags, [in] IWbemClassObject *pInSignature, [in] IWbemClassObject *pOutSignature); HRESULT DeleteMethod( [in,string] LPCWSTR wszName); HRESULT BeginMethodEnumeration( [in] long lEnumFlags); HRESULT NextMethod( [in] long lFlags, [out] BSTR *pstrName, [out] IWbemClassObject **ppInSignature, [out] IWbemClassObject **ppOutSignature); HRESULT EndMethodEnumeration(); HRESULT GetMethodQualifierSet( [in,string] LPCWSTR wszMethod, [out] IWbemQualifierSet **ppQualSet); HRESULT GetMethodOrigin( [in,string] LPCWSTR wszMethodName, [out] BSTR *pstrClassName); }