summaryrefslogblamecommitdiffstats
path: root/private/dcomidl/remact.idl
blob: 66467737d4b92cbaa755f9ee89440e317157f9d9 (plain) (tree)
































































                                                                               
//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1996.
//
//  File:      remact.idl
//
//  Synopsis:  Activation interface implemented by object exporters.
//
//  This is the interface that needs to be supported by hosts that support
//  remote connection requests and export objects. Only one instance of this
//  interface can be exported by the host.
//
//  Note that this interface is tied closely to IObjectExporter because
//  RemoteActivation includes information otherwise retrieved from ResolveOXID.
//
//--------------------------------------------------------------------------
[
    uuid(4d9f4ab8-7d1c-11cf-861e-0020af6e7c57),
    pointer_default(unique)
]

interface IActivation
{
    import "obase.idl";

    const unsigned long MODE_GET_CLASS_OBJECT = 0xffffffff;

    //
    // RemoteActivation is called to request interface pointer data for one or
    // more interface IIDs from an object server servicing the given CLSID.
    // This could result in the launching of a new instance of the server, or
    // connection to an already running instance.
    //
    // Note that the ResolveOxid parameters are included as well, to prevent
    // the necessity for a second RPC during a remote activation.  However,
    // the client receives the OXID as an out param since it is not known
    // before connecting to the server.
    //

    error_status_t RemoteActivation(
        [in] handle_t                               hRpc,
        [in] ORPCTHIS                              *ORPCthis,
        [out] ORPCTHAT                             *ORPCthat,
        [in] const GUID                            *Clsid,
        [in, string, unique] WCHAR                 *pwszObjectName,
        [in, unique] MInterfacePointer             *pObjectStorage,
        [in] DWORD                                  ClientImpLevel,
        [in] DWORD                                  Mode,
        [in] DWORD                                  Interfaces,
        [in,unique,size_is(Interfaces)] IID        *pIIDs,
        [in] unsigned short                         cRequestedProtseqs,
        [in, size_is(cRequestedProtseqs)]
               unsigned short                       aRequestedProtseqs[],
        [out] OXID                                 *pOxid,
        [out] DUALSTRINGARRAY                     **ppdsaOxidBindings,
        [out] IPID                                 *pipidRemUnknown,
        [out] DWORD                                *pAuthnHint,
        [out] COMVERSION                           *pServerVersion,
        [out] HRESULT                              *phr,
        [out,size_is(Interfaces)] MInterfacePointer **ppInterfaceData,
        [out,size_is(Interfaces)] HRESULT          *pResults
        );
}