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()); } } }