4 endpoint mapper interface
8 uuid(e1af8308-5d1f-11c9-91a4-08002b14a0fa),
10 endpoints(epmapper, TCP-135),
11 pointer_default(unique)
17 note that the following IDL won't work in MIDL, and in fact
18 that the full towers/floors representation of epm cannot be
19 represented in MIDL at all. I decided to represent it using
20 the extended IDL syntax in pidl to make it easier to work
24 const int EPMAPPER_STATUS_NO_MORE_ENTRIES = 0x16c9a0d6;
27 /* this guid indicates NDR encoding in a protocol tower */
28 const string NDR_GUID = "8a885d04-1ceb-11c9-9fe8-08002b104860";
29 const string NDR_GUID_VERSION = 2;
31 const uint32 EPMAPPER_PORT = 135;
39 EPM_PROTOCOL_TCP = 0x07,
40 EPM_PROTOCOL_IP = 0x09,
41 EPM_PROTOCOL_PIPE = 0x10,
42 EPM_PROTOCOL_NETBIOS = 0x11,
43 EPM_PROTOCOL_RPC_C = 0x0b,
44 EPM_PROTOCOL_UUID = 0x0d,
45 EPM_PROTOCOL_SMB = 0x0f,
46 EPM_PROTOCOL_HTTP = 0x1f
49 typedef [nodiscriminant] union {
50 [case(13)] epm_prot_uuid uuid;
51 [default] [flag(NDR_REMAINING)] DATA_BLOB lhs_data;
56 [switch_is(protocol)] epm_protocol_info info;
60 [flag(NDR_REMAINING)] DATA_BLOB rhs_data;
64 [subcontext(2)] epm_lhs lhs;
65 [subcontext(2)] epm_rhs rhs;
68 /* note that the NDR_NOALIGN flag is inherited by all nested
69 structures. All of the towers/floors stuff is
70 non-aligned. I wonder what sort of wicked substance these
73 typedef [flag(NDR_NOALIGN)] struct {
75 epm_floor floors[num_floors];
79 [value(ndr_size_epm_towers(&r->towers))] uint32 tower_length;
80 [subcontext(4)] epm_towers towers;
95 /**********************/
99 [in,size_is(num_ents)] epm_entry_t entries[],
101 [out] error_status_t status
104 /**********************/
107 [in] uint32 num_ents,
108 [in, size_is(num_ents)] epm_entry_t entries[],
109 [out] error_status_t status
112 /**********************/
115 [in] uint32 inquiry_type,
117 [in] rpc_if_id_t *interface_id,
118 [in] uint32 vers_option,
119 [in,out,ref] policy_handle *entry_handle,
120 [in] uint32 max_ents,
121 [out] uint32 num_ents,
122 [out, length_is(num_ents), size_is(max_ents)] epm_entry_t entries[],
123 [out] error_status_t status
127 /**********************/
136 [in] epm_twr_t *map_tower,
137 [in,out,ref] policy_handle *entry_handle,
138 [in] uint32 max_towers,
139 [out] uint32 num_towers,
140 [out, length_is(num_towers), size_is(max_towers)] epm_twr_p_t towers[],
141 [out] error_status_t status
145 /**********************/
147 void epm_LookupHandleFree(
148 [in,out,ref] policy_handle *entry_handle,
149 [out] error_status_t status
152 /**********************/
155 [out] GUID *epm_object,
156 [out] error_status_t status
160 /**********************/
163 [in] uint32 object_speced,
165 [in] epm_twr_t *tower,
166 [out] error_status_t status