public List EnumeratePackages()

in ScpControl/Driver/PNPUtilLib/PNPUtil.cs [154:215]


        public List<DriverStoreEntry> EnumeratePackages()
        {
            var ldse = new List<DriverStoreEntry>();
            var output = "";

            var result = PnpUtilHelper(PnpUtilOptions.Enumerate, "", ref output);
            if (result)
            {
                // Trace.TraceInformation("O/P of Enumeration : " + Environment.NewLine + output + Environment.NewLine);

                // Parse the output
                // [jenda_] Didn't work on non-english Windows - changed from string recognition to counting lines
                using (var sr = new StringReader(output))
                {
                    var currentLine = "";
                    string[] currentLineDivided = {};
                    var dse = new DriverStoreEntry();
                    byte lineNum = 0;
                    while ((currentLine = sr.ReadLine()) != null)
                    {
                        currentLineDivided = currentLine.Split(':');
                        if (currentLineDivided.Length == 2)
                        {
                            currentLineDivided[1] = currentLineDivided[1].Trim();
                            switch (lineNum)
                            {
                                case 0: // [jenda_] Published name :
                                    dse.DriverPublishedName = currentLineDivided[1];
                                    break;
                                case 1: //Driver package provider :
                                    dse.DriverPkgProvider = currentLine.Split(':')[1].Trim();
                                    break;
                                case 2: // [jenda_] Class :
                                    dse.DriverClass = currentLine.Split(':')[1].Trim();
                                    break;
                                case 3: // [jenda_] Driver date and version :
                                    var DateAndVersion = currentLine.Split(':')[1].Trim();
                                    // date and version may be empty
                                    if(DateAndVersion.Length > 0)
                                    {
                                        dse.DriverDate = DateAndVersion.Split(' ')[0].Trim();
                                        dse.DriverVersion = DateAndVersion.Split(' ')[1].Trim();
                                    }
                                    break;
                                case 4: // [jenda_] Signer name :
                                    dse.DriverSignerName = currentLine.Split(':')[1].Trim();

                                    ldse.Add(dse);
                                    dse = new DriverStoreEntry();
                                    break;
                                default:
                                    continue;
                            }
                            lineNum++;
                            if (lineNum > 4)
                                lineNum = 0;
                        }
                    }
                }
            }
            return ldse;
        }