/*** Autogenerated by WIDL 1.3.12 from wbemcli.idl - Do not edit ***/

#include <rpc.h>
#include <rpcndr.h>

#ifndef __WIDL_WBEMCLI_H
#define __WIDL_WBEMCLI_H

/* Forward declarations */

#ifndef __IWbemLocator_FWD_DEFINED__
#define __IWbemLocator_FWD_DEFINED__
typedef interface IWbemLocator IWbemLocator;
#endif

#ifndef __IWbemStatusCodeText_FWD_DEFINED__
#define __IWbemStatusCodeText_FWD_DEFINED__
typedef interface IWbemStatusCodeText IWbemStatusCodeText;
#endif

#ifndef __IWbemServices_FWD_DEFINED__
#define __IWbemServices_FWD_DEFINED__
typedef interface IWbemServices IWbemServices;
#endif

#ifndef __IEnumWbemClassObject_FWD_DEFINED__
#define __IEnumWbemClassObject_FWD_DEFINED__
typedef interface IEnumWbemClassObject IEnumWbemClassObject;
#endif

/* Headers for imported files */

#include <objidl.h>

#ifdef __cplusplus
extern "C" {
#endif

DEFINE_GUID(CLSID_WbemLocator, 0x4590f811,0x1d3A,0x11d0,0x89,0x1f,0x00,0xaa,0x00,0x4b,0x2e,0x24);
DEFINE_GUID(CLSID_WbemStatusCode, 0xeb87e1bd,0x3233,0x11d2,0xae,0xc9,0x00,0xc0,0x4f,0xb6,0x88,0x20);
#ifndef __IWbemContext_FWD_DEFINED__
#define __IWbemContext_FWD_DEFINED__
typedef interface IWbemContext IWbemContext;
#endif

#ifndef __IWbemServices_FWD_DEFINED__
#define __IWbemServices_FWD_DEFINED__
typedef interface IWbemServices IWbemServices;
#endif

#ifndef __IWbemStatusCodeText_FWD_DEFINED__
#define __IWbemStatusCodeText_FWD_DEFINED__
typedef interface IWbemStatusCodeText IWbemStatusCodeText;
#endif

#ifndef __IWbemCallResult_FWD_DEFINED__
#define __IWbemCallResult_FWD_DEFINED__
typedef interface IWbemCallResult IWbemCallResult;
#endif

#ifndef __IWbemObjectSink_FWD_DEFINED__
#define __IWbemObjectSink_FWD_DEFINED__
typedef interface IWbemObjectSink IWbemObjectSink;
#endif

#ifndef __IWbemClassObject_FWD_DEFINED__
#define __IWbemClassObject_FWD_DEFINED__
typedef interface IWbemClassObject IWbemClassObject;
#endif

#ifndef __IEnumWbemClassObject_FWD_DEFINED__
#define __IEnumWbemClassObject_FWD_DEFINED__
typedef interface IEnumWbemClassObject IEnumWbemClassObject;
#endif

typedef 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;
/*****************************************************************************
 * IWbemLocator interface
 */
#ifndef __IWbemLocator_INTERFACE_DEFINED__
#define __IWbemLocator_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWbemLocator, 0xdc12a687, 0x737f, 0x11cf, 0x88,0x4d, 0x00,0xaa,0x00,0x4b,0x2e,0x24);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWbemLocator : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ConnectServer(
        const BSTR strNetworkResource,
        const BSTR strUser,
        const BSTR strPassword,
        const BSTR strLocale,
        LONG lSecurityFlags,
        const BSTR strAuthority,
        IWbemContext *pCtx,
        IWbemServices **ppNamespace) = 0;

};
#else
typedef struct IWbemLocatorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWbemLocator* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWbemLocator* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWbemLocator* This);

    /*** IWbemLocator methods ***/
    HRESULT (STDMETHODCALLTYPE *ConnectServer)(
        IWbemLocator* This,
        const BSTR strNetworkResource,
        const BSTR strUser,
        const BSTR strPassword,
        const BSTR strLocale,
        LONG lSecurityFlags,
        const BSTR strAuthority,
        IWbemContext *pCtx,
        IWbemServices **ppNamespace);

    END_INTERFACE
} IWbemLocatorVtbl;
interface IWbemLocator {
    CONST_VTBL IWbemLocatorVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWbemLocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWbemLocator_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWbemLocator_Release(This) (This)->lpVtbl->Release(This)
/*** IWbemLocator methods ***/
#define IWbemLocator_ConnectServer(This,strNetworkResource,strUser,strPassword,strLocale,lSecurityFlags,strAuthority,pCtx,ppNamespace) (This)->lpVtbl->ConnectServer(This,strNetworkResource,strUser,strPassword,strLocale,lSecurityFlags,strAuthority,pCtx,ppNamespace)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWbemLocator_ConnectServer_Proxy(
    IWbemLocator* This,
    const BSTR strNetworkResource,
    const BSTR strUser,
    const BSTR strPassword,
    const BSTR strLocale,
    LONG lSecurityFlags,
    const BSTR strAuthority,
    IWbemContext *pCtx,
    IWbemServices **ppNamespace);
