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

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
);
}