r3162: Add client-side support for the ncalrpc: and ncacn_unix_stream: transports.
[gd/samba-autobuild/.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 ]
21 interface IOXIDResolver
22 {
23 #define OXID HYPER_T
24 #define SETID HYPER_T
25 #define IPID GUID
26 #define OID GUID
27
28         /* Method to get the protocol sequences, string bindings */
29         /* and machine id for an object server given its OXID. */
30
31         typedef [public] struct {
32                 DUALSTRINGARRAY *ppdsaOxidBindings;
33         } ppdsaOxidBindingsArray;
34
35         [idempotent] WERROR ResolveOxid (
36                  [in] OXID *pOxid,
37                  [in] uint16 cRequestedProtseqs,
38                  [in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[],
39                  [out, ref] ppdsaOxidBindingsArray *ppdsaOxidBindings,
40                  [out, ref] IPID *pipidRemUnknown,
41                  [out, ref] uint32 *pAuthnHint
42                          );
43
44         /* Simple ping is used to ping a Set. Client machines use this */
45         /* to inform the object exporter that it is still using the */
46         /* members of the set. */
47         /* Returns S_TRUE if the SetId is known by the object exporter, */
48         /* S_FALSE if not. */
49         [idempotent] WERROR SimplePing (
50                 [in] SETID *SetId /* Must not be zero */
51                 );
52         
53         /* Complex ping is used to create sets of OIDs to ping. The */
54         /* whole set can subsequently be pinged using SimplePing, */
55         /* thus reducing network traffic. */
56         [idempotent] WERROR ComplexPing (
57                 [in, out] SETID *pSetId, /* In of 0 on first call for new set. */
58                  [in] uint16 SequenceNum,
59                  [in] uint16 cAddToSet,
60                  [in] uint16 cDelFromSet,
61                 /* add these OIDs to the set */
62                  [in, size_is(cAddToSet)] OID AddToSet[],
63                 /*remove these OIDs from the set */
64                  [in, size_is(cDelFromSet)] OID DelFromSet[],
65                 [out] uint16 *pPingBackoffFactor/* 2^factor = multipler */
66                          );
67
68         /* In some cases the client maybe unsure that a particular */
69         /* binding will reach the server. (For example, when the oxid */
70         /* bindings have more then one TCP/IP binding) This call */
71         /* can be used to validate the binding */
72         /* from the client. */
73         [idempotent] WERROR ServerAlive ();
74
75         /* Method to get the protocol sequences, string bindings, */
76         /* RemoteUnknown IPID and COM version for an object server */
77         /* given its OXID. Supported by DCOM */
78         /* version 5.2 and above. */
79         [idempotent] WERROR ResolveOxid2 (
80                                                                                           [in] OXID *pOxid,
81                                                                                           [in] uint16 cRequestedProtseqs,
82                                                                                           [in, size_is(cRequestedProtseqs)]
83                                                                                           uint16 arRequestedProtseqs[],
84                                                                                           [out, ref] ppdsaOxidBindingsArray *ppdsaOxidBindings,
85                                                                                           [out, ref] IPID *pipidRemUnknown,
86                                                                                           [out, ref] uint32 *pAuthnHint,
87                                                                                           [out, ref] COMVERSION *pComVersion
88                                                                                          );
89                                                                                          typedef struct {
90                 COMVERSION version;
91                 uint32 unknown1;
92         } COMINFO;
93
94         [idempotent] WERROR ServerAlive2 (
95           [out] COMINFO info,
96           [out] DUALSTRINGARRAY dualstring,
97           [out] uint8 unknown2[3]);
98 }