| /* |
| * Endpoint Mapper |
| * |
| * Copyright 2006 Robert Shearman (for CodeWeavers) |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| /* FIXME: should be import */ |
| #include "dcetypes.idl" |
| |
| cpp_quote("RPC_STATUS WINAPI TowerExplode(") |
| cpp_quote(" const twr_t *tower, PRPC_SYNTAX_IDENTIFIER object, PRPC_SYNTAX_IDENTIFIER syntax,") |
| cpp_quote(" char **protseq, char **endpoint, char **address);") |
| cpp_quote("RPC_STATUS WINAPI TowerConstruct(") |
| cpp_quote(" const RPC_SYNTAX_IDENTIFIER *object, const RPC_SYNTAX_IDENTIFIER *syntax,") |
| cpp_quote(" const char *protseq, const char *endpoint, const char *address,") |
| cpp_quote(" twr_t **tower);") |
| |
| [ |
| uuid(e1af8308-5d1f-11c9-91a4-08002b14a0fa), |
| version(3.0), |
| pointer_default(ref) |
| ] |
| interface epm |
| { |
| const long ept_max_annotation_size = 64; |
| |
| typedef struct |
| { |
| GUID object; |
| twr_t *tower; |
| [string] char annotation[ept_max_annotation_size]; |
| } ept_entry_t, *ept_entry_p_t; |
| |
| typedef [context_handle] void *ept_lookup_handle_t; |
| |
| /* Adds entries to an endpoint map */ |
| void ept_insert( |
| [in] handle_t h, |
| [in] unsigned32 num_ents, |
| [in, size_is(num_ents)] |
| ept_entry_t entries[], |
| [in] boolean32 replace, |
| [out] error_status_t *status |
| ); |
| |
| /* Removes entries from an endpoint map */ |
| void ept_delete( |
| [in] handle_t h, |
| [in] unsigned32 num_ents, |
| [in, size_is(num_ents)] |
| ept_entry_t entries[], |
| [out] error_status_t *status |
| ); |
| |
| /* Lookup entries in an endpoint map */ |
| [idempotent] |
| void ept_lookup( |
| [in] handle_t h, |
| [in] unsigned32 inquiry_type, |
| [in] uuid_p_t object, |
| [in] rpc_if_id_p_t interface_id, |
| [in] unsigned32 vers_option, |
| [in, out] ept_lookup_handle_t *entry_handle, |
| [in] unsigned32 max_ents, |
| [out] unsigned32 *num_ents, |
| [out, length_is(*num_ents), size_is(max_ents)] |
| ept_entry_t entries[], |
| [out] error_status_t *status |
| ); |
| |
| /* Lookup entries in an endpoint map using the given input pattern */ |
| [idempotent] |
| void ept_map( |
| [in] handle_t h, |
| [in] uuid_p_t object, |
| [in] twr_p_t map_tower, |
| [in, out] ept_lookup_handle_t *entry_handle, |
| [in] unsigned32 max_towers, |
| [out] unsigned32 *num_towers, |
| [out, length_is(*num_towers), size_is(max_towers)] |
| twr_p_t *towers, |
| [out] error_status_t *status |
| ); |
| |
| /* Free the context handle returned by ept_lookup or ept_map */ |
| void ept_lookup_handle_free( |
| [in] handle_t h, |
| [in, out] ept_lookup_handle_t *entry_handle, |
| [out] error_status_t *status |
| ); |
| |
| /* Inquires as to the endpoint map's object identifier */ |
| [idempotent] |
| void ept_inq_object( |
| [in] handle_t h, |
| [out] GUID *ept_object, |
| [out] error_status_t *status |
| ); |
| |
| /* Deletes matching entries in the endpoint map */ |
| void ept_mgmt_delete( |
| [in] handle_t h, |
| [in] boolean32 object_speced, |
| [in] uuid_p_t object, |
| [in] twr_p_t tower, |
| [out] error_status_t *status |
| ); |
| } |