/*** Autogenerated by WIDL 1.3.1 from wuapi.idl - Do not edit ***/

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

#ifndef __WIDL_WUAPI_H
#define __WIDL_WUAPI_H

#ifdef __cplusplus
extern "C" {
#endif

/* Headers for imported files */

#include <oaidl.h>

/* Forward declarations */

#ifndef __IAutomaticUpdates_FWD_DEFINED__
#define __IAutomaticUpdates_FWD_DEFINED__
typedef interface IAutomaticUpdates IAutomaticUpdates;
#endif

#ifndef __IUpdateSession_FWD_DEFINED__
#define __IUpdateSession_FWD_DEFINED__
typedef interface IUpdateSession IUpdateSession;
#endif

#ifndef __IUpdateSearcher_FWD_DEFINED__
#define __IUpdateSearcher_FWD_DEFINED__
typedef interface IUpdateSearcher IUpdateSearcher;
#endif

#ifndef __IUpdateDownloader_FWD_DEFINED__
#define __IUpdateDownloader_FWD_DEFINED__
typedef interface IUpdateDownloader IUpdateDownloader;
#endif

#ifndef __IUpdateInstaller_FWD_DEFINED__
#define __IUpdateInstaller_FWD_DEFINED__
typedef interface IUpdateInstaller IUpdateInstaller;
#endif


DEFINE_GUID(CLSID_AutomaticUpdates, 0xbfe18e9c,0x6d87,0x4450,0xb3,0x7c,0xe0,0x2f,0x0b,0x37,0x38,0x03);
DEFINE_GUID(CLSID_UpdateSession, 0x4cb43d7f,0x7eee,0x4906,0x86,0x98,0x60,0xda,0x1c,0x38,0xf2,0xfe);
#ifndef __IAutomaticUpdates_FWD_DEFINED__
#define __IAutomaticUpdates_FWD_DEFINED__
typedef interface IAutomaticUpdates IAutomaticUpdates;
#endif

#ifndef __IAutomaticUpdatesSettings_FWD_DEFINED__
#define __IAutomaticUpdatesSettings_FWD_DEFINED__
typedef interface IAutomaticUpdatesSettings IAutomaticUpdatesSettings;
#endif

#ifndef __IDownloadJob_FWD_DEFINED__
#define __IDownloadJob_FWD_DEFINED__
typedef interface IDownloadJob IDownloadJob;
#endif

#ifndef __IDownloadResult_FWD_DEFINED__
#define __IDownloadResult_FWD_DEFINED__
typedef interface IDownloadResult IDownloadResult;
#endif

#ifndef __IInstallationJob_FWD_DEFINED__
#define __IInstallationJob_FWD_DEFINED__
typedef interface IInstallationJob IInstallationJob;
#endif

#ifndef __IInstallationResult_FWD_DEFINED__
#define __IInstallationResult_FWD_DEFINED__
typedef interface IInstallationResult IInstallationResult;
#endif

#ifndef __ISearchJob_FWD_DEFINED__
#define __ISearchJob_FWD_DEFINED__
typedef interface ISearchJob ISearchJob;
#endif

#ifndef __ISearchResult_FWD_DEFINED__
#define __ISearchResult_FWD_DEFINED__
typedef interface ISearchResult ISearchResult;
#endif

#ifndef __IUpdateCollection_FWD_DEFINED__
#define __IUpdateCollection_FWD_DEFINED__
typedef interface IUpdateCollection IUpdateCollection;
#endif

#ifndef __IUpdateDownloader_FWD_DEFINED__
#define __IUpdateDownloader_FWD_DEFINED__
typedef interface IUpdateDownloader IUpdateDownloader;
#endif

#ifndef __IUpdateHistoryEntryCollection_FWD_DEFINED__
#define __IUpdateHistoryEntryCollection_FWD_DEFINED__
typedef interface IUpdateHistoryEntryCollection IUpdateHistoryEntryCollection;
#endif

#ifndef __IUpdateInstaller_FWD_DEFINED__
#define __IUpdateInstaller_FWD_DEFINED__
typedef interface IUpdateInstaller IUpdateInstaller;
#endif

#ifndef __IUpdateSearcher_FWD_DEFINED__
#define __IUpdateSearcher_FWD_DEFINED__
typedef interface IUpdateSearcher IUpdateSearcher;
#endif

#ifndef __IUpdateSession_FWD_DEFINED__
#define __IUpdateSession_FWD_DEFINED__
typedef interface IUpdateSession IUpdateSession;
#endif

#ifndef __IWebProxy_FWD_DEFINED__
#define __IWebProxy_FWD_DEFINED__
typedef interface IWebProxy IWebProxy;
#endif

typedef enum tagDownloadPriority {
    dpLow = 1,
    dpNormal = 2,
    dpHigh = 3
} DownloadPriority;
typedef enum tagServerSelection {
    ssDefault = 0,
    ssManagedServer = 1,
    ssWindowsUpdate = 2,
    ssOthers = 3
} ServerSelection;
/*****************************************************************************
 * IAutomaticUpdates interface
 */
#ifndef __IAutomaticUpdates_INTERFACE_DEFINED__
#define __IAutomaticUpdates_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAutomaticUpdates, 0x673425bf, 0xc082, 0x4c7c, 0xbd,0xfd, 0x56,0x94,0x64,0xb8,0xe0,0xce);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IAutomaticUpdates : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE DetectNow(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Pause(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resume(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ShowSettingsDialog(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Settings(
        IAutomaticUpdatesSettings **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ServiceEnabled(
        VARIANT_BOOL *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableService(
        ) = 0;

};
#else
typedef struct IAutomaticUpdatesVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IAutomaticUpdates* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IAutomaticUpdates* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IAutomaticUpdates* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IAutomaticUpdates* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IAutomaticUpdates methods ***/
    HRESULT (STDMETHODCALLTYPE *DetectNow)(
        IAutomaticUpdates* This);

    HRESULT (STDMETHODCALLTYPE *Pause)(
        IAutomaticUpdates* This);

    HRESULT (STDMETHODCALLTYPE *Resume)(
        IAutomaticUpdates* This);

    HRESULT (STDMETHODCALLTYPE *ShowSettingsDialog)(
        IAutomaticUpdates* This);

    HRESULT (STDMETHODCALLTYPE *get_Settings)(
        IAutomaticUpdates* This,
        IAutomaticUpdatesSettings **retval);

    HRESULT (STDMETHODCALLTYPE *get_ServiceEnabled)(
        IAutomaticUpdates* This,
        VARIANT_BOOL *retval);

    HRESULT (STDMETHODCALLTYPE *EnableService)(
        IAutomaticUpdates* This);

    END_INTERFACE
} IAutomaticUpdatesVtbl;
interface IAutomaticUpdates {
    CONST_VTBL IAutomaticUpdatesVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IAutomaticUpdates_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAutomaticUpdates_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAutomaticUpdates_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IAutomaticUpdates_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IAutomaticUpdates_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IAutomaticUpdates_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IAutomaticUpdates_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IAutomaticUpdates methods ***/
#define IAutomaticUpdates_DetectNow(This) (This)->lpVtbl->DetectNow(This)
#define IAutomaticUpdates_Pause(This) (This)->lpVtbl->Pause(This)
#define IAutomaticUpdates_Resume(This) (This)->lpVtbl->Resume(This)
#define IAutomaticUpdates_ShowSettingsDialog(This) (This)->lpVtbl->ShowSettingsDialog(This)
#define IAutomaticUpdates_get_Settings(This,retval) (This)->lpVtbl->get_Settings(This,retval)
#define IAutomaticUpdates_get_ServiceEnabled(This,retval) (This)->lpVtbl->get_ServiceEnabled(This,retval)
#define IAutomaticUpdates_EnableService(This) (This)->lpVtbl->EnableService(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IAutomaticUpdates_DetectNow_Proxy(
    IAutomaticUpdates* This);
