270 lines
7.3 KiB
Plaintext
270 lines
7.3 KiB
Plaintext
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1998.
|
|
//
|
|
// File:
|
|
// activate.idl
|
|
//
|
|
// Contents:
|
|
// Definition of (currently) private COM system activation interface.
|
|
//
|
|
// History:
|
|
// VinayKr 01-16-98 Created(actprops)
|
|
// SatishT 01-23-98 Added property interfaces
|
|
// SatishT 02-03-98 Separated
|
|
// vinaykr 02-20-98 Created privact,
|
|
// distilled actprops/merged
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#ifndef DO_NO_IMPORTS
|
|
import "obase.idl";
|
|
import "wtypes.idl";
|
|
import "objidl.idl";
|
|
#ifdef RAW
|
|
import "iface.idl";
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#ifndef RAW
|
|
import "activate.idl";
|
|
typedef struct _PRIV_SCM_INFO
|
|
{
|
|
long Apartment;
|
|
[string] WCHAR *pwszWinstaDesktop;
|
|
ULONG64 ProcessSignature;
|
|
[size_is(EnvBlockLength)]
|
|
WCHAR * pEnvBlock;
|
|
DWORD EnvBlockLength;
|
|
} PRIV_SCM_INFO;
|
|
|
|
/** This is for output activation properties **/
|
|
/** Must be identical to PRIV_RESOLVER_INFO in actprops.idl **/
|
|
typedef struct _PRIV_RESOLVER_INFO
|
|
{
|
|
OXID OxidServer;
|
|
DUALSTRINGARRAY * pServerORBindings;
|
|
OXID_INFO OxidInfo;
|
|
MID LocalMidOfRemote;
|
|
DWORD DllServerModel;
|
|
[string] WCHAR * pwszDllServer;
|
|
BOOL FoundInROT;
|
|
} PRIV_RESOLVER_INFO;
|
|
|
|
typedef struct _REMOTE_REQUEST_SCM_INFO
|
|
{
|
|
DWORD ClientImpLevel;
|
|
unsigned short cRequestedProtseqs;
|
|
[size_is(cRequestedProtseqs)]
|
|
unsigned short *pRequestedProtseqs;
|
|
} REMOTE_REQUEST_SCM_INFO;
|
|
|
|
typedef struct _REMOTE_REPLY_SCM_INFO
|
|
{
|
|
OXID Oxid;
|
|
DUALSTRINGARRAY *pdsaOxidBindings;
|
|
IPID ipidRemUnknown;
|
|
DWORD authnHint;
|
|
COMVERSION serverVersion;
|
|
} REMOTE_REPLY_SCM_INFO;
|
|
|
|
/**
|
|
Interfaces for private info exchange between OLE32 and SCM
|
|
**/
|
|
[
|
|
object,
|
|
local,
|
|
uuid(000001AA-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface IScmRequestInfo : IUnknown
|
|
{
|
|
HRESULT SetScmInfo([in] PRIV_SCM_INFO *pScmInfo);
|
|
HRESULT GetScmInfo([out] PRIV_SCM_INFO **ppScmInfo);
|
|
HRESULT SetRemoteRequestInfo([in] REMOTE_REQUEST_SCM_INFO *pRemoteReq);
|
|
HRESULT GetRemoteRequestInfo([out] REMOTE_REQUEST_SCM_INFO **ppRemoteReq);
|
|
}
|
|
|
|
[
|
|
object,
|
|
local,
|
|
uuid(000001B6-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface IScmReplyInfo : IUnknown
|
|
{
|
|
HRESULT SetResolverInfo([in] PRIV_RESOLVER_INFO *pResolverInfo);
|
|
HRESULT GetResolverInfo([out] PRIV_RESOLVER_INFO **ppResolverInfo);
|
|
HRESULT SetRemoteReplyInfo([in] REMOTE_REPLY_SCM_INFO *pRemoteReply);
|
|
HRESULT GetRemoteReplyInfo([out] REMOTE_REPLY_SCM_INFO **ppRemoteReply);
|
|
}
|
|
|
|
[
|
|
object,
|
|
uuid(000001AB-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface IInstantiationInfo : IUnknown
|
|
{
|
|
}
|
|
|
|
|
|
|
|
/** This is purely a backdoor for *setting* legacy properties easily **/
|
|
[
|
|
object,
|
|
local,
|
|
uuid(000001AC-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface ILegacyInfo : IUnknown
|
|
{
|
|
HRESULT SetCOSERVERINFO([in] COSERVERINFO *pServerInfo);
|
|
HRESULT GetCOSERVERINFO([out] COSERVERINFO **ppServerInfo);
|
|
}
|
|
|
|
/**
|
|
Interface for defining GetPersistentInstance parameters
|
|
**/
|
|
[
|
|
object,
|
|
local,
|
|
uuid(000001AD-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface IInstanceInfo : IUnknown
|
|
{
|
|
HRESULT SetStorage([in, unique] IStorage *pStg);
|
|
HRESULT GetStorage([out] IStorage **ppStg);
|
|
HRESULT SetStorageIFD([in] MInterfacePointer *pStgIFD);
|
|
HRESULT GetStorageIFD([out] MInterfacePointer **ppStgIFD);
|
|
HRESULT SetFile([in, string, unique] WCHAR *pwszFileName, [in] DWORD dwMode);
|
|
HRESULT GetFile([out, string] WCHAR **ppwszFileName, [out] DWORD *pdwMode);
|
|
|
|
// Currently used by SCM in Remote Activation Requests
|
|
HRESULT SetIfdROT(MInterfacePointer *pIfdROT);
|
|
HRESULT GetIfdROT(MInterfacePointer **ppIfdROT);
|
|
|
|
}
|
|
|
|
[
|
|
object,
|
|
local,
|
|
uuid(000001AE-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface IPrivActivationContextInfo : IActivationContextInfo
|
|
{
|
|
HRESULT SetClientContext([in] IContext *pClientContext);
|
|
HRESULT SetPrototypeContext([in] IContext *pContext);
|
|
HRESULT PrototypeExists([out] BOOL *pBExists);
|
|
}
|
|
|
|
/**
|
|
Private act props interfaces
|
|
**/
|
|
[
|
|
object,
|
|
local,
|
|
uuid(000001AF-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface IActivationProperties:IMarshal2
|
|
{
|
|
HRESULT SetDestCtx([in] DWORD dwDestCtx);
|
|
HRESULT SetMarshalFlags([in] DWORD dwMarshalFlags);
|
|
HRESULT SetLocalBlob([in] void *blob);
|
|
HRESULT GetLocalBlob([out] void **blob);
|
|
}
|
|
|
|
[
|
|
object,
|
|
local,
|
|
uuid(000001B0-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface IPrivActivationPropertiesOut:IActivationPropertiesOut
|
|
{
|
|
HRESULT SetObjectInterfaces([in] DWORD cIfs,
|
|
[in] IID *pIID,
|
|
[in] IUnknown *pUnk);
|
|
|
|
HRESULT SetMarshalledResults([in] DWORD cIfs,
|
|
[in] IID *pIID,
|
|
[in] HRESULT *pHr,
|
|
[in] MInterfacePointer **pIntfData);
|
|
|
|
HRESULT GetMarshalledResults([out] DWORD *pcIfs,
|
|
[out] IID **pIID,
|
|
[out] HRESULT **pHr,
|
|
[out] MInterfacePointer ***pIntfData);
|
|
|
|
}
|
|
|
|
[
|
|
object,
|
|
local,
|
|
uuid(000001B5-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface IPrivActivationPropertiesIn:IActivationPropertiesIn
|
|
{
|
|
HRESULT PrivGetReturnActivationProperties([out] IPrivActivationPropertiesOut **ppActOut);
|
|
HRESULT GetCOMVersion([out] COMVERSION *pVersion);
|
|
HRESULT GetClsid([out] CLSID *pClsid);
|
|
HRESULT GetClientToken([out] HANDLE *pHandle);
|
|
//Returns maximum distance travelled
|
|
HRESULT GetDestCtx([out] DWORD *pdwDestCtx);
|
|
};
|
|
|
|
typedef enum {
|
|
MARSHOPT_NO_OID_REGISTER = 1,
|
|
} MARSHAL_OPTIONS;
|
|
|
|
|
|
//
|
|
// Optional interface used by COM+ infrastructure components that
|
|
// want to influence how they are marshalled server-side.
|
|
//
|
|
[
|
|
uuid(4c1e39e1-e3e3-4296-aa86-ec938d896e92),
|
|
local,
|
|
object
|
|
]
|
|
interface IMarshalOptions : IUnknown
|
|
{
|
|
void GetStubMarshalFlags([out]DWORD* pdwFlags); // see MARSHAL_OPTIONS above
|
|
};
|
|
|
|
|
|
#else //RAW
|
|
|
|
//IDSCM Replacement
|
|
[
|
|
uuid(00000136-0000-0000-C000-000000000046),
|
|
pointer_default(unique)
|
|
]
|
|
interface ISCMActivator // <==> ISCMLocalActivator
|
|
{
|
|
#include "comhndl.h"
|
|
COM_DEFINES(ISCMActivator)
|
|
|
|
HRESULT SCMActivatorGetClassObject(
|
|
COM_HANDLE
|
|
[in,unique] MInterfacePointer *pActProperties,
|
|
[out] MInterfacePointer **ppActProperties
|
|
);
|
|
|
|
HRESULT SCMActivatorCreateInstance(
|
|
COM_HANDLE
|
|
[in,unique] MInterfacePointer *pUnkOuter,
|
|
[in,unique] MInterfacePointer *pActProperties,
|
|
[out] MInterfacePointer **ppActProperties
|
|
);
|
|
}
|
|
|
|
|
|
#endif //RAW
|