116 lines
4.2 KiB
Plaintext
116 lines
4.2 KiB
Plaintext
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
// Copyright (C) Microsoft Corporation, 1992 - 1995.
|
||
|
//
|
||
|
// File: objex.idl
|
||
|
//
|
||
|
// Synopsis: Interface implemented by object exporters.
|
||
|
//
|
||
|
// This is the interface that needs to be supported by hosts that export
|
||
|
// objects. Only one instance of this interface can be exported by the host.
|
||
|
//
|
||
|
// An object exporter needs to be able to:
|
||
|
// 1. return string bindings that can be used to talk to objects it
|
||
|
// has exported
|
||
|
// 2. receive pings from object importers to keep the objects alive
|
||
|
//
|
||
|
// Note that changes to this interface can effect IActivation because the
|
||
|
// RemoteActivation method of IActivation includes information otherwise
|
||
|
// retrieved from ResolveOxid.
|
||
|
//
|
||
|
//--------------------------------------------------------------------------
|
||
|
[
|
||
|
uuid(99fcfec4-5260-101b-bbcb-00aa0021347a),
|
||
|
pointer_default(unique)
|
||
|
]
|
||
|
|
||
|
interface IObjectExporter
|
||
|
{
|
||
|
import "obase.idl";
|
||
|
|
||
|
// Method to get the protocol sequences, string bindings and machine id
|
||
|
// for an object server given its OXID.
|
||
|
|
||
|
[idempotent] error_status_t ResolveOxid
|
||
|
(
|
||
|
[in] handle_t hRpc,
|
||
|
[in] OXID *pOxid,
|
||
|
[in] unsigned short cRequestedProtseqs,
|
||
|
[in, ref, size_is(cRequestedProtseqs)]
|
||
|
unsigned short arRequestedProtseqs[],
|
||
|
[out, ref] DUALSTRINGARRAY **ppdsaOxidBindings,
|
||
|
[out, ref] IPID *pipidRemUnknown,
|
||
|
[out, ref] DWORD *pAuthnHint
|
||
|
);
|
||
|
|
||
|
// Simple ping is used to ping a Set. Client machines use this to inform
|
||
|
// the object exporter that it is still using the members of the set.
|
||
|
// Returns S_TRUE if the SetId is known by the object exporter,
|
||
|
// S_FALSE if not.
|
||
|
|
||
|
[idempotent] error_status_t SimplePing
|
||
|
(
|
||
|
[in] handle_t hRpc,
|
||
|
[in] SETID *pSetId // Must not be zero
|
||
|
);
|
||
|
|
||
|
// Complex ping is used to create sets of OIDs to ping. The whole set
|
||
|
// can subsequently be pinged using SimplePing, thus reducing network
|
||
|
// traffic.
|
||
|
|
||
|
[idempotent] error_status_t ComplexPing
|
||
|
(
|
||
|
[in] handle_t hRpc,
|
||
|
[in, out] SETID *pSetId, // In of 0 on first call for new set.
|
||
|
[in] unsigned short SequenceNum,
|
||
|
[in] unsigned short cAddToSet,
|
||
|
[in] unsigned short cDelFromSet,
|
||
|
[in, unique, size_is(cAddToSet)] OID AddToSet[], // add these OIDs to the set
|
||
|
[in, unique, size_is(cDelFromSet)] OID DelFromSet[], // remove these OIDs from the set
|
||
|
[out] unsigned short *pPingBackoffFactor // 2^factor = multipler
|
||
|
);
|
||
|
|
||
|
// In some cases the client maybe unsure that a particular binding will
|
||
|
// reach the server. (For example, when the oxid bindings have more then
|
||
|
// one TCP/IP binding) This call can be used to validate the binding
|
||
|
// from the client.
|
||
|
|
||
|
[idempotent] error_status_t ServerAlive
|
||
|
(
|
||
|
[in] handle_t hRpc
|
||
|
);
|
||
|
|
||
|
// Method to get the protocol sequences, string bindings, RemoteUnknown IPID,
|
||
|
// and COM version for an object server given its OXID. Supported by DCOM
|
||
|
// version 5.2 and above.
|
||
|
|
||
|
[idempotent] error_status_t ResolveOxid2
|
||
|
(
|
||
|
[in] handle_t hRpc,
|
||
|
[in] OXID *pOxid,
|
||
|
[in] unsigned short cRequestedProtseqs,
|
||
|
[in, ref, size_is(cRequestedProtseqs)]
|
||
|
unsigned short arRequestedProtseqs[],
|
||
|
[out, ref] DUALSTRINGARRAY **ppdsaOxidBindings,
|
||
|
[out, ref] IPID *pipidRemUnknown,
|
||
|
[out, ref] DWORD *pAuthnHint,
|
||
|
[out, ref] COMVERSION *pComVersion
|
||
|
);
|
||
|
|
||
|
// In some cases the client maybe unsure that a particular binding will
|
||
|
// reach the server. (For example, when the oxid bindings have more then
|
||
|
// one TCP/IP binding) This call can be used to validate the binding
|
||
|
// from the client. During activation the client does not know what
|
||
|
// security providers the server supports. Return those as well.
|
||
|
|
||
|
[idempotent] error_status_t ServerAlive2
|
||
|
(
|
||
|
[in] handle_t hRpc,
|
||
|
[out, ref] COMVERSION *pComVersion,
|
||
|
[out, ref] DUALSTRINGARRAY **ppdsaOrBindings,
|
||
|
[out, ref] DWORD *pReserved
|
||
|
);
|
||
|
|
||
|
}
|