void __RPC_STUB IWbemLocator_ConnectServer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWbemLocator_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWbemStatusCodeText interface
 */
#ifndef __IWbemStatusCodeText_INTERFACE_DEFINED__
#define __IWbemStatusCodeText_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWbemStatusCodeText, 0xeb87e1bc, 0x3233, 0x11d2, 0xae,0xc9, 0x00,0xc0,0x4f,0xb6,0x88,0x20);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWbemStatusCodeText : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetErrorCodeText(
        HRESULT hRes,
        LCID LocaleId,
        LONG lFlags,
        BSTR *MessageText) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFacilityCodeText(
        HRESULT hRes,
        LCID LocaleId,
        LONG lFlags,
        BSTR *MessageText) = 0;

};
#else
typedef struct IWbemStatusCodeTextVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWbemStatusCodeText* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWbemStatusCodeText* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWbemStatusCodeText* This);

    /*** IWbemStatusCodeText methods ***/
    HRESULT (STDMETHODCALLTYPE *GetErrorCodeText)(
        IWbemStatusCodeText* This,
        HRESULT hRes,
        LCID LocaleId,
        LONG lFlags,
        BSTR *MessageText);

    HRESULT (STDMETHODCALLTYPE *GetFacilityCodeText)(
        IWbemStatusCodeText* This,
        HRESULT hRes,
        LCID LocaleId,
        LONG lFlags,
        BSTR *MessageText);

    END_INTERFACE
} IWbemStatusCodeTextVtbl;
interface IWbemStatusCodeText {
    CONST_VTBL IWbemStatusCodeTextVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWbemStatusCodeText_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWbemStatusCodeText_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWbemStatusCodeText_Release(This) (This)->lpVtbl->Release(This)
/*** IWbemStatusCodeText methods ***/
#define IWbemStatusCodeText_GetErrorCodeText(This,hRes,LocaleId,lFlags,MessageText) (This)->lpVtbl->GetErrorCodeText(This,hRes,LocaleId,lFlags,MessageText)
#define IWbemStatusCodeText_GetFacilityCodeText(This,hRes,LocaleId,lFlags,MessageText) (This)->lpVtbl->GetFacilityCodeText(This,hRes,LocaleId,lFlags,MessageText)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWbemStatusCodeText_GetErrorCodeText_Proxy(
    IWbemStatusCodeText* This,
    HRESULT hRes,
    LCID LocaleId,
    LONG lFlags,
    BSTR *MessageText);
void __RPC_STUB IWbemStatusCodeText_GetErrorCodeText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemStatusCodeText_GetFacilityCodeText_Proxy(
    IWbemStatusCodeText* This,
    HRESULT hRes,
    LCID LocaleId,
    LONG lFlags,
    BSTR *MessageText);
void __RPC_STUB IWbemStatusCodeText_GetFacilityCodeText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWbemStatusCodeText_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWbemServices interface
 */
