Example #1
0
        private static IEnumerable <RpcEndpoint> QueryEndpointsForBinding(SafeRpcBindingHandle binding_handle)
        {
            using (binding_handle) {
                int status = Win32NativeMethods.RpcMgmtInqIfIds(binding_handle, out SafeRpcIfIdVectorHandle if_id_vector);
                // If the RPC server doesn't exist return an empty list.
                if (status == 1722)
                {
                    return(new RpcEndpoint[0]);
                }
                if (status != 0)
                {
                    throw new SafeWin32Exception(status);
                }

                using (if_id_vector) {
                    return(if_id_vector.GetIfIds().Select(if_id => CreateEndpoint(binding_handle, if_id)).ToArray());
                }
            }
        }