//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1992 - 1993.
//
//  File:       scm.idl
//
//  Contents:   Definition of private RPC interface between compobj.dll
//              and the service controller.
//
//  History:    21-Apr-93 Ricksa    Created
//
//--------------------------------------------------------------------------

#ifndef DO_NO_IMPORTS
#ifndef RAW
    import "activate.idl";
#endif
    import "iface.idl";
    import "obase.idl";
    import "objidl.idl";
#endif

[ uuid(00000132-0000-0000-C000-000000000046),
  version(0.0),
  pointer_default(unique)
#ifndef RAW
  , object
#endif
]
#ifndef RAW
interface ILocalSystemActivator : ISystemActivator
#else
interface ILocalSystemActivator
#endif
{
    #include "comhndl.h"

    COM_DEFINES(ILocalSystemActivator)

#ifdef RAW
    typedef error_status_t  STATUSTYPE;
#else
    typedef DWORD           STATUSTYPE;
#endif
    const DWORD CREATE_EMBEDDING_SERVER_HANDLER=0x01;
    const DWORD DISABLE_EMBEDDING_SERVER_HANDLER=0x02;

#ifdef RAW
    HRESULT LocalGetClassObject(
                    COM_HANDLE
                    [in,unique]  MInterfacePointer *pActProperties,
                    [out] MInterfacePointer **ppActProperties
                    );

    HRESULT LocalCreateInstance(
                    COM_HANDLE
                    [in,unique]  MInterfacePointer *pUnkOuter,
                    [in,unique]  MInterfacePointer *pActProperties,
                    [out] MInterfacePointer **ppActProperties
                    );
#endif

    HRESULT ObjectServerLoadDll(
        COM_HANDLE
        [in]  GUID *                            pclsid,
        [out] STATUSTYPE *                      pStatus
        );

}



#ifndef RAW
//IDSCM Replacement
[
    object,
    uuid(00000136-0000-0000-C000-000000000046),
    pointer_default(unique)
]
interface ISCMLocalActivator : IUnknown
{
    HRESULT GetClassObject(
                    [in,unique]  IActivationPropertiesIn *pActProperties,
                    [out] IActivationPropertiesOut **ppActProperties
                    );

    HRESULT CreateInstance(
                    [in,unique]  IUnknown *pUnkOuter,
                    [in,unique]  IActivationPropertiesIn *pActProperties,
                    [out] IActivationPropertiesOut **ppActProperties
                    );
}
#endif
