ad38fce9a549e84886a85e9be114f55aa24d27ff
[kamenim/samba.git] / source4 / librpc / idl / oxidresolver.idl
1 #include "idl_types.h"
2
3 /**
4   DCOM interfaces
5   http://www.grimes.demon.co.uk/DCOM/DCOMSpec.htm
6  */
7
8 /* 
9  The OXID Resolver can turn a OXID (Object Exporter ID) into a 
10  RPC binding string that can be used to contact an object
11
12  (used by DCOM)
13  */
14
15
16         uuid("99fcfec4-5260-101b-bbcb-00aa0021347a"),
17         helpstring("Object Exporter ID Resolver"),
18         endpoint("ncacn_np:[\\pipe\\epmapper]", "ncacn_ip_tcp:[135]", "ncalrpc:"),
19         pointer_default(unique),
20         pointer_default_top(unique),
21         depends(dcom)
22 ]
23 interface IOXIDResolver
24 {
25 #define OXID hyper
26 #define SETID hyper
27 #define IPID GUID
28 #define OID GUID
29
30         /* Method to get the protocol sequences, string bindings */
31         /* and machine id for an object server given its OXID. */
32
33         [idempotent] WERROR ResolveOxid (
34                  [in] OXID pOxid,
35                  [in] uint16 cRequestedProtseqs,
36                  [in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[],
37                  [out] DUALSTRINGARRAY *ppdsaOxidBindings,
38                  [out] IPID pipidRemUnknown,
39                  [out] uint32 pAuthnHint
40                          );
41
42         /* Simple ping is used to ping a Set. Client machines use this */
43         /* to inform the object exporter that it is still using the */
44         /* members of the set. */
45         /* Returns S_TRUE if the SetId is known by the object exporter, */
46         /* S_FALSE if not. */
47         [idempotent] WERROR SimplePing (
48                 [in] SETID *SetId /* Must not be zero */
49                 );
50         
51         /* Complex ping is used to create sets of OIDs to ping. The */
52         /* whole set can subsequently be pinged using SimplePing, */
53         /* thus reducing network traffic. */
54         [idempotent] WERROR ComplexPing (
55                 [in] SETID *SetId, /* In of 0 on first call for new set. */
56                 [out] SETID SetId,
57                 [in] uint16 SequenceNum,
58                 [in] uint16 cAddToSet,
59                 [in] uint16 cDelFromSet,
60                 /* add these OIDs to the set */
61                 [in, size_is(cAddToSet)] OID AddToSet[],
62                 /*remove these OIDs from the set */
63                 [in, size_is(cDelFromSet)] OID DelFromSet[],
64                 [out] uint16 PingBackoffFactor/* 2^factor = multipler */
65                          );
66
67         /* In some cases the client maybe unsure that a particular */
68         /* binding will reach the server. (For example, when the oxid */
69         /* bindings have more then one TCP/IP binding) This call */
70         /* can be used to validate the binding */
71         /* from the client. */
72         [idempotent] WERROR ServerAlive ();
73
74         /* Method to get the protocol sequences, string bindings, */
75         /* RemoteUnknown IPID and COM version for an object server */
76         /* given its OXID. Supported by DCOM */
77         /* version 5.2 and above. Looks like that means 
78          * Windows 2003/XP and above */
79         [idempotent] WERROR ResolveOxid2 (
80                                                                                           [in] OXID pOxid,
81                                                                                           [in] uint16 cRequestedProtseqs,
82                                                                                           [in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[],
83                                                                                           [out] DUALSTRINGARRAY *pdsaOxidBindings,
84                                                                                           [out] IPID ipidRemUnknown,
85                                                                                           [out] uint32 AuthnHint,
86                                                                                           [out] COMVERSION ComVersion
87                                                                                          );
88         typedef struct {
89                 COMVERSION version;
90                 uint32 unknown1;
91         } COMINFO;
92
93         [idempotent] WERROR ServerAlive2 (
94           [out] COMINFO info,
95           [out] DUALSTRINGARRAY dualstring,
96           [out] uint8 unknown2[3]);
97 }