diff --git a/reactos/include/reactos/wine/dcetypes.idl b/reactos/include/reactos/wine/dcetypes.idl new file mode 100644 index 00000000000..9986fcd1fcd --- /dev/null +++ b/reactos/include/reactos/wine/dcetypes.idl @@ -0,0 +1,88 @@ +/* + * Common DCE Types + * + * 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 + */ + +/* pull in GUID type */ +import "wtypes.idl"; + +typedef unsigned small unsigned8; +typedef unsigned short unsigned16; +typedef unsigned long unsigned32; +typedef small signed8; +typedef short signed16; +typedef long signed32; +typedef unsigned32 boolean32; +typedef unsigned hyper u_int64; +typedef unsigned long u_int32; +typedef unsigned short u_int16; +typedef unsigned small u_int8; + +typedef [ptr] GUID *uuid_p_t; + +typedef struct twr_t +{ + unsigned32 tower_length; + [size_is(tower_length)] byte tower_octet_string[]; +} twr_t; +typedef [ptr] twr_t *twr_p_t; + +typedef struct ndr_context_handle +{ + unsigned32 context_handle_attributes; + GUID context_handle_uuid; +} ndr_context_handle; + +const long ndr_c_int_big_endian = 0; +const long ndr_c_int_little_endian = 1; +const long ndr_c_float_ieee = 0; +const long ndr_c_float_vax = 1; +const long ndr_c_float_cray = 2; +const long ndr_c_float_ibm = 3; +const long ndr_c_char_ascii = 0; +const long ndr_c_char_ebcdic = 1; + +typedef struct +{ + unsigned8 int_rep; + unsigned8 char_rep; + unsigned8 float_rep; + byte reserved; +} ndr_format_t, *ndr_format_p_t; + +typedef struct +{ + GUID uuid; + unsigned16 vers_major; + unsigned16 vers_minor; +} rpc_if_id_t; +typedef [unique] rpc_if_id_t *rpc_if_id_p_t; + +typedef struct +{ + unsigned32 count; + [size_is(count)] + rpc_if_id_p_t if_id[*]; +} rpc_if_id_vector_t; +typedef [unique] rpc_if_id_vector_t *rpc_if_id_vector_p_t; + +typedef struct +{ + unsigned32 count; + unsigned32 stats[1]; /* length_is (count) */ +} rpc_stats_vector_t, *rpc_stats_vector_p_t; diff --git a/reactos/include/reactos/wine/epm.idl b/reactos/include/reactos/wine/epm.idl new file mode 100644 index 00000000000..6b92313d9cc --- /dev/null +++ b/reactos/include/reactos/wine/epm.idl @@ -0,0 +1,122 @@ +/* + * 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 + ); +}