193 lines
4.8 KiB
Plaintext
193 lines
4.8 KiB
Plaintext
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
// Copyright (C) Microsoft Corporation, 1998.
|
||
|
//
|
||
|
// File:
|
||
|
// UniSrgt.idl
|
||
|
//
|
||
|
// Contents:
|
||
|
// Definition of (currently) private unified surrogate interfaces
|
||
|
//
|
||
|
// History:
|
||
|
// WilfR 03-31-98 Created
|
||
|
//
|
||
|
//--------------------------------------------------------------------------
|
||
|
|
||
|
cpp_quote("//+-----------------------------------------------------------------")
|
||
|
cpp_quote("//")
|
||
|
cpp_quote("// Microsoft Windows")
|
||
|
cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1998.")
|
||
|
cpp_quote("//")
|
||
|
cpp_quote("//------------------------------------------------------------------")
|
||
|
|
||
|
#ifndef DO_NO_IMPORTS
|
||
|
import "wtypes.idl";
|
||
|
import "objidl.idl";
|
||
|
import "unknwn.idl";
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/****************************************************************************
|
||
|
* Surrogate Types *
|
||
|
****************************************************************************/
|
||
|
|
||
|
//
|
||
|
// ApplicationType
|
||
|
//
|
||
|
typedef enum tagApplicationType
|
||
|
{
|
||
|
ServerApplication,
|
||
|
LibraryApplication
|
||
|
} ApplicationType;
|
||
|
|
||
|
//
|
||
|
// ShutdownType
|
||
|
//
|
||
|
typedef enum tagShutdownType
|
||
|
{
|
||
|
IdleShutdown,
|
||
|
ForcedShutdown
|
||
|
} ShutdownType;
|
||
|
|
||
|
|
||
|
/****************************************************************************
|
||
|
* Surrogate Services Interfaces *
|
||
|
****************************************************************************/
|
||
|
|
||
|
//
|
||
|
// IProcessLock
|
||
|
//
|
||
|
[
|
||
|
object,
|
||
|
local,
|
||
|
uuid(000001d5-0000-0000-C000-000000000046),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IProcessLock : IUnknown
|
||
|
{
|
||
|
ULONG AddRefOnProcess();
|
||
|
ULONG ReleaseRefOnProcess();
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// ISurrogateService
|
||
|
//
|
||
|
[
|
||
|
object,
|
||
|
local,
|
||
|
uuid(000001d4-0000-0000-C000-000000000046),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface ISurrogateService : IUnknown
|
||
|
{
|
||
|
HRESULT Init( [in] REFGUID rguidProcessID,
|
||
|
[in] IProcessLock* pProcessLock,
|
||
|
[out] BOOL* pfApplicationAware );
|
||
|
HRESULT ApplicationLaunch( [in] REFGUID rguidApplID,
|
||
|
[in] ApplicationType appType );
|
||
|
HRESULT ApplicationFree( [in] REFGUID rguidApplID );
|
||
|
HRESULT CatalogRefresh( [in] ULONG ulReserved );
|
||
|
HRESULT ProcessShutdown( [in] ShutdownType shutdownType );
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// ISurrogateService2
|
||
|
//
|
||
|
[
|
||
|
object,
|
||
|
local,
|
||
|
uuid(000001da-0000-0000-C000-000000000046),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface ISurrogateService2 : ISurrogateService
|
||
|
{
|
||
|
HRESULT PauseProcess();
|
||
|
HRESULT ResumeProcess();
|
||
|
}
|
||
|
|
||
|
|
||
|
/****************************************************************************
|
||
|
* OLE32 Interface *
|
||
|
****************************************************************************/
|
||
|
|
||
|
//
|
||
|
// IPAControl
|
||
|
//
|
||
|
[
|
||
|
object,
|
||
|
local,
|
||
|
uuid(000001d2-0000-0000-C000-000000000046),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IPAControl : IUnknown
|
||
|
{
|
||
|
ULONG AddRefOnProcess();
|
||
|
ULONG ReleaseRefOnProcess();
|
||
|
void PendingInit();
|
||
|
void ServicesReady();
|
||
|
HRESULT SuspendApplication( [in] REFGUID rguidApplID );
|
||
|
HRESULT PendingApplication( [in] REFGUID rguidApplID );
|
||
|
HRESULT ResumeApplication( [in] REFGUID rguidApplID );
|
||
|
HRESULT SuspendAll();
|
||
|
HRESULT ResumeAll();
|
||
|
HRESULT ForcedShutdown();
|
||
|
HRESULT SetIdleTimeoutToZero();
|
||
|
}
|
||
|
|
||
|
|
||
|
/****************************************************************************
|
||
|
* COMSVCS Interfaces *
|
||
|
****************************************************************************/
|
||
|
|
||
|
//
|
||
|
// IServicesSink
|
||
|
//
|
||
|
[
|
||
|
object,
|
||
|
local,
|
||
|
uuid(000001d3-0000-0000-C000-000000000046),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
interface IServicesSink : IUnknown
|
||
|
{
|
||
|
void ApplicationLaunch( [in] REFGUID rguidApplID,
|
||
|
[in] ApplicationType appType );
|
||
|
void ApplicationFree( [in] REFGUID rguidApplID );
|
||
|
void ProcessFree();
|
||
|
|
||
|
HRESULT PauseApplication();
|
||
|
HRESULT ResumeApplication();
|
||
|
}
|
||
|
|
||
|
|
||
|
/****************************************************************************
|
||
|
* Surrogate APIs *
|
||
|
****************************************************************************/
|
||
|
|
||
|
//
|
||
|
// CoRegisterSurrogateEx
|
||
|
//
|
||
|
// Note: For now we re-use the ISurrogate interface -- The LoadDllServer
|
||
|
// method will never be called.
|
||
|
//
|
||
|
cpp_quote ("STDAPI CoRegisterSurrogateEx (REFGUID rguidProcessID, ")
|
||
|
cpp_quote (" ISurrogate* pSrgt); ")
|
||
|
|
||
|
//
|
||
|
// CoLoadServices
|
||
|
//
|
||
|
cpp_quote ("STDAPI CoLoadServices (REFGUID rguidProcessID, ")
|
||
|
cpp_quote (" IPAControl* pPAControl, ")
|
||
|
cpp_quote (" REFIID riid, void **ppv ); ")
|
||
|
|
||
|
//
|
||
|
// CoLoadServices Function typedef
|
||
|
//
|
||
|
cpp_quote ("typedef HRESULT (STDAPICALLTYPE *FN_CoLoadServices) ")
|
||
|
cpp_quote (" (REFGUID rguidProcessID, ")
|
||
|
cpp_quote (" IPAControl* pPAControl, ")
|
||
|
cpp_quote (" REFIID riid, void **ppv ); ")
|