server: Add functions for conversions between server user handles and pointer-style...
[wine] / include / wine / epm.idl
1 /*
2  * Endpoint Mapper
3  *
4  * Copyright 2006 Robert Shearman (for CodeWeavers)
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20
21 /* FIXME: should be import */
22 #include "dcetypes.idl"
23
24 cpp_quote("RPC_STATUS WINAPI TowerExplode(")
25 cpp_quote("    const twr_t *tower, PRPC_SYNTAX_IDENTIFIER object, PRPC_SYNTAX_IDENTIFIER syntax,")
26 cpp_quote("    char **protseq, char **endpoint, char **address);")
27 cpp_quote("RPC_STATUS WINAPI TowerConstruct(")
28 cpp_quote("    const RPC_SYNTAX_IDENTIFIER *object, const RPC_SYNTAX_IDENTIFIER *syntax,")
29 cpp_quote("    const char *protseq, const char *endpoint, const char *address,")
30 cpp_quote("    twr_t **tower);")
31
32 [
33     uuid(e1af8308-5d1f-11c9-91a4-08002b14a0fa),
34     version(3.0),
35     pointer_default(ref)
36 ]
37 interface epm
38 {
39     const long ept_max_annotation_size = 64;
40
41     typedef struct
42     {
43                     GUID        object;
44                     twr_t      *tower;
45         [string]    char        annotation[ept_max_annotation_size];
46     } ept_entry_t, *ept_entry_p_t;
47
48     typedef [context_handle] void *ept_lookup_handle_t;
49
50     /* Adds entries to an endpoint map */
51     void ept_insert(
52         [in]    handle_t            h,
53         [in]    unsigned32          num_ents,
54         [in, size_is(num_ents)]
55                 ept_entry_t         entries[],
56         [in]    boolean32           replace,
57         [out]   error_status_t      *status
58     );
59
60     /* Removes entries from an endpoint map */
61     void ept_delete(
62         [in]    handle_t            h,
63         [in]    unsigned32          num_ents,
64         [in, size_is(num_ents)]
65                 ept_entry_t         entries[],
66         [out]   error_status_t      *status
67     );
68
69     /* Lookup entries in an endpoint map */
70     [idempotent]
71     void ept_lookup(
72         [in]        handle_t            h,
73         [in]        unsigned32          inquiry_type,
74         [in]        uuid_p_t            object,
75         [in]        rpc_if_id_p_t       interface_id,
76         [in]        unsigned32          vers_option,
77         [in, out]   ept_lookup_handle_t *entry_handle,
78         [in]        unsigned32          max_ents,
79         [out]       unsigned32          *num_ents,
80         [out, length_is(*num_ents), size_is(max_ents)]
81                     ept_entry_t         entries[],
82         [out]       error_status_t      *status
83     );
84
85     /* Lookup entries in an endpoint map using the given input pattern */
86     [idempotent]
87     void ept_map(
88         [in]        handle_t            h,
89         [in]        uuid_p_t            object,
90         [in]        twr_p_t             map_tower,
91         [in, out]   ept_lookup_handle_t *entry_handle,
92         [in]        unsigned32          max_towers,
93         [out]       unsigned32          *num_towers,
94         [out, length_is(*num_towers), size_is(max_towers)]
95                     twr_p_t             *towers,
96         [out]       error_status_t      *status
97     );
98
99     /* Free the context handle returned by ept_lookup or ept_map */
100     void ept_lookup_handle_free(
101         [in]        handle_t            h,
102         [in, out]   ept_lookup_handle_t *entry_handle,
103         [out]       error_status_t      *status
104     );
105
106     /* Inquires as to the endpoint map's object identifier */
107     [idempotent]
108     void ept_inq_object(
109         [in]        handle_t            h,
110         [out]       GUID                *ept_object,
111         [out]       error_status_t      *status
112     );
113
114     /* Deletes matching entries in the endpoint map */
115     void ept_mgmt_delete(
116         [in]        handle_t            h,
117         [in]        boolean32           object_speced,
118         [in]        uuid_p_t            object,
119         [in]        twr_p_t             tower,
120         [out]       error_status_t      *status
121     );
122 }