#include "idl_types.h" /** DCOM interfaces http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm */ /* The OXID Resolver can turn a OXID (Object Exporter ID) into a RPC binding string that can be used to contact an object (used by DCOM) */ [ uuid(99fcfec4-5260-101b-bbcb-00aa0021347a), helpstring("Object Exporter ID Resolver"), endpoints(epmapper, TCP-135), pointer_default(unique) ] interface IOXIDResolver { #define OXID HYPER_T #define SETID HYPER_T #define IPID GUID #define OID GUID // Method to get the protocol sequences, string bindings // and machine id for an object server given its OXID. typedef [public] struct { DUALSTRINGARRAY *ppdsaOxidBindings; } ppdsaOxidBindingsArray; [idempotent] WERROR ResolveOxid ( [in] OXID *pOxid, [in] uint16 cRequestedProtseqs, [in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[], [out, ref] ppdsaOxidBindingsArray *ppdsaOxidBindings, [out, ref] IPID *pipidRemUnknown, [out, ref] uint32 *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] WERROR SimplePing ( [in] SETID *SetId // 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] WERROR ComplexPing ( [in, out] SETID *pSetId, // In of 0 on first call for new set. [in] uint16 SequenceNum, [in] uint16 cAddToSet, [in] uint16 cDelFromSet, // add these OIDs to the set [in, size_is(cAddToSet)] OID AddToSet[], //remove these OIDs from the set [in, size_is(cDelFromSet)] OID DelFromSet[], [out] uint16 *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] WERROR ServerAlive (); // 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] WERROR ResolveOxid2 ( [in] OXID *pOxid, [in] uint16 cRequestedProtseqs, [in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[], [out, ref] ppdsaOxidBindingsArray *ppdsaOxidBindings, [out, ref] IPID *pipidRemUnknown, [out, ref] uint32 *pAuthnHint, [out, ref] COMVERSION *pComVersion ); [idempotent] WERROR ServerAlive2 ( [out] COMVERSION version, [out] uint8 unknown1[4], [out] DUALSTRINGARRAY dualstring, [out] uint8 unknown2[5]); }