void __RPC_STUB IAutomaticUpdates_DetectNow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAutomaticUpdates_Pause_Proxy(
    IAutomaticUpdates* This);
void __RPC_STUB IAutomaticUpdates_Pause_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAutomaticUpdates_Resume_Proxy(
    IAutomaticUpdates* This);
void __RPC_STUB IAutomaticUpdates_Resume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAutomaticUpdates_ShowSettingsDialog_Proxy(
    IAutomaticUpdates* This);
void __RPC_STUB IAutomaticUpdates_ShowSettingsDialog_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAutomaticUpdates_get_Settings_Proxy(
    IAutomaticUpdates* This,
    IAutomaticUpdatesSettings **retval);
void __RPC_STUB IAutomaticUpdates_get_Settings_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAutomaticUpdates_get_ServiceEnabled_Proxy(
    IAutomaticUpdates* This,
    VARIANT_BOOL *retval);
void __RPC_STUB IAutomaticUpdates_get_ServiceEnabled_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAutomaticUpdates_EnableService_Proxy(
    IAutomaticUpdates* This);
void __RPC_STUB IAutomaticUpdates_EnableService_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IAutomaticUpdates_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUpdateSession interface
 */
#ifndef __IUpdateSession_INTERFACE_DEFINED__
#define __IUpdateSession_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUpdateSession, 0x816858a4, 0x260d, 0x4260, 0x93,0x3a, 0x25,0x85,0xf1,0xab,0xc7,0x6b);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IUpdateSession : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_ClientApplicationID(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ClientApplicationID(
        BSTR value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ReadOnly(
        VARIANT_BOOL *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_WebProxy(
        IWebProxy **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_WebProxy(
        IWebProxy *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateUpdateSearcher(
        IUpdateSearcher **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateUpdateDownloader(
        IUpdateDownloader **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateUpdateInstaller(
        IUpdateInstaller **retval) = 0;

};
#else
typedef struct IUpdateSessionVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IUpdateSession* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IUpdateSession* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IUpdateSession* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IUpdateSession* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IUpdateSession methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ClientApplicationID)(
        IUpdateSession* This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_ClientApplicationID)(
        IUpdateSession* This,
        BSTR value);

    HRESULT (STDMETHODCALLTYPE *get_ReadOnly)(
        IUpdateSession* This,
        VARIANT_BOOL *retval);

    HRESULT (STDMETHODCALLTYPE *get_WebProxy)(
        IUpdateSession* This,
        IWebProxy **retval);

    HRESULT (STDMETHODCALLTYPE *put_WebProxy)(
        IUpdateSession* This,
        IWebProxy *value);

    HRESULT (STDMETHODCALLTYPE *CreateUpdateSearcher)(
        IUpdateSession* This,
        IUpdateSearcher **retval);

    HRESULT (STDMETHODCALLTYPE *CreateUpdateDownloader)(
        IUpdateSession* This,
        IUpdateDownloader **retval);

    HRESULT (STDMETHODCALLTYPE *CreateUpdateInstaller)(
        IUpdateSession* This,
        IUpdateInstaller **retval);

    END_INTERFACE
} IUpdateSessionVtbl;
interface IUpdateSession {
    CONST_VTBL IUpdateSessionVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IUpdateSession_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUpdateSession_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUpdateSession_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IUpdateSession_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IUpdateSession_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IUpdateSession_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IUpdateSession_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IUpdateSession methods ***/
#define IUpdateSession_get_ClientApplicationID(This,retval) (This)->lpVtbl->get_ClientApplicationID(This,retval)
#define IUpdateSession_put_ClientApplicationID(This,value) (This)->lpVtbl->put_ClientApplicationID(This,value)
#define IUpdateSession_get_ReadOnly(This,retval) (This)->lpVtbl->get_ReadOnly(This,retval)
#define IUpdateSession_get_WebProxy(This,retval) (This)->lpVtbl->get_WebProxy(This,retval)
#define IUpdateSession_put_WebProxy(This,value) (This)->lpVtbl->put_WebProxy(This,value)
#define IUpdateSession_CreateUpdateSearcher(This,retval) (This)->lpVtbl->CreateUpdateSearcher(This,retval)
#define IUpdateSession_CreateUpdateDownloader(This,retval) (This)->lpVtbl->CreateUpdateDownloader(This,retval)
#define IUpdateSession_CreateUpdateInstaller(This,retval) (This)->lpVtbl->CreateUpdateInstaller(This,retval)
#endif

#endif

HRESULT STDMETHODCALLTYPE IUpdateSession_get_ClientApplicationID_Proxy(
    IUpdateSession* This,
    BSTR *retval);
void __RPC_STUB IUpdateSession_get_ClientApplicationID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSession_put_ClientApplicationID_Proxy(
    IUpdateSession* This,
    BSTR value);
void __RPC_STUB IUpdateSession_put_ClientApplicationID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSession_get_ReadOnly_Proxy(
    IUpdateSession* This,
    VARIANT_BOOL *retval);
void __RPC_STUB IUpdateSession_get_ReadOnly_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSession_get_WebProxy_Proxy(
    IUpdateSession* This,
    IWebProxy **retval);
void __RPC_STUB IUpdateSession_get_WebProxy_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSession_put_WebProxy_Proxy(
    IUpdateSession* This,
    IWebProxy *value);
void __RPC_STUB IUpdateSession_put_WebProxy_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSession_CreateUpdateSearcher_Proxy(
    IUpdateSession* This,
    IUpdateSearcher **retval);
void __RPC_STUB IUpdateSession_CreateUpdateSearcher_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSession_CreateUpdateDownloader_Proxy(
    IUpdateSession* This,
    IUpdateDownloader **retval);
void __RPC_STUB IUpdateSession_CreateUpdateDownloader_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSession_CreateUpdateInstaller_Proxy(
    IUpdateSession* This,
    IUpdateInstaller **retval);
void __RPC_STUB IUpdateSession_CreateUpdateInstaller_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IUpdateSession_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUpdateSearcher interface
 */
#ifndef __IUpdateSearcher_INTERFACE_DEFINED__
#define __IUpdateSearcher_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUpdateSearcher, 0x8f45abf1, 0xf9ae, 0x4b95, 0xa9,0x33, 0xf0,0xf6,0x6e,0x50,0x56,0xea);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IUpdateSearcher : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_CanAutomaticallyUpgradeService(
        VARIANT_BOOL *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_CanAutomaticallyUpgradeService(
        VARIANT_BOOL value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ClientApplicationID(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ClientApplicationID(
        BSTR value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IncludePotentiallySupersededUpdates(
        VARIANT_BOOL *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_IncludePotentiallySupersededUpdates(
        VARIANT_BOOL value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ServerSelection(
        ServerSelection *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ServerSelection(
        ServerSelection value) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeginSearch(
        BSTR criteria,
        IUnknown *onCompleted,
        VARIANT state,
        ISearchJob **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndSearch(
        ISearchJob *searchJob,
        ISearchResult **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE EscapeString(
        BSTR unescaped,
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE QueryHistory(
        LONG startIndex,
        LONG count,
        IUpdateHistoryEntryCollection **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE Search(
        BSTR criteria,
        ISearchResult **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Online(
        VARIANT_BOOL *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Online(
        VARIANT_BOOL value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTotalHistoryCount(
        LONG *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ServiceID(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ServiceID(
        BSTR value) = 0;

};
#else
typedef struct IUpdateSearcherVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IUpdateSearcher* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IUpdateSearcher* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IUpdateSearcher* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IUpdateSearcher* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IUpdateSearcher methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CanAutomaticallyUpgradeService)(
        IUpdateSearcher* This,
        VARIANT_BOOL *retval);

    HRESULT (STDMETHODCALLTYPE *put_CanAutomaticallyUpgradeService)(
        IUpdateSearcher* This,
        VARIANT_BOOL value);

    HRESULT (STDMETHODCALLTYPE *get_ClientApplicationID)(
        IUpdateSearcher* This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_ClientApplicationID)(
        IUpdateSearcher* This,
        BSTR value);

    HRESULT (STDMETHODCALLTYPE *get_IncludePotentiallySupersededUpdates)(
        IUpdateSearcher* This,
        VARIANT_BOOL *retval);

    HRESULT (STDMETHODCALLTYPE *put_IncludePotentiallySupersededUpdates)(
        IUpdateSearcher* This,
        VARIANT_BOOL value);

    HRESULT (STDMETHODCALLTYPE *get_ServerSelection)(
        IUpdateSearcher* This,
        ServerSelection *retval);

    HRESULT (STDMETHODCALLTYPE *put_ServerSelection)(
        IUpdateSearcher* This,
        ServerSelection value);

    HRESULT (STDMETHODCALLTYPE *BeginSearch)(
        IUpdateSearcher* This,
        BSTR criteria,
        IUnknown *onCompleted,
        VARIANT state,
        ISearchJob **retval);

    HRESULT (STDMETHODCALLTYPE *EndSearch)(
        IUpdateSearcher* This,
        ISearchJob *searchJob,
        ISearchResult **retval);

    HRESULT (STDMETHODCALLTYPE *EscapeString)(
        IUpdateSearcher* This,
        BSTR unescaped,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *QueryHistory)(
        IUpdateSearcher* This,
        LONG startIndex,
        LONG count,
        IUpdateHistoryEntryCollection **retval);

    HRESULT (STDMETHODCALLTYPE *Search)(
        IUpdateSearcher* This,
        BSTR criteria,
        ISearchResult **retval);

    HRESULT (STDMETHODCALLTYPE *get_Online)(
        IUpdateSearcher* This,
        VARIANT_BOOL *retval);

    HRESULT (STDMETHODCALLTYPE *put_Online)(
        IUpdateSearcher* This,
        VARIANT_BOOL value);

    HRESULT (STDMETHODCALLTYPE *GetTotalHistoryCount)(
        IUpdateSearcher* This,
        LONG *retval);

    HRESULT (STDMETHODCALLTYPE *get_ServiceID)(
        IUpdateSearcher* This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_ServiceID)(
        IUpdateSearcher* This,
        BSTR value);

    END_INTERFACE
} IUpdateSearcherVtbl;
interface IUpdateSearcher {
    CONST_VTBL IUpdateSearcherVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IUpdateSearcher_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUpdateSearcher_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUpdateSearcher_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IUpdateSearcher_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IUpdateSearcher_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IUpdateSearcher_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IUpdateSearcher_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IUpdateSearcher methods ***/
#define IUpdateSearcher_get_CanAutomaticallyUpgradeService(This,retval) (This)->lpVtbl->get_CanAutomaticallyUpgradeService(This,retval)
#define IUpdateSearcher_put_CanAutomaticallyUpgradeService(This,value) (This)->lpVtbl->put_CanAutomaticallyUpgradeService(This,value)
#define IUpdateSearcher_get_ClientApplicationID(This,retval) (This)->lpVtbl->get_ClientApplicationID(This,retval)
#define IUpdateSearcher_put_ClientApplicationID(This,value) (This)->lpVtbl->put_ClientApplicationID(This,value)
#define IUpdateSearcher_get_IncludePotentiallySupersededUpdates(This,retval) (This)->lpVtbl->get_IncludePotentiallySupersededUpdates(This,retval)
#define IUpdateSearcher_put_IncludePotentiallySupersededUpdates(This,value) (This)->lpVtbl->put_IncludePotentiallySupersededUpdates(This,value)
#define IUpdateSearcher_get_ServerSelection(This,retval) (This)->lpVtbl->get_ServerSelection(This,retval)
#define IUpdateSearcher_put_ServerSelection(This,value) (This)->lpVtbl->put_ServerSelection(This,value)
#define IUpdateSearcher_BeginSearch(This,criteria,onCompleted,state,retval) (This)->lpVtbl->BeginSearch(This,criteria,onCompleted,state,retval)
#define IUpdateSearcher_EndSearch(This,searchJob,retval) (This)->lpVtbl->EndSearch(This,searchJob,retval)
#define IUpdateSearcher_EscapeString(This,unescaped,retval) (This)->lpVtbl->EscapeString(This,unescaped,retval)
#define IUpdateSearcher_QueryHistory(This,startIndex,count,retval) (This)->lpVtbl->QueryHistory(This,startIndex,count,retval)
#define IUpdateSearcher_Search(This,criteria,retval) (This)->lpVtbl->Search(This,criteria,retval)
#define IUpdateSearcher_get_Online(This,retval) (This)->lpVtbl->get_Online(This,retval)
#define IUpdateSearcher_put_Online(This,value) (This)->lpVtbl->put_Online(This,value)
#define IUpdateSearcher_GetTotalHistoryCount(This,retval) (This)->lpVtbl->GetTotalHistoryCount(This,retval)
#define IUpdateSearcher_get_ServiceID(This,retval) (This)->lpVtbl->get_ServiceID(This,retval)
#define IUpdateSearcher_put_ServiceID(This,value) (This)->lpVtbl->put_ServiceID(This,value)
#endif

#endif

HRESULT STDMETHODCALLTYPE IUpdateSearcher_get_CanAutomaticallyUpgradeService_Proxy(
    IUpdateSearcher* This,
    VARIANT_BOOL *retval);
void __RPC_STUB IUpdateSearcher_get_CanAutomaticallyUpgradeService_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_put_CanAutomaticallyUpgradeService_Proxy(
    IUpdateSearcher* This,
    VARIANT_BOOL value);
void __RPC_STUB IUpdateSearcher_put_CanAutomaticallyUpgradeService_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_get_ClientApplicationID_Proxy(
    IUpdateSearcher* This,
    BSTR *retval);
void __RPC_STUB IUpdateSearcher_get_ClientApplicationID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_put_ClientApplicationID_Proxy(
    IUpdateSearcher* This,
    BSTR value);
void __RPC_STUB IUpdateSearcher_put_ClientApplicationID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_get_IncludePotentiallySupersededUpdates_Proxy(
    IUpdateSearcher* This,
    VARIANT_BOOL *retval);
void __RPC_STUB IUpdateSearcher_get_IncludePotentiallySupersededUpdates_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_put_IncludePotentiallySupersededUpdates_Proxy(
    IUpdateSearcher* This,
    VARIANT_BOOL value);
void __RPC_STUB IUpdateSearcher_put_IncludePotentiallySupersededUpdates_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_get_ServerSelection_Proxy(
    IUpdateSearcher* This,
    ServerSelection *retval);
void __RPC_STUB IUpdateSearcher_get_ServerSelection_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_put_ServerSelection_Proxy(
    IUpdateSearcher* This,
    ServerSelection value);
void __RPC_STUB IUpdateSearcher_put_ServerSelection_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_BeginSearch_Proxy(
    IUpdateSearcher* This,
    BSTR criteria,
    IUnknown *onCompleted,
    VARIANT state,
    ISearchJob **retval);
void __RPC_STUB IUpdateSearcher_BeginSearch_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_EndSearch_Proxy(
    IUpdateSearcher* This,
    ISearchJob *searchJob,
    ISearchResult **retval);
void __RPC_STUB IUpdateSearcher_EndSearch_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_EscapeString_Proxy(
    IUpdateSearcher* This,
    BSTR unescaped,
    BSTR *retval);
void __RPC_STUB IUpdateSearcher_EscapeString_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_QueryHistory_Proxy(
    IUpdateSearcher* This,
    LONG startIndex,
    LONG count,
    IUpdateHistoryEntryCollection **retval);
void __RPC_STUB IUpdateSearcher_QueryHistory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_Search_Proxy(
    IUpdateSearcher* This,
    BSTR criteria,
    ISearchResult **retval);
void __RPC_STUB IUpdateSearcher_Search_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_get_Online_Proxy(
    IUpdateSearcher* This,
    VARIANT_BOOL *retval);
void __RPC_STUB IUpdateSearcher_get_Online_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_put_Online_Proxy(
    IUpdateSearcher* This,
    VARIANT_BOOL value);
void __RPC_STUB IUpdateSearcher_put_Online_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_GetTotalHistoryCount_Proxy(
    IUpdateSearcher* This,
    LONG *retval);
void __RPC_STUB IUpdateSearcher_GetTotalHistoryCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_get_ServiceID_Proxy(
    IUpdateSearcher* This,
    BSTR *retval);
void __RPC_STUB IUpdateSearcher_get_ServiceID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateSearcher_put_ServiceID_Proxy(
    IUpdateSearcher* This,
    BSTR value);
void __RPC_STUB IUpdateSearcher_put_ServiceID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IUpdateSearcher_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUpdateDownloader interface
 */
#ifndef __IUpdateDownloader_INTERFACE_DEFINED__
#define __IUpdateDownloader_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUpdateDownloader, 0x68f1c6f9, 0x7ecc, 0x4666, 0xa4,0x64, 0x24,0x7f,0xe1,0x24,0x96,0xc3);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IUpdateDownloader : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_ClientApplicationID(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ClientApplicationID(
        BSTR value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsForced(
        VARIANT_BOOL *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_IsForced(
        VARIANT_BOOL value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Priority(
        DownloadPriority *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Priority(
        DownloadPriority value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Updates(
        IUpdateCollection **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Updates(
        IUpdateCollection *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeginDownload(
        IUnknown *onProgressChanged,
        IUnknown *onCompleted,
        VARIANT state,
        IDownloadJob **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE Download(
        IDownloadResult **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndDownload(
        IDownloadJob *value,
        IDownloadResult **retval) = 0;

};
#else
typedef struct IUpdateDownloaderVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IUpdateDownloader* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IUpdateDownloader* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IUpdateDownloader* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IUpdateDownloader* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IUpdateDownloader methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ClientApplicationID)(
        IUpdateDownloader* This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_ClientApplicationID)(
        IUpdateDownloader* This,
        BSTR value);

    HRESULT (STDMETHODCALLTYPE *get_IsForced)(
        IUpdateDownloader* This,
        VARIANT_BOOL *retval);

    HRESULT (STDMETHODCALLTYPE *put_IsForced)(
        IUpdateDownloader* This,
        VARIANT_BOOL value);

    HRESULT (STDMETHODCALLTYPE *get_Priority)(
        IUpdateDownloader* This,
        DownloadPriority *retval);

    HRESULT (STDMETHODCALLTYPE *put_Priority)(
        IUpdateDownloader* This,
        DownloadPriority value);

    HRESULT (STDMETHODCALLTYPE *get_Updates)(
        IUpdateDownloader* This,
        IUpdateCollection **retval);

    HRESULT (STDMETHODCALLTYPE *put_Updates)(
        IUpdateDownloader* This,
        IUpdateCollection *value);

    HRESULT (STDMETHODCALLTYPE *BeginDownload)(
        IUpdateDownloader* This,
        IUnknown *onProgressChanged,
        IUnknown *onCompleted,
        VARIANT state,
        IDownloadJob **retval);

    HRESULT (STDMETHODCALLTYPE *Download)(
        IUpdateDownloader* This,
        IDownloadResult **retval);

    HRESULT (STDMETHODCALLTYPE *EndDownload)(
        IUpdateDownloader* This,
        IDownloadJob *value,
        IDownloadResult **retval);

    END_INTERFACE
} IUpdateDownloaderVtbl;
interface IUpdateDownloader {
    CONST_VTBL IUpdateDownloaderVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IUpdateDownloader_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUpdateDownloader_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUpdateDownloader_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IUpdateDownloader_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IUpdateDownloader_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IUpdateDownloader_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IUpdateDownloader_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IUpdateDownloader methods ***/
#define IUpdateDownloader_get_ClientApplicationID(This,retval) (This)->lpVtbl->get_ClientApplicationID(This,retval)
#define IUpdateDownloader_put_ClientApplicationID(This,value) (This)->lpVtbl->put_ClientApplicationID(This,value)
#define IUpdateDownloader_get_IsForced(This,retval) (This)->lpVtbl->get_IsForced(This,retval)
#define IUpdateDownloader_put_IsForced(This,value) (This)->lpVtbl->put_IsForced(This,value)
#define IUpdateDownloader_get_Priority(This,retval) (This)->lpVtbl->get_Priority(This,retval)
#define IUpdateDownloader_put_Priority(This,value) (This)->lpVtbl->put_Priority(This,value)
#define IUpdateDownloader_get_Updates(This,retval) (This)->lpVtbl->get_Updates(This,retval)
#define IUpdateDownloader_put_Updates(This,value) (This)->lpVtbl->put_Updates(This,value)
#define IUpdateDownloader_BeginDownload(This,onProgressChanged,onCompleted,state,retval) (This)->lpVtbl->BeginDownload(This,onProgressChanged,onCompleted,state,retval)
#define IUpdateDownloader_Download(This,retval) (This)->lpVtbl->Download(This,retval)
#define IUpdateDownloader_EndDownload(This,value,retval) (This)->lpVtbl->EndDownload(This,value,retval)
#endif

#endif

HRESULT STDMETHODCALLTYPE IUpdateDownloader_get_ClientApplicationID_Proxy(
    IUpdateDownloader* This,
    BSTR *retval);
void __RPC_STUB IUpdateDownloader_get_ClientApplicationID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateDownloader_put_ClientApplicationID_Proxy(
    IUpdateDownloader* This,
    BSTR value);
void __RPC_STUB IUpdateDownloader_put_ClientApplicationID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateDownloader_get_IsForced_Proxy(
    IUpdateDownloader* This,
    VARIANT_BOOL *retval);
void __RPC_STUB IUpdateDownloader_get_IsForced_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateDownloader_put_IsForced_Proxy(
    IUpdateDownloader* This,
    VARIANT_BOOL value);
void __RPC_STUB IUpdateDownloader_put_IsForced_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateDownloader_get_Priority_Proxy(
    IUpdateDownloader* This,
    DownloadPriority *retval);
void __RPC_STUB IUpdateDownloader_get_Priority_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateDownloader_put_Priority_Proxy(
    IUpdateDownloader* This,
    DownloadPriority value);
void __RPC_STUB IUpdateDownloader_put_Priority_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateDownloader_get_Updates_Proxy(
    IUpdateDownloader* This,
    IUpdateCollection **retval);
void __RPC_STUB IUpdateDownloader_get_Updates_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateDownloader_put_Updates_Proxy(
    IUpdateDownloader* This,
    IUpdateCollection *value);
void __RPC_STUB IUpdateDownloader_put_Updates_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateDownloader_BeginDownload_Proxy(
    IUpdateDownloader* This,
    IUnknown *onProgressChanged,
    IUnknown *onCompleted,
    VARIANT state,
    IDownloadJob **retval);
void __RPC_STUB IUpdateDownloader_BeginDownload_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateDownloader_Download_Proxy(
    IUpdateDownloader* This,
    IDownloadResult **retval);
void __RPC_STUB IUpdateDownloader_Download_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateDownloader_EndDownload_Proxy(
    IUpdateDownloader* This,
    IDownloadJob *value,
    IDownloadResult **retval);
void __RPC_STUB IUpdateDownloader_EndDownload_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IUpdateDownloader_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IUpdateInstaller interface
 */
#ifndef __IUpdateInstaller_INTERFACE_DEFINED__
#define __IUpdateInstaller_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUpdateInstaller, 0x7b929c68, 0xccdc, 0x4226, 0x96,0xb1, 0x87,0x24,0x60,0x0b,0x54,0xc2);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IUpdateInstaller : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_ClientApplicationID(
        BSTR *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ClientApplicationID(
        BSTR value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsForced(
        VARIANT_BOOL *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_IsForced(
        VARIANT_BOOL value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ParentHwnd(
        HWND *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ParentHwnd(
        HWND value) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ParentWindow(
        IUnknown *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ParentWindow(
        IUnknown **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Updates(
        IUpdateCollection **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Updates(
        IUpdateCollection *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeginInstall(
        IUnknown *onProgressChanged,
        IUnknown *onCompleted,
        VARIANT state,
        IInstallationJob **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeginUninstall(
        IUnknown *onProgressChanged,
        IUnknown *onCompleted,
        VARIANT state,
        IInstallationJob **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndInstall(
        IInstallationJob *value,
        IInstallationResult **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndUninstall(
        IInstallationJob *value,
        IInstallationResult **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE Install(
        IInstallationResult **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE RunWizard(
        BSTR dialogTitle,
        IInstallationResult **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsBusy(
        VARIANT_BOOL *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE Uninstall(
        IInstallationResult **retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AllowSourcePrompts(
        VARIANT_BOOL *retval) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_AllowSourcePrompts(
        VARIANT_BOOL value) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RebootRequiredBeforeInstallation(
        VARIANT_BOOL *retval) = 0;

};
#else
typedef struct IUpdateInstallerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IUpdateInstaller* This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IUpdateInstaller* This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IUpdateInstaller* This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IUpdateInstaller* This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IUpdateInstaller methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ClientApplicationID)(
        IUpdateInstaller* This,
        BSTR *retval);

    HRESULT (STDMETHODCALLTYPE *put_ClientApplicationID)(
        IUpdateInstaller* This,
        BSTR value);

    HRESULT (STDMETHODCALLTYPE *get_IsForced)(
        IUpdateInstaller* This,
        VARIANT_BOOL *retval);

    HRESULT (STDMETHODCALLTYPE *put_IsForced)(
        IUpdateInstaller* This,
        VARIANT_BOOL value);

    HRESULT (STDMETHODCALLTYPE *get_ParentHwnd)(
        IUpdateInstaller* This,
        HWND *retval);

    HRESULT (STDMETHODCALLTYPE *put_ParentHwnd)(
        IUpdateInstaller* This,
        HWND value);

    HRESULT (STDMETHODCALLTYPE *put_ParentWindow)(
        IUpdateInstaller* This,
        IUnknown *value);

    HRESULT (STDMETHODCALLTYPE *get_ParentWindow)(
        IUpdateInstaller* This,
        IUnknown **retval);

    HRESULT (STDMETHODCALLTYPE *get_Updates)(
        IUpdateInstaller* This,
        IUpdateCollection **retval);

    HRESULT (STDMETHODCALLTYPE *put_Updates)(
        IUpdateInstaller* This,
        IUpdateCollection *value);

    HRESULT (STDMETHODCALLTYPE *BeginInstall)(
        IUpdateInstaller* This,
        IUnknown *onProgressChanged,
        IUnknown *onCompleted,
        VARIANT state,
        IInstallationJob **retval);

    HRESULT (STDMETHODCALLTYPE *BeginUninstall)(
        IUpdateInstaller* This,
        IUnknown *onProgressChanged,
        IUnknown *onCompleted,
        VARIANT state,
        IInstallationJob **retval);

    HRESULT (STDMETHODCALLTYPE *EndInstall)(
        IUpdateInstaller* This,
        IInstallationJob *value,
        IInstallationResult **retval);

    HRESULT (STDMETHODCALLTYPE *EndUninstall)(
        IUpdateInstaller* This,
        IInstallationJob *value,
        IInstallationResult **retval);

    HRESULT (STDMETHODCALLTYPE *Install)(
        IUpdateInstaller* This,
        IInstallationResult **retval);

    HRESULT (STDMETHODCALLTYPE *RunWizard)(
        IUpdateInstaller* This,
        BSTR dialogTitle,
        IInstallationResult **retval);

    HRESULT (STDMETHODCALLTYPE *get_IsBusy)(
        IUpdateInstaller* This,
        VARIANT_BOOL *retval);

    HRESULT (STDMETHODCALLTYPE *Uninstall)(
        IUpdateInstaller* This,
        IInstallationResult **retval);

    HRESULT (STDMETHODCALLTYPE *get_AllowSourcePrompts)(
        IUpdateInstaller* This,
        VARIANT_BOOL *retval);

    HRESULT (STDMETHODCALLTYPE *put_AllowSourcePrompts)(
        IUpdateInstaller* This,
        VARIANT_BOOL value);

    HRESULT (STDMETHODCALLTYPE *get_RebootRequiredBeforeInstallation)(
        IUpdateInstaller* This,
        VARIANT_BOOL *retval);

    END_INTERFACE
} IUpdateInstallerVtbl;
interface IUpdateInstaller {
    CONST_VTBL IUpdateInstallerVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IUpdateInstaller_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUpdateInstaller_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUpdateInstaller_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IUpdateInstaller_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IUpdateInstaller_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IUpdateInstaller_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IUpdateInstaller_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IUpdateInstaller methods ***/
#define IUpdateInstaller_get_ClientApplicationID(This,retval) (This)->lpVtbl->get_ClientApplicationID(This,retval)
#define IUpdateInstaller_put_ClientApplicationID(This,value) (This)->lpVtbl->put_ClientApplicationID(This,value)
#define IUpdateInstaller_get_IsForced(This,retval) (This)->lpVtbl->get_IsForced(This,retval)
#define IUpdateInstaller_put_IsForced(This,value) (This)->lpVtbl->put_IsForced(This,value)
#define IUpdateInstaller_get_ParentHwnd(This,retval) (This)->lpVtbl->get_ParentHwnd(This,retval)
#define IUpdateInstaller_put_ParentHwnd(This,value) (This)->lpVtbl->put_ParentHwnd(This,value)
#define IUpdateInstaller_put_ParentWindow(This,value) (This)->lpVtbl->put_ParentWindow(This,value)
#define IUpdateInstaller_get_ParentWindow(This,retval) (This)->lpVtbl->get_ParentWindow(This,retval)
#define IUpdateInstaller_get_Updates(This,retval) (This)->lpVtbl->get_Updates(This,retval)
#define IUpdateInstaller_put_Updates(This,value) (This)->lpVtbl->put_Updates(This,value)
#define IUpdateInstaller_BeginInstall(This,onProgressChanged,onCompleted,state,retval) (This)->lpVtbl->BeginInstall(This,onProgressChanged,onCompleted,state,retval)
#define IUpdateInstaller_BeginUninstall(This,onProgressChanged,onCompleted,state,retval) (This)->lpVtbl->BeginUninstall(This,onProgressChanged,onCompleted,state,retval)
#define IUpdateInstaller_EndInstall(This,value,retval) (This)->lpVtbl->EndInstall(This,value,retval)
#define IUpdateInstaller_EndUninstall(This,value,retval) (This)->lpVtbl->EndUninstall(This,value,retval)
#define IUpdateInstaller_Install(This,retval) (This)->lpVtbl->Install(This,retval)
#define IUpdateInstaller_RunWizard(This,dialogTitle,retval) (This)->lpVtbl->RunWizard(This,dialogTitle,retval)
#define IUpdateInstaller_get_IsBusy(This,retval) (This)->lpVtbl->get_IsBusy(This,retval)
#define IUpdateInstaller_Uninstall(This,retval) (This)->lpVtbl->Uninstall(This,retval)
#define IUpdateInstaller_get_AllowSourcePrompts(This,retval) (This)->lpVtbl->get_AllowSourcePrompts(This,retval)
#define IUpdateInstaller_put_AllowSourcePrompts(This,value) (This)->lpVtbl->put_AllowSourcePrompts(This,value)
#define IUpdateInstaller_get_RebootRequiredBeforeInstallation(This,retval) (This)->lpVtbl->get_RebootRequiredBeforeInstallation(This,retval)
#endif

#endif

HRESULT STDMETHODCALLTYPE IUpdateInstaller_get_ClientApplicationID_Proxy(
    IUpdateInstaller* This,
    BSTR *retval);
void __RPC_STUB IUpdateInstaller_get_ClientApplicationID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_put_ClientApplicationID_Proxy(
    IUpdateInstaller* This,
    BSTR value);
void __RPC_STUB IUpdateInstaller_put_ClientApplicationID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_get_IsForced_Proxy(
    IUpdateInstaller* This,
    VARIANT_BOOL *retval);
void __RPC_STUB IUpdateInstaller_get_IsForced_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_put_IsForced_Proxy(
    IUpdateInstaller* This,
    VARIANT_BOOL value);
void __RPC_STUB IUpdateInstaller_put_IsForced_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_get_ParentHwnd_Proxy(
    IUpdateInstaller* This,
    HWND *retval);
void __RPC_STUB IUpdateInstaller_get_ParentHwnd_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_put_ParentHwnd_Proxy(
    IUpdateInstaller* This,
    HWND value);
void __RPC_STUB IUpdateInstaller_put_ParentHwnd_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_put_ParentWindow_Proxy(
    IUpdateInstaller* This,
    IUnknown *value);
void __RPC_STUB IUpdateInstaller_put_ParentWindow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_get_ParentWindow_Proxy(
    IUpdateInstaller* This,
    IUnknown **retval);
void __RPC_STUB IUpdateInstaller_get_ParentWindow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_get_Updates_Proxy(
    IUpdateInstaller* This,
    IUpdateCollection **retval);
void __RPC_STUB IUpdateInstaller_get_Updates_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_put_Updates_Proxy(
    IUpdateInstaller* This,
    IUpdateCollection *value);
void __RPC_STUB IUpdateInstaller_put_Updates_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_BeginInstall_Proxy(
    IUpdateInstaller* This,
    IUnknown *onProgressChanged,
    IUnknown *onCompleted,
    VARIANT state,
    IInstallationJob **retval);
void __RPC_STUB IUpdateInstaller_BeginInstall_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_BeginUninstall_Proxy(
    IUpdateInstaller* This,
    IUnknown *onProgressChanged,
    IUnknown *onCompleted,
    VARIANT state,
    IInstallationJob **retval);
void __RPC_STUB IUpdateInstaller_BeginUninstall_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_EndInstall_Proxy(
    IUpdateInstaller* This,
    IInstallationJob *value,
    IInstallationResult **retval);
void __RPC_STUB IUpdateInstaller_EndInstall_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_EndUninstall_Proxy(
    IUpdateInstaller* This,
    IInstallationJob *value,
    IInstallationResult **retval);
void __RPC_STUB IUpdateInstaller_EndUninstall_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_Install_Proxy(
    IUpdateInstaller* This,
    IInstallationResult **retval);
void __RPC_STUB IUpdateInstaller_Install_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_RunWizard_Proxy(
    IUpdateInstaller* This,
    BSTR dialogTitle,
    IInstallationResult **retval);
void __RPC_STUB IUpdateInstaller_RunWizard_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_get_IsBusy_Proxy(
    IUpdateInstaller* This,
    VARIANT_BOOL *retval);
void __RPC_STUB IUpdateInstaller_get_IsBusy_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_Uninstall_Proxy(
    IUpdateInstaller* This,
    IInstallationResult **retval);
void __RPC_STUB IUpdateInstaller_Uninstall_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_get_AllowSourcePrompts_Proxy(
    IUpdateInstaller* This,
    VARIANT_BOOL *retval);
void __RPC_STUB IUpdateInstaller_get_AllowSourcePrompts_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_put_AllowSourcePrompts_Proxy(
    IUpdateInstaller* This,
    VARIANT_BOOL value);
void __RPC_STUB IUpdateInstaller_put_AllowSourcePrompts_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IUpdateInstaller_get_RebootRequiredBeforeInstallation_Proxy(
    IUpdateInstaller* This,
    VARIANT_BOOL *retval);
void __RPC_STUB IUpdateInstaller_get_RebootRequiredBeforeInstallation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IUpdateInstaller_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 *);
ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __WIDL_WUAPI_H */
