mirror of
https://github.com/samba-team/samba.git
synced 2024-12-31 17:18:04 +03:00
2ca65a99c7
(This used to be commit 5962f1cffa
)
148 lines
3.4 KiB
Plaintext
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
|
|
);
|
|
}
|