//+---------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1995-1997.
//
//  File:       servprov.idl
//
//  Contents:   IServiceProvider description
//
//  Classes:
//
//  Functions:
//
//  History:    02-15-95        JoePe Created
//
//----------------------------------------------------------------------------

cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// ServProv.h")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// (C) Copyright 1995 - 1998 Microsoft Corporation.  All Rights Reserved.")
cpp_quote("//")
cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
cpp_quote("// PARTICULAR PURPOSE.")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("")
cpp_quote("#pragma comment(lib,\"uuid.lib\")")
cpp_quote("")
cpp_quote("//---------------------------------------------------------------------------=")
cpp_quote("// IServiceProvider Interfaces.")
cpp_quote("")

import "objidl.idl";
//import "oleidl.idl";

interface IServiceProvider;

//+---------------------------------------------------------------------------
//
//  Copyright (C) Microsoft Corporation, 1995-1997.
//
//  Contents:  IServiceProvoder interface definition
//
//----------------------------------------------------------------------------

cpp_quote("#ifndef _LPSERVICEPROVIDER_DEFINED")
cpp_quote("#define _LPSERVICEPROVIDER_DEFINED")

[
        object,
        uuid(6d5140c1-7436-11ce-8034-00aa006009fa),
        pointer_default(unique)
]


interface IServiceProvider : IUnknown
{
    typedef [unique] IServiceProvider *LPSERVICEPROVIDER;

    [local]
    HRESULT QueryService(
        [in] REFGUID guidService,
        [in] REFIID riid,
        [out] void ** ppvObject);

    [call_as(QueryService)]
    HRESULT RemoteQueryService(
        [in] REFGUID guidService,
        [in] REFIID riid,
        [out, iid_is(riid)] IUnknown ** ppvObject);
}

cpp_quote("#endif")
