2004-09-27 20:37:41 +04:00
#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"),
2004-10-24 18:57:16 +04:00
endpoint("ncacn_np:[\\pipe\\epmapper]", "ncacn_ip_tcp:[135]", "ncalrpc:"),
2004-09-27 20:37:41 +04:00
pointer_default(unique)
]
interface IOXIDResolver
{
#define OXID HYPER_T
#define SETID HYPER_T
#define IPID GUID
#define OID GUID
2004-10-06 18:55:50 +04:00
/* Method to get the protocol sequences, string bindings */
/* and machine id for an object server given its OXID. */
2004-09-27 20:37:41 +04:00
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
);
2004-10-06 18:55:50 +04:00
/* 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. */
2004-09-27 20:37:41 +04:00
[idempotent] WERROR SimplePing (
2004-10-06 18:55:50 +04:00
[in] SETID *SetId /* Must not be zero */
2004-09-27 20:37:41 +04:00
);
2004-10-06 18:55:50 +04:00
/* Complex ping is used to create sets of OIDs to ping. The */
/* whole set can subsequently be pinged using SimplePing, */
/* thus reducing network traffic. */
2004-09-27 20:37:41 +04:00
[idempotent] WERROR ComplexPing (
2004-10-06 18:55:50 +04:00
[in, out] SETID *pSetId, /* In of 0 on first call for new set. */
2004-09-27 20:37:41 +04:00
[in] uint16 SequenceNum,
[in] uint16 cAddToSet,
[in] uint16 cDelFromSet,
2004-10-06 18:55:50 +04:00
/* add these OIDs to the set */
2004-09-27 20:37:41 +04:00
[in, size_is(cAddToSet)] OID AddToSet[],
2004-10-06 18:55:50 +04:00
/*remove these OIDs from the set */
2004-09-27 20:37:41 +04:00
[in, size_is(cDelFromSet)] OID DelFromSet[],
2004-10-06 18:55:50 +04:00
[out] uint16 *pPingBackoffFactor/* 2^factor = multipler */
2004-09-27 20:37:41 +04:00
);
2004-10-06 18:55:50 +04:00
/* 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. */
2004-09-27 20:37:41 +04:00
[idempotent] WERROR ServerAlive ();
2004-10-06 18:55:50 +04:00
/* 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. */
2004-09-27 20:37:41 +04:00
[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
);
2004-09-28 02:06:27 +04:00
typedef struct {
COMVERSION version;
uint32 unknown1;
} COMINFO;
2004-09-27 20:37:41 +04:00
[idempotent] WERROR ServerAlive2 (
2004-09-28 02:06:27 +04:00
[out] COMINFO info,
2004-09-27 20:37:41 +04:00
[out] DUALSTRINGARRAY dualstring,
2004-09-28 02:06:27 +04:00
[out] uint8 unknown2[3]);
2004-09-27 20:37:41 +04:00
}