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