windows-nt/Source/XPSP1/NT/com/ole32/idl/private/privact.idl
2020-09-26 16:20:57 +08:00

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