public override bool TryGetPropertyValue(Props.PropertyKey key, out object value)
        {
            if (key == Props.System.Devices.InterfaceClassGuid)
            {
                value = DeviceInterface.Id;
                return(true);
            }

            if (key == Props.System.Devices.IsDefault)
            {
                value = DeviceInterface.IsDefault;
                return(true);
            }

            if (key == Props.System.Devices.InterfaceEnabled)
            {
                value = DeviceInterface.IsEnabled;
                return(true);
            }

            if (key == Props.System.Devices.ContainerId)
            {
                return(DeviceInterface.Properties.TryGetValue("System.Devices.ContainerId", out value));
            }

            return(base.TryGetPropertyValue(key, out value));
        }
        public override bool TryGetPropertyValue(Props.PropertyKey key, out object value)
        {
            if (key == Props.System.Devices.ClassGuid)
            {
                value = ClassGuid.ToString("B");
                return(true);
            }

            return(base.TryGetPropertyValue(key, out value));
        }
            public override bool TryGetPropertyValue(Props.PropertyKey key, out object value)
            {
                bool b = base.TryGetPropertyValue(key, out value);

                if (!b)
                {
                    // file equivalence for transfer operations, preview, etc.
                    if (key == PropertyStore.TransferMediumItem || key == PropertyStore.IdentityName ||
                        key == PropertyStore.PreviewItem || key == PropertyStore.CurrentItem ||
                        key == PropertyStore.DelegateItem || key == PropertyStore.DisplayItem ||
                        key == PropertyStore.Moniker)
                    {
                        value = FileSystemPath;
                        return(true);
                    }
                }
                return(b);
            }
        public override bool TryGetPropertyValue(Props.PropertyKey key, out object value)
        {
            if (key == Props.System.Devices.DeviceInstanceId)
            {
                value = Device.Id;
                return(true);
            }

            if (key == Props.System.Devices.ClassGuid)
            {
                return(Device.Properties.TryGetValue("System.Devices.ClassGuid", out value));
            }

            if (key == Props.System.Devices.ContainerId)
            {
                return(Device.Properties.TryGetValue("System.Devices.ContainerId", out value));
            }

            return(base.TryGetPropertyValue(key, out value));
        }