private static IEnumerable <DeviceTreeNode> BuildDeviceTreeNode(DeviceNode parent, int node, Dictionary <int, DeviceTreeNode> dict) { List <DeviceTreeNode> nodes = new List <DeviceTreeNode>(); while (node != 0) { DeviceTreeNode curr_node = new DeviceTreeNode(node, parent); dict[node] = curr_node; nodes.Add(curr_node); if (DeviceNativeMethods.CM_Get_Child(out int child, node, 0) == CrError.SUCCESS) { curr_node.AddRange(BuildDeviceTreeNode(curr_node, child, dict)); } if (DeviceNativeMethods.CM_Get_Sibling(out node, node, 0) != CrError.SUCCESS) { break; } } return(nodes); }
internal DeviceTreeNode(int devinst, DeviceNode parent) : base(devinst) { _children = new List <DeviceTreeNode>(); _parent = parent; }