Exemple #1
0
        private static PnpObject GetHalDevice(params String[] properties)
        {
            String[]             strArray   = properties;
            String[]             strArray1  = { "{A45C254E-DF1C-4EFD-8020-67D146A850E0},10" };
            IEnumerable <String> enumerable = strArray.Concat(strArray1);

            try
            {
                PnpObjectCollection pnpObjectCollection = PnpObject.FindAllAsync(PnpObjectType.Device, enumerable, "System.Devices.ContainerId:=\"{00000000-0000-0000-FFFF-FFFFFFFFFFFF}\"").GetResults();

                foreach (PnpObject pnpObject in pnpObjectCollection)
                {
                    if (pnpObject.Properties == null || !pnpObject.Properties.Any())
                    {
                        continue;
                    }

                    KeyValuePair <String, Object> keyValuePair = pnpObject.Properties.Last();
                    if (keyValuePair.Value == null || !keyValuePair.Value.ToString().Equals("4d36e966-e325-11ce-bfc1-08002be10318"))
                    {
                        continue;
                    }
                    return(pnpObject);
                }
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine("Exception: " + e.Message);
                return(null);
            }
            return(null);
        }
Exemple #2
0
        /// <summary>
        /// hdt
        /// </summary>
        /// <param name="properties"></param>
        /// <returns></returns>
        static Task <PnpObject> GetHalDevice(params string[] properties)
        {
            PnpObject           result           = null;
            var                 actualProperties = Enumerable.Concat <string>(properties, new string[] { "{A45C254E-DF1C-4EFD-8020-67D146A850E0},10" });
            PnpObjectCollection objects          = WindowsRuntimeSystemExtensions.GetAwaiter <PnpObjectCollection>(PnpObject.FindAllAsync(PnpObjectType.Device, actualProperties, "System.Devices.ContainerId:=\"{00000000-0000-0000-FFFF-FFFFFFFFFFFF}\"")).GetResult();

            foreach (PnpObject obj in objects)
            {
                KeyValuePair <string, object> pair = Enumerable.Last <KeyValuePair <string, object> >((IEnumerable <KeyValuePair <string, object> >)obj.Properties);
                if ((pair.Value != null) && pair.Value.ToString().Equals("4d36e966-e325-11ce-bfc1-08002be10318"))
                {
                    result = obj;
                    break;
                }
            }
            return(Task.FromResult <PnpObject>(result));
        }
        private static async Task <string> GetOsVersionUsingPnpObject()
        {
            string[] requestedProperties = new string[]
            {
                DeviceDriverVersionKey,
                DeviceDriverProviderKey
            };

            PnpObjectCollection pnpObjects = await PnpObject.FindAllAsync(PnpObjectType.Device, requestedProperties, RootContainerQuery);

            string guessedVersion = pnpObjects.Select(item => new ProviderVersionPair
            {
                Provider = (string)GetValueOrDefault(item.Properties, DeviceDriverProviderKey),
                Version  = (string)GetValueOrDefault(item.Properties, DeviceDriverVersionKey)
            })
                                    .Where(item => string.IsNullOrEmpty(item.Version) == false)
                                    .Where(item => string.Compare(item.Provider, "Microsoft", StringComparison.Ordinal) == 0)
                                    .GroupBy(item => item.Version)
                                    .OrderByDescending(item => item.Count())
                                    .Select(item => item.Key)
                                    .First();

            return(guessedVersion);
        }