//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1996.
//
//  File:      forward.idl
//
//  Synopsis: DCOM95 RPCSS interface for forwarding remote activation calls.
//
//  Note that this interface is tied closely to IOxidResolver because
//  RemoteActivation includes information otherwise retrieved from ResolveOXID.
//
//--------------------------------------------------------------------------



//
// ForwardRemoteActivation is called to forwqard a remote activation request
// to a remote SCM.
//
// 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.
//




const unsigned long MODE_GET_CLASS_OBJECT = 0xffffffff;

[
    uuid(260613d0-1655-11d0-af92-00aa00b50686),
    version(1.0),
    pointer_default(unique)
#ifndef RAW
  ,object
#endif
]

interface IRemoteActivator
#ifndef RAW
        : IUnknown
#endif
{
#ifndef DO_NO_IMPORTS
    import "iface.idl";
	import "obase.idl";
	import "unknwn.idl";
#endif // DO_NO_IMPORTS

    #include "comhndl.h"

    COM_DEFINES(Remact)

#ifdef RAW
    error_status_t ActivateOnRemoteMachine(
#else
    HRESULT ActivateOnRemoteMachine(
#endif
		COM_HANDLE
		[in] const GUID                            *Clsid,
        [in, string, unique] WCHAR                 *pwszServerName,
        [in, string, unique] WCHAR                 *pwszPathForServer,
		[in, unique] COAUTHINFO					   *pAuthInfo,
        [in, unique] MInterfacePointer             *pObjectStorage,
        [in] DWORD                                  ClientImpLevel,
        [in] DWORD                                  Mode,
        [in] DWORD                                  Interfaces,
        [in,unique,size_is(Interfaces)] IID        *pIIDs,
		[out] USHORT							   *pProtseqId,
        [out] OXID                                 *pOxid,
        [out] DUALSTRINGARRAY                     **ppdsaOxidBindings,
        [out] IPID                                 *pipidRemUnknown,
        [out] DWORD                                *pAuthnHint,
        [out] HRESULT                              *phr,
        [out,size_is(Interfaces)] MInterfacePointer **ppInterfaceData,
        [out,size_is(Interfaces)] HRESULT          *pResults
        );
}