#ifndef __IWbemServices_INTERFACE_DEFINED__
#define __IWbemServices_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWbemServices, 0x9556dc99, 0x828c, 0x11cf, 0xa3,0x7e, 0x00,0xaa,0x00,0x32,0x40,0xc7);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IWbemServices : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OpenNamespace(
        const BSTR strNamespace,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemServices **ppWorkingNamespace,
        IWbemCallResult **ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE CancelAsyncCall(
        IWbemObjectSink *pSink) = 0;

    virtual HRESULT STDMETHODCALLTYPE QueryObjectSink(
        LONG lFlags,
        IWbemObjectSink **ppResponseHandler) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetObject(
        const BSTR strObjectPath,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemClassObject **ppObject,
        IWbemCallResult **ppCallResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetObjectAsync(
        const BSTR strObjectPath,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler) = 0;

    virtual HRESULT STDMETHODCALLTYPE PutClass(
        IWbemClassObject *pObject,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemCallResult **ppCallResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE PutClassAsync(
        IWbemClassObject *pObject,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteClass(
        const BSTR strClass,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemCallResult **ppCallResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteClassAsync(
        const BSTR strClass,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateClassEnum(
        const BSTR strSuperclass,
        LONG lFlags,
        IWbemContext *pCtx,
        IEnumWbemClassObject **ppEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateClassEnumAsync(
        const BSTR strSuperclass,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler) = 0;

    virtual HRESULT STDMETHODCALLTYPE PutInstance(
        IWbemClassObject *pInst,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemCallResult **ppCallResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE PutInstanceAsync(
        IWbemClassObject *pInst,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteInstance(
        const BSTR strObjectPath,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemCallResult **ppCallResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteInstanceAsync(
        const BSTR strObjectPath,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateInstanceEnum(
        const BSTR strFilter,
        LONG lFlags,
        IWbemContext *pCtx,
        IEnumWbemClassObject **ppEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateInstanceEnumAsync(
        const BSTR strFilter,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExecQuery(
        const BSTR strQueryLanguage,
        const BSTR strQuery,
        LONG lFlags,
        IWbemContext *pCtx,
        IEnumWbemClassObject **ppEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExecQueryAsync(
        const BSTR strQueryLanguage,
        const BSTR strQuery,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExecNotificationQuery(
        const BSTR strQueryLanguage,
        const BSTR strQuery,
        LONG lFlags,
        IWbemContext *pCtx,
        IEnumWbemClassObject **ppEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExecNotificationQueryAsync(
        const BSTR strQueryLanguage,
        const BSTR strQuery,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExecMethod(
        const BSTR strObjectPath,
        const BSTR strMethodName,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemClassObject *pInParams,
        IWbemClassObject **ppOutParams,
        IWbemCallResult **ppCallResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExecMethodAsync(
        const BSTR strObjectPath,
        const BSTR strMethodName,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemClassObject *pInParams,
        IWbemObjectSink *pResponseHandler) = 0;

};
#else
typedef struct IWbemServicesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWbemServices* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWbemServices* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWbemServices* This);

    /*** IWbemServices methods ***/
    HRESULT (STDMETHODCALLTYPE *OpenNamespace)(
        IWbemServices* This,
        const BSTR strNamespace,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemServices **ppWorkingNamespace,
        IWbemCallResult **ppResult);

    HRESULT (STDMETHODCALLTYPE *CancelAsyncCall)(
        IWbemServices* This,
        IWbemObjectSink *pSink);

    HRESULT (STDMETHODCALLTYPE *QueryObjectSink)(
        IWbemServices* This,
        LONG lFlags,
        IWbemObjectSink **ppResponseHandler);

    HRESULT (STDMETHODCALLTYPE *GetObject)(
        IWbemServices* This,
        const BSTR strObjectPath,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemClassObject **ppObject,
        IWbemCallResult **ppCallResult);

    HRESULT (STDMETHODCALLTYPE *GetObjectAsync)(
        IWbemServices* This,
        const BSTR strObjectPath,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler);

    HRESULT (STDMETHODCALLTYPE *PutClass)(
        IWbemServices* This,
        IWbemClassObject *pObject,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemCallResult **ppCallResult);

    HRESULT (STDMETHODCALLTYPE *PutClassAsync)(
        IWbemServices* This,
        IWbemClassObject *pObject,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler);

    HRESULT (STDMETHODCALLTYPE *DeleteClass)(
        IWbemServices* This,
        const BSTR strClass,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemCallResult **ppCallResult);

    HRESULT (STDMETHODCALLTYPE *DeleteClassAsync)(
        IWbemServices* This,
        const BSTR strClass,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler);

    HRESULT (STDMETHODCALLTYPE *CreateClassEnum)(
        IWbemServices* This,
        const BSTR strSuperclass,
        LONG lFlags,
        IWbemContext *pCtx,
        IEnumWbemClassObject **ppEnum);

    HRESULT (STDMETHODCALLTYPE *CreateClassEnumAsync)(
        IWbemServices* This,
        const BSTR strSuperclass,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler);

    HRESULT (STDMETHODCALLTYPE *PutInstance)(
        IWbemServices* This,
        IWbemClassObject *pInst,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemCallResult **ppCallResult);

    HRESULT (STDMETHODCALLTYPE *PutInstanceAsync)(
        IWbemServices* This,
        IWbemClassObject *pInst,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler);

    HRESULT (STDMETHODCALLTYPE *DeleteInstance)(
        IWbemServices* This,
        const BSTR strObjectPath,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemCallResult **ppCallResult);

    HRESULT (STDMETHODCALLTYPE *DeleteInstanceAsync)(
        IWbemServices* This,
        const BSTR strObjectPath,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler);

    HRESULT (STDMETHODCALLTYPE *CreateInstanceEnum)(
        IWbemServices* This,
        const BSTR strFilter,
        LONG lFlags,
        IWbemContext *pCtx,
        IEnumWbemClassObject **ppEnum);

    HRESULT (STDMETHODCALLTYPE *CreateInstanceEnumAsync)(
        IWbemServices* This,
        const BSTR strFilter,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler);

    HRESULT (STDMETHODCALLTYPE *ExecQuery)(
        IWbemServices* This,
        const BSTR strQueryLanguage,
        const BSTR strQuery,
        LONG lFlags,
        IWbemContext *pCtx,
        IEnumWbemClassObject **ppEnum);

    HRESULT (STDMETHODCALLTYPE *ExecQueryAsync)(
        IWbemServices* This,
        const BSTR strQueryLanguage,
        const BSTR strQuery,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler);

    HRESULT (STDMETHODCALLTYPE *ExecNotificationQuery)(
        IWbemServices* This,
        const BSTR strQueryLanguage,
        const BSTR strQuery,
        LONG lFlags,
        IWbemContext *pCtx,
        IEnumWbemClassObject **ppEnum);

    HRESULT (STDMETHODCALLTYPE *ExecNotificationQueryAsync)(
        IWbemServices* This,
        const BSTR strQueryLanguage,
        const BSTR strQuery,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemObjectSink *pResponseHandler);

    HRESULT (STDMETHODCALLTYPE *ExecMethod)(
        IWbemServices* This,
        const BSTR strObjectPath,
        const BSTR strMethodName,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemClassObject *pInParams,
        IWbemClassObject **ppOutParams,
        IWbemCallResult **ppCallResult);

    HRESULT (STDMETHODCALLTYPE *ExecMethodAsync)(
        IWbemServices* This,
        const BSTR strObjectPath,
        const BSTR strMethodName,
        LONG lFlags,
        IWbemContext *pCtx,
        IWbemClassObject *pInParams,
        IWbemObjectSink *pResponseHandler);

    END_INTERFACE
} IWbemServicesVtbl;
interface IWbemServices {
    CONST_VTBL IWbemServicesVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IWbemServices_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWbemServices_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWbemServices_Release(This) (This)->lpVtbl->Release(This)
/*** IWbemServices methods ***/
#define IWbemServices_OpenNamespace(This,strNamespace,lFlags,pCtx,ppWorkingNamespace,ppResult) (This)->lpVtbl->OpenNamespace(This,strNamespace,lFlags,pCtx,ppWorkingNamespace,ppResult)
#define IWbemServices_CancelAsyncCall(This,pSink) (This)->lpVtbl->CancelAsyncCall(This,pSink)
#define IWbemServices_QueryObjectSink(This,lFlags,ppResponseHandler) (This)->lpVtbl->QueryObjectSink(This,lFlags,ppResponseHandler)
#define IWbemServices_GetObject(This,strObjectPath,lFlags,pCtx,ppObject,ppCallResult) (This)->lpVtbl->GetObject(This,strObjectPath,lFlags,pCtx,ppObject,ppCallResult)
#define IWbemServices_GetObjectAsync(This,strObjectPath,lFlags,pCtx,pResponseHandler) (This)->lpVtbl->GetObjectAsync(This,strObjectPath,lFlags,pCtx,pResponseHandler)
#define IWbemServices_PutClass(This,pObject,lFlags,pCtx,ppCallResult) (This)->lpVtbl->PutClass(This,pObject,lFlags,pCtx,ppCallResult)
#define IWbemServices_PutClassAsync(This,pObject,lFlags,pCtx,pResponseHandler) (This)->lpVtbl->PutClassAsync(This,pObject,lFlags,pCtx,pResponseHandler)
#define IWbemServices_DeleteClass(This,strClass,lFlags,pCtx,ppCallResult) (This)->lpVtbl->DeleteClass(This,strClass,lFlags,pCtx,ppCallResult)
#define IWbemServices_DeleteClassAsync(This,strClass,lFlags,pCtx,pResponseHandler) (This)->lpVtbl->DeleteClassAsync(This,strClass,lFlags,pCtx,pResponseHandler)
#define IWbemServices_CreateClassEnum(This,strSuperclass,lFlags,pCtx,ppEnum) (This)->lpVtbl->CreateClassEnum(This,strSuperclass,lFlags,pCtx,ppEnum)
#define IWbemServices_CreateClassEnumAsync(This,strSuperclass,lFlags,pCtx,pResponseHandler) (This)->lpVtbl->CreateClassEnumAsync(This,strSuperclass,lFlags,pCtx,pResponseHandler)
#define IWbemServices_PutInstance(This,pInst,lFlags,pCtx,ppCallResult) (This)->lpVtbl->PutInstance(This,pInst,lFlags,pCtx,ppCallResult)
#define IWbemServices_PutInstanceAsync(This,pInst,lFlags,pCtx,pResponseHandler) (This)->lpVtbl->PutInstanceAsync(This,pInst,lFlags,pCtx,pResponseHandler)
#define IWbemServices_DeleteInstance(This,strObjectPath,lFlags,pCtx,ppCallResult) (This)->lpVtbl->DeleteInstance(This,strObjectPath,lFlags,pCtx,ppCallResult)
#define IWbemServices_DeleteInstanceAsync(This,strObjectPath,lFlags,pCtx,pResponseHandler) (This)->lpVtbl->DeleteInstanceAsync(This,strObjectPath,lFlags,pCtx,pResponseHandler)
#define IWbemServices_CreateInstanceEnum(This,strFilter,lFlags,pCtx,ppEnum) (This)->lpVtbl->CreateInstanceEnum(This,strFilter,lFlags,pCtx,ppEnum)
#define IWbemServices_CreateInstanceEnumAsync(This,strFilter,lFlags,pCtx,pResponseHandler) (This)->lpVtbl->CreateInstanceEnumAsync(This,strFilter,lFlags,pCtx,pResponseHandler)
#define IWbemServices_ExecQuery(This,strQueryLanguage,strQuery,lFlags,pCtx,ppEnum) (This)->lpVtbl->ExecQuery(This,strQueryLanguage,strQuery,lFlags,pCtx,ppEnum)
#define IWbemServices_ExecQueryAsync(This,strQueryLanguage,strQuery,lFlags,pCtx,pResponseHandler) (This)->lpVtbl->ExecQueryAsync(This,strQueryLanguage,strQuery,lFlags,pCtx,pResponseHandler)
#define IWbemServices_ExecNotificationQuery(This,strQueryLanguage,strQuery,lFlags,pCtx,ppEnum) (This)->lpVtbl->ExecNotificationQuery(This,strQueryLanguage,strQuery,lFlags,pCtx,ppEnum)
#define IWbemServices_ExecNotificationQueryAsync(This,strQueryLanguage,strQuery,lFlags,pCtx,pResponseHandler) (This)->lpVtbl->ExecNotificationQueryAsync(This,strQueryLanguage,strQuery,lFlags,pCtx,pResponseHandler)
#define IWbemServices_ExecMethod(This,strObjectPath,strMethodName,lFlags,pCtx,pInParams,ppOutParams,ppCallResult) (This)->lpVtbl->ExecMethod(This,strObjectPath,strMethodName,lFlags,pCtx,pInParams,ppOutParams,ppCallResult)
#define IWbemServices_ExecMethodAsync(This,strObjectPath,strMethodName,lFlags,pCtx,pInParams,pResponseHandler) (This)->lpVtbl->ExecMethodAsync(This,strObjectPath,strMethodName,lFlags,pCtx,pInParams,pResponseHandler)
#endif

#endif

HRESULT STDMETHODCALLTYPE IWbemServices_OpenNamespace_Proxy(
    IWbemServices* This,
    const BSTR strNamespace,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemServices **ppWorkingNamespace,
    IWbemCallResult **ppResult);
void __RPC_STUB IWbemServices_OpenNamespace_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_CancelAsyncCall_Proxy(
    IWbemServices* This,
    IWbemObjectSink *pSink);
void __RPC_STUB IWbemServices_CancelAsyncCall_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_QueryObjectSink_Proxy(
    IWbemServices* This,
    LONG lFlags,
    IWbemObjectSink **ppResponseHandler);
void __RPC_STUB IWbemServices_QueryObjectSink_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_GetObject_Proxy(
    IWbemServices* This,
    const BSTR strObjectPath,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemClassObject **ppObject,
    IWbemCallResult **ppCallResult);
void __RPC_STUB IWbemServices_GetObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_GetObjectAsync_Proxy(
    IWbemServices* This,
    const BSTR strObjectPath,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemObjectSink *pResponseHandler);
void __RPC_STUB IWbemServices_GetObjectAsync_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_PutClass_Proxy(
    IWbemServices* This,
    IWbemClassObject *pObject,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemCallResult **ppCallResult);
void __RPC_STUB IWbemServices_PutClass_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_PutClassAsync_Proxy(
    IWbemServices* This,
    IWbemClassObject *pObject,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemObjectSink *pResponseHandler);
void __RPC_STUB IWbemServices_PutClassAsync_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_DeleteClass_Proxy(
    IWbemServices* This,
    const BSTR strClass,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemCallResult **ppCallResult);
void __RPC_STUB IWbemServices_DeleteClass_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_DeleteClassAsync_Proxy(
    IWbemServices* This,
    const BSTR strClass,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemObjectSink *pResponseHandler);
void __RPC_STUB IWbemServices_DeleteClassAsync_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_CreateClassEnum_Proxy(
    IWbemServices* This,
    const BSTR strSuperclass,
    LONG lFlags,
    IWbemContext *pCtx,
    IEnumWbemClassObject **ppEnum);
void __RPC_STUB IWbemServices_CreateClassEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_CreateClassEnumAsync_Proxy(
    IWbemServices* This,
    const BSTR strSuperclass,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemObjectSink *pResponseHandler);
void __RPC_STUB IWbemServices_CreateClassEnumAsync_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_PutInstance_Proxy(
    IWbemServices* This,
    IWbemClassObject *pInst,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemCallResult **ppCallResult);
void __RPC_STUB IWbemServices_PutInstance_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_PutInstanceAsync_Proxy(
    IWbemServices* This,
    IWbemClassObject *pInst,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemObjectSink *pResponseHandler);
void __RPC_STUB IWbemServices_PutInstanceAsync_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_DeleteInstance_Proxy(
    IWbemServices* This,
    const BSTR strObjectPath,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemCallResult **ppCallResult);
void __RPC_STUB IWbemServices_DeleteInstance_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_DeleteInstanceAsync_Proxy(
    IWbemServices* This,
    const BSTR strObjectPath,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemObjectSink *pResponseHandler);
void __RPC_STUB IWbemServices_DeleteInstanceAsync_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_CreateInstanceEnum_Proxy(
    IWbemServices* This,
    const BSTR strFilter,
    LONG lFlags,
    IWbemContext *pCtx,
    IEnumWbemClassObject **ppEnum);
void __RPC_STUB IWbemServices_CreateInstanceEnum_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_CreateInstanceEnumAsync_Proxy(
    IWbemServices* This,
    const BSTR strFilter,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemObjectSink *pResponseHandler);
void __RPC_STUB IWbemServices_CreateInstanceEnumAsync_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_ExecQuery_Proxy(
    IWbemServices* This,
    const BSTR strQueryLanguage,
    const BSTR strQuery,
    LONG lFlags,
    IWbemContext *pCtx,
    IEnumWbemClassObject **ppEnum);
void __RPC_STUB IWbemServices_ExecQuery_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_ExecQueryAsync_Proxy(
    IWbemServices* This,
    const BSTR strQueryLanguage,
    const BSTR strQuery,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemObjectSink *pResponseHandler);
void __RPC_STUB IWbemServices_ExecQueryAsync_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_ExecNotificationQuery_Proxy(
    IWbemServices* This,
    const BSTR strQueryLanguage,
    const BSTR strQuery,
    LONG lFlags,
    IWbemContext *pCtx,
    IEnumWbemClassObject **ppEnum);
void __RPC_STUB IWbemServices_ExecNotificationQuery_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_ExecNotificationQueryAsync_Proxy(
    IWbemServices* This,
    const BSTR strQueryLanguage,
    const BSTR strQuery,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemObjectSink *pResponseHandler);
void __RPC_STUB IWbemServices_ExecNotificationQueryAsync_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_ExecMethod_Proxy(
    IWbemServices* This,
    const BSTR strObjectPath,
    const BSTR strMethodName,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemClassObject *pInParams,
    IWbemClassObject **ppOutParams,
    IWbemCallResult **ppCallResult);
void __RPC_STUB IWbemServices_ExecMethod_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IWbemServices_ExecMethodAsync_Proxy(
    IWbemServices* This,
    const BSTR strObjectPath,
    const BSTR strMethodName,
    LONG lFlags,
    IWbemContext *pCtx,
    IWbemClassObject *pInParams,
    IWbemObjectSink *pResponseHandler);
void __RPC_STUB IWbemServices_ExecMethodAsync_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IWbemServices_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IEnumWbemClassObject interface
 */
#ifndef __IEnumWbemClassObject_INTERFACE_DEFINED__
#define __IEnumWbemClassObject_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumWbemClassObject, 0x027947e1, 0xd731, 0x11ce, 0xa3,0x57, 0x00,0x00,0x00,0x00,0x00,0x01);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IEnumWbemClassObject : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        LONG lTimeout,
        ULONG uCount,
        IWbemClassObject **apObjects,
        ULONG *puReturned) = 0;

    virtual HRESULT STDMETHODCALLTYPE NextAsync(
        ULONG uCount,
        IWbemObjectSink *pSink) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumWbemClassObject **ppEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        LONG lTimeout,
        ULONG nCount) = 0;

};
#else
typedef struct IEnumWbemClassObjectVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IEnumWbemClassObject* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IEnumWbemClassObject* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IEnumWbemClassObject* This);

    /*** IEnumWbemClassObject methods ***/
    HRESULT (STDMETHODCALLTYPE *Reset)(
        IEnumWbemClassObject* This);

    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumWbemClassObject* This,
        LONG lTimeout,
        ULONG uCount,
        IWbemClassObject **apObjects,
        ULONG *puReturned);

    HRESULT (STDMETHODCALLTYPE *NextAsync)(
        IEnumWbemClassObject* This,
        ULONG uCount,
        IWbemObjectSink *pSink);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumWbemClassObject* This,
        IEnumWbemClassObject **ppEnum);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        IEnumWbemClassObject* This,
        LONG lTimeout,
        ULONG nCount);

    END_INTERFACE
} IEnumWbemClassObjectVtbl;
interface IEnumWbemClassObject {
    CONST_VTBL IEnumWbemClassObjectVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IEnumWbemClassObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumWbemClassObject_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumWbemClassObject_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumWbemClassObject methods ***/
#define IEnumWbemClassObject_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumWbemClassObject_Next(This,lTimeout,uCount,apObjects,puReturned) (This)->lpVtbl->Next(This,lTimeout,uCount,apObjects,puReturned)
#define IEnumWbemClassObject_NextAsync(This,uCount,pSink) (This)->lpVtbl->NextAsync(This,uCount,pSink)
#define IEnumWbemClassObject_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define IEnumWbemClassObject_Skip(This,lTimeout,nCount) (This)->lpVtbl->Skip(This,lTimeout,nCount)
#endif

#endif

HRESULT STDMETHODCALLTYPE IEnumWbemClassObject_Reset_Proxy(
    IEnumWbemClassObject* This);
void __RPC_STUB IEnumWbemClassObject_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumWbemClassObject_Next_Proxy(
    IEnumWbemClassObject* This,
    LONG lTimeout,
    ULONG uCount,
    IWbemClassObject **apObjects,
    ULONG *puReturned);
void __RPC_STUB IEnumWbemClassObject_Next_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumWbemClassObject_NextAsync_Proxy(
    IEnumWbemClassObject* This,
    ULONG uCount,
    IWbemObjectSink *pSink);
void __RPC_STUB IEnumWbemClassObject_NextAsync_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumWbemClassObject_Clone_Proxy(
    IEnumWbemClassObject* This,
    IEnumWbemClassObject **ppEnum);
void __RPC_STUB IEnumWbemClassObject_Clone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumWbemClassObject_Skip_Proxy(
    IEnumWbemClassObject* This,
    LONG lTimeout,
    ULONG nCount);
void __RPC_STUB IEnumWbemClassObject_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IEnumWbemClassObject_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __WIDL_WBEMCLI_H */
