/*** Autogenerated by WIDL 0.1 from servprov.idl - Do not edit ***/
#include <rpc.h>
#include <rpcndr.h>

#ifndef __WIDL_SERVPROV_H
#define __WIDL_SERVPROV_H
#ifdef __cplusplus
extern "C" {
#endif
#include "objidl.h"
typedef struct IServiceProvider IServiceProvider;
typedef IServiceProvider *LPSERVICEPROVIDER;

/*****************************************************************************
 * IServiceProvider interface
 */
#ifndef __IServiceProvider_INTERFACE_DEFINED__
#define __IServiceProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IServiceProvider, 0x6d5140c1, 0x7436, 0x11ce, 0x80,0x34, 0x00,0xaa,0x00,0x60,0x09,0xfa);
#if defined(__cplusplus) && !defined(CINTERFACE)
struct IServiceProvider: IUnknown {

    virtual HRESULT CALLBACK QueryService(
        REFGUID guidService,
        REFIID riid,
        void** ppvObject) = 0;

} ICOM_COM_INTERFACE_ATTRIBUTE;
#else
typedef struct IServiceProviderVtbl IServiceProviderVtbl;
struct IServiceProvider {
    const IServiceProviderVtbl* lpVtbl;
};
struct IServiceProviderVtbl {
    ICOM_MSVTABLE_COMPAT_FIELDS

    /*** IUnknown methods ***/
    HRESULT (CALLBACK *QueryInterface)(
        IServiceProvider* This,
        REFIID riid,
        void** ppvObject);

    ULONG (CALLBACK *AddRef)(
        IServiceProvider* This);

    ULONG (CALLBACK *Release)(
        IServiceProvider* This);

    /*** IServiceProvider methods ***/
    HRESULT (CALLBACK *QueryService)(
        IServiceProvider* This,
        REFGUID guidService,
        REFIID riid,
        void** ppvObject);

};

#define IServiceProvider_IMETHODS \
    IUnknown_IMETHODS \
    ICOM_METHOD3 (HRESULT,QueryService,REFGUID,guidService,REFIID,riid,void**,ppvObject)

/*** IUnknown methods ***/
#define IServiceProvider_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IServiceProvider_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IServiceProvider_Release(p) (p)->lpVtbl->Release(p)
/*** IServiceProvider methods ***/
#define IServiceProvider_QueryService(p,a,b,c) (p)->lpVtbl->QueryService(p,a,b,c)

#endif

HRESULT CALLBACK IServiceProvider_RemoteQueryService_Proxy(
    IServiceProvider* This,
    REFGUID guidService,
    REFIID riid,
    IUnknown** ppvObject);
void __RPC_STUB IServiceProvider_RemoteQueryService_Stub(
    struct IRpcStubBuffer* This,
    struct IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IServiceProvider_QueryService_Proxy(
    IServiceProvider* This,
    REFGUID guidService,
    REFIID riid,
    void** ppvObject);
HRESULT __RPC_STUB IServiceProvider_QueryService_Stub(
    IServiceProvider* This,
    REFGUID guidService,
    REFIID riid,
    IUnknown** ppvObject);

#endif  /* __IServiceProvider_INTERFACE_DEFINED__ */

#ifdef __cplusplus
}
#endif
#endif /* __WIDL_SERVPROV_H */
