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);
        }
Exemple #2
0
 internal DeviceTreeNode(int devinst, DeviceNode parent) : base(devinst)
 {
     _children = new List <DeviceTreeNode>();
     _parent   = parent;
 }