NT4/private/dcomidl/objex.idl
2020-09-30 17:12:29 +02:00

86 lines
2.9 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
);
}