/* * 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 ); }