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