1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-31 17:18:04 +03:00
samba-mirror/source4/librpc/idl/epmapper.idl
2003-11-22 01:27:40 +00:00

148 lines
3.4 KiB
Plaintext

#include "idl_types.h"
/*
endpoint mapper interface
*/
[
uuid(e1af8308-5d1f-11c9-91a4-08002b14a0fa),
version(3.0),
pointer_default(unique)
]
interface epmapper
{
/*
note that the following IDL won't work in MIDL, and in fact
that the full towers/floors representation of epm cannot be
represented in MIDL at all. I decided to represent it using
the extended IDL syntax in pidl to make it easier to work
with.
*/
typedef struct {
GUID uuid;
uint16 version;
} epm_prot_uuid;
typedef [nodiscriminant] union {
[case(13)] epm_prot_uuid uuid;
[default] ;
} epm_protocol_info;
typedef struct {
uint8 protocol;
[switch_is(protocol)] epm_protocol_info info;
} epm_lhs;
typedef struct {
uint16 unknown;
} epm_rhs;
typedef struct {
[subcontext(2)] epm_lhs lhs;
[subcontext(2)] epm_rhs rhs;
} epm_floor;
/* not that the NDR_NOALIGN flag is inherited by all nested
structures. All of the towers/floors stuff is
non-aligned. I wonder what sort of wicked substance these
guys were smoking?
*/
typedef [flag(NDR_NOALIGN)] struct {
uint16 num_floors;
epm_floor floors[num_floors];
} epm_towers;
typedef struct {
uint32 tower_length;
[subcontext(4)] epm_towers towers;
} twr_t;
typedef struct {
GUID object;
twr_t *tower;
ascstr2 annotation;
} epm_entry_t;
typedef struct {
GUID uuid;
uint16 vers_major;
uint16 vers_minor;
} rpc_if_id_t;
/**********************/
/* Function 0x0 */
void epm_Insert(
[in] uint32 num_ents,
[in,size_is(num_ents)] epm_entry_t entries[],
[in] uint32 replace,
[out] uint32 *status
);
/**********************/
/* Function 0x1 */
void epm_Delete(
[in] uint32 num_ents,
[in, size_is(num_ents)] epm_entry_t entries[],
[out] uint32 *status
);
/**********************/
/* Function 0x02 */
void epm_Lookup(
[in] uint32 inquiry_type,
[in] GUID *object,
[in] rpc_if_id_t *interface_id,
[in] uint32 vers_option,
[in, out, ref] policy_handle *entry_handle,
[in] uint32 max_ents,
[out] uint32 num_ents,
[out, length_is(num_ents), size_is(max_ents)] epm_entry_t entries[],
[out] uint32 status
);
/**********************/
/* Function 0x03 */
typedef struct {
twr_t *twr;
} twr_p_t;
void epm_Map(
[in] GUID *object,
[in] twr_t *map_tower,
[in, out] policy_handle *entry_handle,
[in] uint32 max_towers,
[out] uint32 *num_towers,
[out, length_is(*num_towers), size_is(max_towers)] twr_p_t towers[],
[out] uint32 *status
);
/**********************/
/* Function 0x04 */
void epm_LookupHandleFree(
[in, out] policy_handle *entry_handle,
[out] uint32 *status
);
/**********************/
/* Function 0x05 */
void epm_InqObject(
[out] GUID *epm_object,
[out] uint32 *status
);
/**********************/
/* Function 0x05 */
void epm_MgmtDelete(
[in] uint32 object_speced,
[in] GUID *object,
[in] twr_t *tower,
[out] uint32 *status
);
}