~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to librpc/idl/oxidresolver.idl

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
import "misc.idl", "orpc.idl";
 
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
 
24
#define SETID hyper
 
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
        [idempotent] WERROR ResolveOxid (
 
32
                 [in] OXID pOxid,
 
33
                 [in] uint16 cRequestedProtseqs,
 
34
                 [in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[],
 
35
                 [out] DUALSTRINGARRAY **ppdsaOxidBindings,
 
36
                 [out,ref] IPID *pipidRemUnknown,
 
37
                 [out,ref] uint32 *pAuthnHint
 
38
                         );
 
39
 
 
40
        /* Simple ping is used to ping a Set. Client machines use this */
 
41
        /* to inform the object exporter that it is still using the */
 
42
        /* members of the set. */
 
43
        /* Returns S_TRUE if the SetId is known by the object exporter, */
 
44
        /* S_FALSE if not. */
 
45
        [idempotent] WERROR SimplePing (
 
46
                [in] SETID *SetId /* Must not be zero */
 
47
                );
 
48
        
 
49
        /* Complex ping is used to create sets of OIDs to ping. The */
 
50
        /* whole set can subsequently be pinged using SimplePing, */
 
51
        /* thus reducing network traffic. */
 
52
        [idempotent] WERROR ComplexPing (
 
53
                [in,out,ref] SETID *SetId, /* In of 0 on first call for new set. */
 
54
                [in] uint16 SequenceNum,
 
55
                [in] uint16 cAddToSet,
 
56
                [in] uint16 cDelFromSet,
 
57
                /* add these OIDs to the set */
 
58
                [in, size_is(cAddToSet)] OID AddToSet[],
 
59
                /*remove these OIDs from the set */
 
60
                [in, size_is(cDelFromSet)] OID DelFromSet[],
 
61
                [out,ref] uint16 *PingBackoffFactor/* 2^factor = multipler */
 
62
                         );
 
63
 
 
64
        /* In some cases the client maybe unsure that a particular */
 
65
        /* binding will reach the server. (For example, when the oxid */
 
66
        /* bindings have more than one TCP/IP binding) This call */
 
67
        /* can be used to validate the binding */
 
68
        /* from the client. */
 
69
        [idempotent] WERROR ServerAlive ();
 
70
 
 
71
        /* Method to get the protocol sequences, string bindings, */
 
72
        /* RemoteUnknown IPID and COM version for an object server */
 
73
        /* given its OXID. Supported by DCOM */
 
74
        /* version 5.2 and above. Looks like that means 
 
75
         * Windows 2003/XP and above */
 
76
        [idempotent] WERROR ResolveOxid2 (
 
77
                                                                                          [in] OXID pOxid,
 
78
                                                                                          [in] uint16 cRequestedProtseqs,
 
79
                                                                                          [in, size_is(cRequestedProtseqs)] uint16 arRequestedProtseqs[],
 
80
                                                                                          [out] DUALSTRINGARRAY **pdsaOxidBindings,
 
81
                                                                                          [out,ref] IPID *ipidRemUnknown,
 
82
                                                                                          [out,ref] uint32 *AuthnHint,
 
83
                                                                                          [out,ref] COMVERSION *ComVersion
 
84
                                                                                         );
 
85
        typedef struct {
 
86
                COMVERSION version;
 
87
                uint32 unknown1;
 
88
        } COMINFO;
 
89
 
 
90
        [idempotent] WERROR ServerAlive2 (
 
91
          [out,ref] COMINFO *info,
 
92
          [out,ref] DUALSTRINGARRAY *dualstring,
 
93
          [out,ref] uint8 *unknown2,
 
94
          [out,ref] uint8 *unknown3,
 
95
          [out,ref] uint8 *unknown4);
 
96
}