diff --git a/PInvoke/SetupAPI/DevGuid.cs b/PInvoke/SetupAPI/DevGuid.cs
new file mode 100644
index 00000000..c626ec3e
--- /dev/null
+++ b/PInvoke/SetupAPI/DevGuid.cs
@@ -0,0 +1,305 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices.ComTypes;
+using System.Text;
+using Vanara.Extensions;
+using Vanara.InteropServices;
+
+namespace Vanara.PInvoke
+{
+ /// Items from the SetupAPI.dll
+ public static partial class SetupAPI
+ {
+ ///
+ public static readonly Guid GUID_DEVCLASS_1394 = new Guid(0x6bdd1fc1, 0x810f, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_1394DEBUG = new Guid(0x66f250d6, 0x7801, 0x4a64, 0xb1, 0x39, 0xee, 0xa8, 0x0a, 0x45, 0x0b, 0x24);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_61883 = new Guid(0x7ebefbc0, 0x3200, 0x11d2, 0xb4, 0xc2, 0x00, 0xa0, 0xc9, 0x69, 0x7d, 0x07);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_ADAPTER = new Guid(0x4d36e964, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_APMSUPPORT = new Guid(0xd45b1c18, 0xc8fa, 0x11d1, 0x9f, 0x77, 0x00, 0x00, 0xf8, 0x05, 0xf5, 0x30);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_AVC = new Guid(0xc06ff265, 0xae09, 0x48f0, 0x81, 0x2c, 0x16, 0x75, 0x3d, 0x7c, 0xba, 0x83);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_BATTERY = new Guid(0x72631e54, 0x78a4, 0x11d0, 0xbc, 0xf7, 0x00, 0xaa, 0x00, 0xb7, 0xb3, 0x2a);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_BIOMETRIC = new Guid(0x53d29ef7, 0x377c, 0x4d14, 0x86, 0x4b, 0xeb, 0x3a, 0x85, 0x76, 0x93, 0x59);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_BLUETOOTH = new Guid(0xe0cbf06c, 0xcd8b, 0x4647, 0xbb, 0x8a, 0x26, 0x3b, 0x43, 0xf0, 0xf9, 0x74);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_CAMERA = new Guid(0xca3e7ab9, 0xb4c3, 0x4ae6, 0x82, 0x51, 0x57, 0x9e, 0xf9, 0x33, 0x89, 0x0f);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_CDROM = new Guid(0x4d36e965, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_COMPUTEACCELERATOR = new Guid(0xf01a9d53, 0x3ff6, 0x48d2, 0x9f, 0x97, 0xc8, 0xa7, 0x00, 0x4b, 0xe1, 0x0c);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_COMPUTER = new Guid(0x4d36e966, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_DECODER = new Guid(0x6bdd1fc2, 0x810f, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_DISKDRIVE = new Guid(0x4d36e967, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_DISPLAY = new Guid(0x4d36e968, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_DOT4 = new Guid(0x48721b56, 0x6795, 0x11d2, 0xb1, 0xa8, 0x00, 0x80, 0xc7, 0x2e, 0x74, 0xa2);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_DOT4PRINT = new Guid(0x49ce6ac8, 0x6f86, 0x11d2, 0xb1, 0xe5, 0x00, 0x80, 0xc7, 0x2e, 0x74, 0xa2);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_EHSTORAGESILO = new Guid(0x9da2b80f, 0xf89f, 0x4a49, 0xa5, 0xc2, 0x51, 0x1b, 0x08, 0x5b, 0x9e, 0x8a);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_ENUM1394 = new Guid(0xc459df55, 0xdb08, 0x11d1, 0xb0, 0x09, 0x00, 0xa0, 0xc9, 0x08, 0x1f, 0xf6);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_EXTENSION = new Guid(0xe2f84ce7, 0x8efa, 0x411c, 0xaa, 0x69, 0x97, 0x45, 0x4c, 0xa4, 0xcb, 0x57);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FDC = new Guid(0x4d36e969, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FIRMWARE = new Guid(0xf2e7dd72, 0x6468, 0x4e36, 0xb6, 0xf1, 0x64, 0x88, 0xf4, 0x2c, 0x1b, 0x52);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FLOPPYDISK = new Guid(0x4d36e980, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_GPS = new Guid(0x6bdd1fc3, 0x810f, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_HDC = new Guid(0x4d36e96a, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_HIDCLASS = new Guid(0x745a17a0, 0x74d3, 0x11d0, 0xb6, 0xfe, 0x00, 0xa0, 0xc9, 0x0f, 0x57, 0xda);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_HOLOGRAPHIC = new Guid(0xd612553d, 0x06b1, 0x49ca, 0x89, 0x38, 0xe3, 0x9e, 0xf8, 0x0e, 0xb1, 0x6f);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_IMAGE = new Guid(0x6bdd1fc6, 0x810f, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_INFINIBAND = new Guid(0x30ef7132, 0xd858, 0x4a0c, 0xac, 0x24, 0xb9, 0x02, 0x8a, 0x5c, 0xca, 0x3f);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_INFRARED = new Guid(0x6bdd1fc5, 0x810f, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_KEYBOARD = new Guid(0x4d36e96b, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_LEGACYDRIVER = new Guid(0x8ecc055d, 0x047f, 0x11d1, 0xa5, 0x37, 0x00, 0x00, 0xf8, 0x75, 0x3e, 0xd1);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_MEDIA = new Guid(0x4d36e96c, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_MEDIUM_CHANGER = new Guid(0xce5939ae, 0xebde, 0x11d0, 0xb1, 0x81, 0x00, 0x00, 0xf8, 0x75, 0x3e, 0xc4);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_MEMORY = new Guid(0x5099944a, 0xf6b9, 0x4057, 0xa0, 0x56, 0x8c, 0x55, 0x02, 0x28, 0x54, 0x4c);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_MODEM = new Guid(0x4d36e96d, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_MONITOR = new Guid(0x4d36e96e, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_MOUSE = new Guid(0x4d36e96f, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_MTD = new Guid(0x4d36e970, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_MULTIFUNCTION = new Guid(0x4d36e971, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_MULTIPORTSERIAL = new Guid(0x50906cb8, 0xba12, 0x11d1, 0xbf, 0x5d, 0x00, 0x00, 0xf8, 0x05, 0xf5, 0x30);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_NET = new Guid(0x4d36e972, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_NETCLIENT = new Guid(0x4d36e973, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_NETDRIVER = new Guid(0x87ef9ad1, 0x8f70, 0x49ee, 0xb2, 0x15, 0xab, 0x1f, 0xca, 0xdc, 0xbe, 0x3c);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_NETSERVICE = new Guid(0x4d36e974, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_NETTRANS = new Guid(0x4d36e975, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_NODRIVER = new Guid(0x4d36e976, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_PCMCIA = new Guid(0x4d36e977, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_PNPPRINTERS = new Guid(0x4658ee7e, 0xf050, 0x11d1, 0xb6, 0xbd, 0x00, 0xc0, 0x4f, 0xa3, 0x72, 0xa7);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_PORTS = new Guid(0x4d36e978, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_PRINTER = new Guid(0x4d36e979, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_PRINTERUPGRADE = new Guid(0x4d36e97a, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_PRINTQUEUE = new Guid(0x1ed2bbf9, 0x11f0, 0x4084, 0xb2, 0x1f, 0xad, 0x83, 0xa8, 0xe6, 0xdc, 0xdc);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_PROCESSOR = new Guid(0x50127dc3, 0x0f36, 0x415e, 0xa6, 0xcc, 0x4c, 0xb3, 0xbe, 0x91, 0x0B, 0x65);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_SBP2 = new Guid(0xd48179be, 0xec20, 0x11d1, 0xb6, 0xb8, 0x00, 0xc0, 0x4f, 0xa3, 0x72, 0xa7);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_SCMDISK = new Guid(0x53966cb1, 0x4d46, 0x4166, 0xbf, 0x23, 0xc5, 0x22, 0x40, 0x3c, 0xd4, 0x95);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_SCMVOLUME = new Guid(0x53ccb149, 0xe543, 0x4c84, 0xb6, 0xe0, 0xbc, 0xe4, 0xf6, 0xb7, 0xe8, 0x06);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_SCSIADAPTER = new Guid(0x4d36e97b, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_SECURITYACCELERATOR = new Guid(0x268c95a1, 0xedfe, 0x11d3, 0x95, 0xc3, 0x00, 0x10, 0xdc, 0x40, 0x50, 0xa5);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_SENSOR = new Guid(0x5175d334, 0xc371, 0x4806, 0xb3, 0xba, 0x71, 0xfd, 0x53, 0xc9, 0x25, 0x8d);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_SIDESHOW = new Guid(0x997b5d8d, 0xc442, 0x4f2e, 0xba, 0xf3, 0x9c, 0x8e, 0x67, 0x1e, 0x9e, 0x21);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_SMARTCARDREADER = new Guid(0x50dd5230, 0xba8a, 0x11d1, 0xbf, 0x5d, 0x00, 0x00, 0xf8, 0x05, 0xf5, 0x30);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_SMRDISK = new Guid(0x53487c23, 0x680f, 0x4585, 0xac, 0xc3, 0x1f, 0x10, 0xd6, 0x77, 0x7e, 0x82);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_SMRVOLUME = new Guid(0x53b3cf03, 0x8f5a, 0x4788, 0x91, 0xb6, 0xd1, 0x9e, 0xd9, 0xfc, 0xcc, 0xbf);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_SOFTWARECOMPONENT = new Guid(0x5c4c3332, 0x344d, 0x483c, 0x87, 0x39, 0x25, 0x9e, 0x93, 0x4c, 0x9c, 0xc8);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_SOUND = new Guid(0x4d36e97c, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_SYSTEM = new Guid(0x4d36e97d, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_TAPEDRIVE = new Guid(0x6d807884, 0x7d21, 0x11cf, 0x80, 0x1c, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_UNKNOWN = new Guid(0x4d36e97e, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_UCM = new Guid(0xe6f1aa1c, 0x7f3b, 0x4473, 0xb2, 0xe8, 0xc9, 0x7d, 0x8a, 0xc7, 0x1d, 0x53);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_USB = new Guid(0x36fc9e60, 0xc465, 0x11cf, 0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_VOLUME = new Guid(0x71a27cdd, 0x812a, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_VOLUMESNAPSHOT = new Guid(0x533c5b84, 0xec70, 0x11d2, 0x95, 0x05, 0x00, 0xc0, 0x4f, 0x79, 0xde, 0xaf);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_WCEUSBS = new Guid(0x25dbce51, 0x6c8f, 0x4a72, 0x8a, 0x6d, 0xb5, 0x4c, 0x2b, 0x4f, 0xc8, 0x35);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_WPD = new Guid(0xeec5ad98, 0x8080, 0x425f, 0x92, 0x2a, 0xda, 0xbf, 0x3d, 0xe3, 0xf6, 0x9a);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_TOP = new Guid(0xb369baf4, 0x5568, 0x4e82, 0xa8, 0x7e, 0xa9, 0x3e, 0xb1, 0x6b, 0xca, 0x87);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_ACTIVITYMONITOR = new Guid(0xb86dff51, 0xa31e, 0x4bac, 0xb3, 0xcf, 0xe8, 0xcf, 0xe7, 0x5c, 0x9f, 0xc2);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_UNDELETE = new Guid(0xfe8f1572, 0xc67a, 0x48c0, 0xbb, 0xac, 0x0b, 0x5c, 0x6d, 0x66, 0xca, 0xfb);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_ANTIVIRUS = new Guid(0xb1d1a169, 0xc54f, 0x4379, 0x81, 0xdb, 0xbe, 0xe7, 0xd8, 0x8d, 0x74, 0x54);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_REPLICATION = new Guid(0x48d3ebc4, 0x4cf8, 0x48ff, 0xb8, 0x69, 0x9c, 0x68, 0xad, 0x42, 0xeb, 0x9f);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_CONTINUOUSBACKUP = new Guid(0x71aa14f8, 0x6fad, 0x4622, 0xad, 0x77, 0x92, 0xbb, 0x9d, 0x7e, 0x69, 0x47);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_CONTENTSCREENER = new Guid(0x3e3f0674, 0xc83c, 0x4558, 0xbb, 0x26, 0x98, 0x20, 0xe1, 0xeb, 0xa5, 0xc5);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_QUOTAMANAGEMENT = new Guid(0x8503c911, 0xa6c7, 0x4919, 0x8f, 0x79, 0x50, 0x28, 0xf5, 0x86, 0x6b, 0x0c);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_SYSTEMRECOVERY = new Guid(0x2db15374, 0x706e, 0x4131, 0xa0, 0xc7, 0xd7, 0xc7, 0x8e, 0xb0, 0x28, 0x9a);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_CFSMETADATASERVER = new Guid(0xcdcf0939, 0xb75b, 0x4630, 0xbf, 0x76, 0x80, 0xf7, 0xba, 0x65, 0x58, 0x84);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_HSM = new Guid(0xd546500a, 0x2aeb, 0x45f6, 0x94, 0x82, 0xf4, 0xb1, 0x79, 0x9c, 0x31, 0x77);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_COMPRESSION = new Guid(0xf3586baf, 0xb5aa, 0x49b5, 0x8d, 0x6c, 0x05, 0x69, 0x28, 0x4c, 0x63, 0x9f);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_ENCRYPTION = new Guid(0xa0a701c0, 0xa511, 0x42ff, 0xaa, 0x6c, 0x06, 0xdc, 0x03, 0x95, 0x57, 0x6f);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_VIRTUALIZATION = new Guid(0xf75a86c0, 0x10d8, 0x4c3a, 0xb2, 0x33, 0xed, 0x60, 0xe4, 0xcd, 0xfa, 0xac);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_PHYSICALQUOTAMANAGEMENT = new Guid(0x6a0a8e78, 0xbba6, 0x4fc4, 0xa7, 0x09, 0x1e, 0x33, 0xcd, 0x09, 0xd6, 0x7e);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_OPENFILEBACKUP = new Guid(0xf8ecafa6, 0x66d1, 0x41a5, 0x89, 0x9b, 0x66, 0x58, 0x5d, 0x72, 0x16, 0xb7);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_SECURITYENHANCER = new Guid(0xd02bc3da, 0x0c8e, 0x4945, 0x9b, 0xd5, 0xf1, 0x88, 0x3c, 0x22, 0x6c, 0x8c);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_COPYPROTECTION = new Guid(0x89786ff1, 0x9c12, 0x402f, 0x9c, 0x9e, 0x17, 0x75, 0x3c, 0x7f, 0x43, 0x75);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_BOTTOM = new Guid(0x37765ea0, 0x5958, 0x4fc9, 0xb0, 0x4b, 0x2f, 0xdf, 0xef, 0x97, 0xe5, 0x9e);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_SYSTEM = new Guid(0x5d1b9aaa, 0x01e2, 0x46af, 0x84, 0x9f, 0x27, 0x2b, 0x3f, 0x32, 0x4c, 0x46);
+
+ ///
+ public static readonly Guid GUID_DEVCLASS_FSFILTER_INFRASTRUCTURE = new Guid(0xe55fa6f9, 0x128c, 0x4d04, 0xab, 0xab, 0x63, 0x0c, 0x74, 0xb1, 0x45, 0x3a);
+ }
+}
\ No newline at end of file
diff --git a/PInvoke/SetupAPI/DevPKEY.cs b/PInvoke/SetupAPI/DevPKEY.cs
new file mode 100644
index 00000000..c02a948d
--- /dev/null
+++ b/PInvoke/SetupAPI/DevPKEY.cs
@@ -0,0 +1,5564 @@
+using System;
+using System.Runtime.InteropServices.ComTypes;
+using Vanara.InteropServices;
+
+namespace Vanara.PInvoke
+{
+ /// Items from the SetupAPI.dll
+ public static partial class SetupAPI
+ {
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_AdditionalSoftwareRequested = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 19);
+
+ ///
+ /// The DEVPKEY_Device_Address device property represents the bus-specific address of a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_Address
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_ADDRESS
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_Address to the address of the device on its bus. For information about the
+ /// interpretation of a device address, see the DevicePropertyAddress value of the DeviceProperty parameter of IoGetDeviceProperty.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_Address.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_Address property
+ /// key. Instead, you can use the corresponding SPDRP_ADDRESS identifier to access the value of the property on these earlier
+ /// versions of Windows. For information about how to access this property value on these earlier versions of Windows, see Accessing
+ /// Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-address
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Address = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 30);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_AssignedToGuest = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 24);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_BaseContainerId device property represents the GUID value of the base container identifier (ID) .The Windows
+ /// Plug and Play (PnP) manager assigns this value to the device node (devnode).
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_BaseContainerId
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_GUID
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_BASE_CONTAINERID
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// The PnP manager determines the container ID for a devnode by using one of the following methods:
+ ///
+ /// -
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// -
+ ///
+ ///
+ ///
+ /// For more information about these methods, see How Container IDs are Generated.
+ ///
+ /// Regardless of how the container ID value is obtained, the PnP manager assigns the value to the DEVPKEY_Device_BaseContainerId
+ /// property of the devnode.
+ ///
+ ///
+ /// The DEVPKEY_Device_BaseContainerId property can be used to force the grouping of a new devnode with other devnodes that exists
+ /// in the system. This lets you use the new devnode as the parent (or base) container ID for other related devnodes. To do this,
+ /// you must first obtain the DEVPKEY_Device_BaseContainerID GUID of the existing devnode. Then, you must return the container ID
+ /// GUID of the new devnode in response to an IRP_MN_QUERY_ID query request that has the Parameters.QueryId.IdType
+ /// field set to BusQueryContainerID.
+ ///
+ ///
+ /// Note The value that is returned by a query of the DEVPKEY_Device_BaseContainerId or DEVPKEY_Device_ContainerId
+ /// properties can be different for the same devnode.
+ ///
+ ///
+ /// Note Do not use the DEVPKEY_Device_BaseContainerId property to reconstruct device container groupings in the system. Use
+ /// the DEVPKEY_Device_ContainerId property instead.
+ ///
+ /// For more information about container IDs, see Container IDs.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-basecontainerid
+ [CorrespondingType(typeof(Guid))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_BaseContainerId = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 38);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_BiosDeviceName = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 10);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_BusNumber device property represents the number that identifies the bus instance that a device instance is
+ /// attached to.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_BusNumber
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_BUSNUMBER
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_BusNumber to the value of the BusNumber member of the PNP_BUS_INFORMATION
+ /// structure that a bus driver returns in response to an IRP_MN_QUERY_BUS_INFORMATION request.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_BusNumber.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_BusNumber
+ /// property key. Instead, you can use the corresponding SPDRP_BUSNUMBER identifier to access the value of the property on these
+ /// earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows, see
+ /// Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-busnumber
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_BusNumber = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 23);
+
+ ///
+ /// The DEVPKEY_Device_BusRelations device property represents the bus relations for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_BusRelations
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// Not applicable
+ ///
+ ///
+ ///
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_BusRelations.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not directly support this property. For information about how to retrieve
+ /// device relations properties on these earlier versions of Windows, see Retrieving Device Relations.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-busrelations
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_BusRelations = new DEVPROPKEY(0x4340a6c5, 0x93fa, 0x4706, 0x97, 0x2c, 0x7b, 0x64, 0x80, 0x08, 0xa5, 0xa7, 7);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_BusReportedDeviceDesc device property represents a string value that was reported by the bus driver for the
+ /// device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_BusReportedDeviceDesc
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_BusReportedDeviceDesc is set by Windows Plug and Play (PnP) with the string value that is reported
+ /// by the bus driver for a device instance. The bus driver returns this value when queried with IRP_MN_QUERY_DEVICE_TEXT.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_BusReportedDeviceDesc.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-busreporteddevicedesc
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_BusReportedDeviceDesc = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 4);
+
+ ///
+ /// The DEVPKEY_Device_BusTypeGuid device property represents the GUID that identifies the bus type of a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_BusTypeGuid
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_GUID
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_BUSTYPEGUID
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_BusTypeGuid to the value of the BusTypeGuid member of the PNP_BUS_INFORMATION
+ /// structure that a bus driver returns in response to an IRP_MN_QUERY_BUS_INFORMATION request.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_BusTypeGuid.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_BusTypeGuid
+ /// property key. Instead, you can use the corresponding SPDRP_BUSTYPEGUID identifier to access the value of the property on these
+ /// earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows, see
+ /// Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-bustypeguid
+ [CorrespondingType(typeof(Guid))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_BusTypeGuid = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 21);
+
+ ///
+ /// The DEVPKEY_Device_Capabilities device property represents the capabilities of a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_Capabilities
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_CAPABILITIES
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_Capabilities to the capability value that the device driver returns in response to an
+ /// IRP_MN_QUERY_CAPABILITIES request for device capability information. The value of DEVPKEY_Device_Capabilities is a
+ /// bitwise OR of the CM_DEVCAP_Xxx capability flags that are defined in Cfgmgr32.h. The device capabilities that these flags
+ /// represent correspond to a subset of the members of the DEVICE_CAPABILITIES structure.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_Capabilities.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_Capabilities
+ /// property key. Instead, you can use the corresponding SPDRP_CAPABILITIES identifier to access the value of the property on these
+ /// earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows, see
+ /// Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-capabilities
+ [CorrespondingType(typeof(CM_DEVCAP))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Capabilities = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 17);
+
+ ///
+ /// The DEVPKEY_Device_Characteristics device property represents the characteristics of a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_Characteristics
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_CHARACTERISTICS
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_Characteristics is a bitwise OR of the FILE_Xxx file characteristic flags that are defined in Wdm.h
+ /// and Ntddk.h. For more information about the device characteristic flags, see the DeviceCharacteristics parameter of
+ /// IoCreateDevice and Specifying Device Characteristics.
+ ///
+ ///
+ /// You can set the value of DEVPKEY_Device_Characteristics by using an INF AddReg directive that is included in the INF
+ /// DDInstall.HW section that installs a device.
+ ///
+ /// You can retrieve the value of DEVPKEY_Device_Characteristics by calling SetupDiGetDeviceProperty.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_Characteristics
+ /// property key. Instead, you can use the corresponding SPDRP_CHARACTERISTICS identifier to access the value of the property on
+ /// these earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows,
+ /// see Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-characteristics
+ [CorrespondingType(typeof(CM_FILE))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Characteristics = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 29);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_Children device property represents a list of the device instance IDs for the devices that are children of a
+ /// device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_Children
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// Not applicable
+ ///
+ ///
+ ///
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_Children.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not directly support this property. For information about how to retrieve
+ /// device relations properties on these earlier versions of Windows, see Retrieving Device Relations.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-children
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Children = new DEVPROPKEY(0x4340a6c5, 0x93fa, 0x4706, 0x97, 0x2c, 0x7b, 0x64, 0x80, 0x08, 0xa5, 0xa7, 9);
+
+ ///
+ ///
+ ///
+ /// The DEVPKEY_Device_Class device property represents the name of the device setup class that a device instance belongs to.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_Class
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_CLASS
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of the DEVPKEY_Device_Class property is set by the class-name value that is supplied by the Class directive in the
+ /// INF Version section of the INF file that installs a device.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_Class.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_Class property
+ /// key. Instead, you can use the corresponding SPDRP_CLASS identifier to access the value of the property on these earlier versions
+ /// of Windows. For information about how to access this property value on these earlier versions of Windows, see Accessing Device
+ /// Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-class
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Class = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 9);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_ClassGuid device property represents the GUID of the device setup class that a device instance belongs to.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_ClassGuid
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_GUID
+ ///
+ /// -
+ /// Property access
+ /// Read-only by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_CLASSGUID
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_ClassGuid is set by the INF ClassGUID directive that is supplied by the INF Version section
+ /// of the INF file that installs a device.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_ClassGuid.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_ClassGuid
+ /// property key. Instead, you can use the corresponding SPDRP_CLASSGUID identifier to access the value of the property on these
+ /// earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows, see
+ /// Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-classguid
+ [CorrespondingType(typeof(Guid))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_ClassGuid = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 10);
+
+ ///
+ /// The DEVPKEY_DEVICE_CompatibleIds device property represents the list of compatible identifiers for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_CompatibleIds
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Internal data format
+ /// "compatible-id1\0compatible-id2\0...compatible-idn\0\0"
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_COMPATIBLEIDS
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_DEVICE_CompatibleIds is set by the compatible-id entry values that are supplied for a device in the INF
+ /// Models section of the INF file that installs a device.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_DEVICE_CompatibleIds.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_CompatibleIds
+ /// property key. Instead, you can use the corresponding SPDRP_COMPATIBLEIDS identifier to access the value of the property on these
+ /// earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows, see
+ /// Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-compatibleids
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_CompatibleIds = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 4);
+
+ ///
+ /// The DEVPKEY_Device_ConfigFlags device property represents the configuration flags that are set for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_ConfigFlags
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_CONFIGFLAGS
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_ConfigFlags is set during a device installation to indicate the current configuration of a device.
+ ///
+ /// The configuration flags are for internal use only.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_ConfigFlags and call
+ /// SetupDiSetDeviceProperty to set DEVPKEY_Device_ConfigFlags.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-configflags
+ [CorrespondingType(typeof(CONFIGFLAG))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_ConfigFlags = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 12);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_ConfigurationId = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 7);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_ContainerId device property is used by the Plug and Play (PnP) manager to group one or more device nodes
+ /// (devnodes) into a device container that represents an instance of a physical device.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_ContainerId
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_GUID
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Starting with Windows 7, the PnP manager uses the device container and its identifier (ContainerID) to group one or more
+ /// devnodes that originated from and belong to each instance of a particular physical device. The ContainerID for a device instance
+ /// is referenced through the DEVPKEY_Device_ContainerId device property.
+ ///
+ ///
+ /// When you group all the devnodes that originated from an instance of a single device into containers, you accomplish the
+ /// following results:
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// -
+ ///
+ ///
+ ///
+ ///
+ /// The DEVPKEY_Device_ContainerId can be used to determine the device container grouping of devnodes in a system. For a given
+ /// devnode, you can determine all the devnodes that belong to the same container by completing the following steps:
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// -
+ ///
+ ///
+ ///
+ /// Note All devnodes that belong to a container on a given bus type must share the same ContainerID value.
+ /// For more information about ContainerIDs, see Container IDs.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-containerid
+ [CorrespondingType(typeof(Guid))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_ContainerId = new DEVPROPKEY(0x8c7ed206, 0x3f8a, 0x4827, 0xb3, 0xab, 0xae, 0x9e, 0x1f, 0xae, 0xfc, 0x6c, 2);
+
+ ///
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DebuggerSafe = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 12);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DependencyDependents = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 21);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DependencyProviders = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 20);
+
+ ///
+ /// The DEVPKEY_Device_DeviceDesc device property represents a description of a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DeviceDesc
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_DEVICEDESC
+ ///
+ /// -
+ /// Localized?
+ /// Yes
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_DeviceDesc is set by the device-description entry value that is supplied by the INF Models
+ /// section of the INF file that installs a device.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_DEVICE_DeviceDesc.
+ ///
+ /// You can retrieve the value of the DEVPKEY_NAME device instance property to retrieve the name of the device as it should
+ /// appear in a user interface item.
+ ///
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_DeviceDesc
+ /// property key. Instead, these earlier versions of Windows use the corresponding SPDRP_DEVICEDESC identifier to access the value
+ /// of the property. For information about how to access this property value on these earlier versions of Windows, see Accessing
+ /// Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-devicedesc
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DeviceDesc = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 2);
+
+ ///
+ /// The DEVPKEY_Device_DevNodeStatus device property represents the status of a device node (devnode).
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DevNodeStatus
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_DevNodeStatus is a bitwise OR of the DN_Xxx bit flags that are defined in Cfg.h.
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_DevNodeStatus.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not directly support this property. For information about how to access the
+ /// status of a device instance on these earlier versions of Windows, see Retrieving the Status and Problem Code for a Device Instance.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-devnodestatus
+ [CorrespondingType(typeof(DN))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DevNodeStatus = new DEVPROPKEY(0x4340a6c5, 0x93fa, 0x4706, 0x97, 0x2c, 0x7b, 0x64, 0x80, 0x08, 0xa5, 0xa7, 2);
+
+ ///
+ /// The DEVPKEY_Device_DevType device property represents the device type of a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DevType
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_DEVTYPE
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_DevType to the value of the DeviceType member of the DEVICE_OBJECT structure for
+ /// a device instance. The value of DEVPKEY_Device_DevType is one of the system-defined device type values that are listed in
+ /// Specifying Device Types.
+ ///
+ ///
+ /// You can set the value of DEVPKEY_Device_DevType by using an INF AddReg directive that is included in the INF
+ /// DDInstall.HW section in the INF file that installs a device.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_DevType.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_DevType property
+ /// key. Instead, you can use the corresponding SPDRP_DEVTYPE identifier to access the value of the property on these earlier
+ /// versions of Windows. For information about how to access this property value on these earlier versions of Windows, see Accessing
+ /// Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-devtype
+ [CorrespondingType(typeof(FILE_DEVICE))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DevType = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 27);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_DHP_Rebalance_Policy device property represents a value that indicates whether a device will participate in
+ /// resource rebalancing following a dynamic hardware partitioning (DHP) processor hot-add operation.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DHP_Rebalance_Policy
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by applications and services.
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// On a dynamically partitionable server that is running Windows Server 2008 or later versions of Windows Server, the operating
+ /// system initiates a system-wide resource rebalance whenever a new processor is dynamically added to the system. The
+ /// DEVPKEY_Device_DHP_Rebalance_Policy device property determines whether a device participates in such a resource rebalance. The
+ /// device participates in resource rebalancing under the following circumstances:
+ ///
+ ///
+ /// -
+ ///
+ /// The DEVPKEY_Device_DHP_Rebalance_Policy device property does not exist.
+ ///
+ ///
+ /// -
+ ///
+ /// The device property exists and the value of the device property is not set.
+ ///
+ ///
+ /// -
+ ///
+ /// The device property exists and the value of the device property is set to 2.
+ ///
+ ///
+ ///
+ ///
+ /// If the DEVPKEY_Device_DHP_Rebalance_Policy device property exists and the value of the property is set to 1, the device will not
+ /// participate in resource rebalancing when a new processor is dynamically added to the system.
+ ///
+ /// A device's device setup class is specified in the INF Version Section of the device's INF file.
+ ///
+ /// The default behavior for devices in the Network Adapter (Class = Net) device setup class is that members of the class do not
+ /// participate in resource rebalancing when a new processor is dynamically added to the system. The default behavior for devices in
+ /// all other device setup classes is that members participate in resource rebalancing when a new processor is dynamically added to
+ /// the system.
+ ///
+ ///
+ /// This device property does not affect whether a device will participate in a resource rebalance that is initiated for other reasons.
+ ///
+ /// You can access the DEVPKEY_Device_DHP_Rebalance_Policy property by calling SetupDiGetDeviceProperty and SetupDiSetDeviceProperty.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-dhp-rebalance-policy
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DHP_Rebalance_Policy = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 2);
+
+ ///
+ /// The DEVPKEY_Device_Driver device property represents the registry entry name of the driver key for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_Driver
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_DRIVER
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_Driver after it installs a driver for device.
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_Driver.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_Driver property
+ /// key. Instead, you can use the corresponding SPDRP_DRIVER identifier to access the value of the property on these earlier
+ /// versions of Windows. For information about how to access this property value on these earlier versions of Windows, see Accessing
+ /// Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-driver
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Driver = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 11);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_DriverCoInstallers device property represents a list of DLL names, and entry points in the DLLs, that are
+ /// registered as co-installers for a device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DriverCoInstallers
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Data format
+ /// "AbcCoInstall.dll,AbcCoInstallEntryPoint\0...AbcCoInstall.dll, AbcCoInstallEntryPoin\0\0"
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value identifier and registry value name
+ /// REGSTR_VAL_COINSTALLERS_32 CoInstallers32
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_DriverCoInstallers is supplied by the INF DDInstall.Coinstallers section in the INF file that
+ /// installs a device.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_DriverCoInstallers.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_Device_DriverCoInstallers property key. On these earlier versions of Windows, you can access the value of this property
+ /// by accessing the corresponding CoInstallers32 registry value under the software key for the device instance. For
+ /// information about how to access this property value on these earlier versions of Windows, see Accessing Device Driver Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-drivercoinstallers
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DriverCoInstallers = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 11);
+
+ ///
+ ///
+ /// The PKEY_Device_DriverDate device property represents the date of the driver that is currently installed for a device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DriverDate
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_FILETIME
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value identifier and registry value name
+ /// REGSTR_VAL_DRIVERDATEDATA DriverDateData
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_DriverDate is supplied by the INF DriverVer directive that is included in the INF Version
+ /// section of an INF file that installs a device or by a device-specific INF DriverVer directive that is included in the
+ /// INF DDInstall section that installs a device.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_DriverDate property.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_DriverDate
+ /// property key. On these earlier versions of Windows, you can access the value of this property by accessing the corresponding
+ /// DriverDateData registry value under the software key for the device instance. For information about how to access this
+ /// property value on these earlier versions of Windows, see Accessing Device Driver Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-driverdate
+ [CorrespondingType(typeof(FILETIME))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DriverDate = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 2);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_DriverDesc device property represents the description of the driver that is installed for a device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DriverDesc
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value identifier and registry value name
+ /// REGSTR_VAL_DRVDESC DriverDesc
+ ///
+ /// -
+ /// Localized?
+ /// Yes
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_DriverDesc is set by the device-description entry value that is supplied by the INF Models
+ /// section of the INF file that installs a device.
+ ///
+ ///
+ /// The value of DEVPKEY_Device_DriverDesc is not displayed in an end-user dialog box or used for any reason by the operating system.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_DriverDesc.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_LocationPaths
+ /// property key. On these earlier versions of Windows, you can access the value of this property by accessing the corresponding
+ /// DriverDesc registry value under the software key for the device instance. For information about how to access this
+ /// property value on these earlier versions of Windows, see Accessing Device Driver Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-driverdesc
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DriverDesc = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 4);
+
+ ///
+ /// The PKEY_Device_DriverInfPath device property represents the name of the INF file that installed a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DriverInfPath
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value identifier and registry value name
+ /// REGSTR_VAL_INFPATH InfPath
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_DriverInfPath. A copy of the INF file that installed a device is located in the system
+ /// INF file directory. The name of the INF file copy is OemNnn.inf, where Nnn is a decimal number from 0 through 9999.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_DriverInfPath.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_DriverInfPath
+ /// property key. On these earlier versions of Windows, you can access the value of this property by accessing the corresponding
+ /// InfPath registry value under the software key for the device instance. For information about how to access this property
+ /// value on these earlier versions of Windows, see Accessing Device Driver Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-driverinfpath
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DriverInfPath = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 5);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_DriverInfSection device property represents the name of the INF DDInstall section that installs the
+ /// driver for a device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DriverInfSection
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value identifier and registry value name
+ /// REGSTR_VAL_INFSECTION InfSection
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of the PKEY_Device_DriverInfSection property.
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of PKEY_Device_DriverInfSection.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the PKEY_Device_DriverInfSection
+ /// property key. On these earlier versions of Windows, you can access the value of this property by accessing the corresponding
+ /// InfSection registry value under the software key for the device instance. For information about how to access this
+ /// property value on these earlier versions of Windows, see Accessing Device Driver Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-driverinfsection
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DriverInfSection = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 6);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_DriverInfSectionExt device driver property represents the platform extension of the INF DDInstall
+ /// section that installs the driver for a device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DriverInfSectionExt
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value identifier and registry value name
+ /// REGSTR_VAL_INFSECTIONEXT InfSectionExt
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_DriverInfSectionExt.
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_DriverInfSectionExt.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_Device_DriverInfSectionExt property key. On these earlier versions of Windows, you can access the value of this property
+ /// by accessing the corresponding InfSectionExt registry value under the software key for the device instance. For
+ /// information about how to access this property value on these earlier versions of Windows, see Accessing Device Driver Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-driverinfsectionext
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DriverInfSectionExt = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 7);
+
+ ///
+ /// The DEVPKEY_Device_DriverLogoLevel device property represents the Microsoft Windows Logo level for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DriverLogoLevel
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_UINT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_DriverLogoLevel.
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_DriverLogoLevel.
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not support this property.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-driverlogolevel
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DriverLogoLevel = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 15);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DriverProblemDesc = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 11);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_DriverPropPageProvider device property represents the name of a DLL, and an entry point in the DLL, that is
+ /// registered as a property page provider for a device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DriverPropPageProvider
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value identifier and registry value name
+ /// REGSTR_VAL_ENUMPROPPAGES_32 EnumPropPages32
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// You can set the value of DEVPKEY_Device_DriverPropPageProvider by using an INF AddReg directive that is included the
+ /// INF DDInstall section of the INF file that installs a device.
+ ///
+ /// You can retrieve the value of DEVPKEY_Device_DriverPropPageProvider by calling SetupDiGetDeviceProperty.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_Device_DriverPropPageProvider property key. On these earlier versions of Windows, you can access the value of this
+ /// property by accessing the corresponding EnumPropPages32 registry value under the software key for the device instance.
+ /// For information about how to access this property value on these earlier versions of Windows, see Accessing Device Driver Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-driverproppageprovider
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DriverPropPageProvider = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 10);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_DriverProvider device property represents the name of the provider of the driver package for a device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DriverProvider
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value identifier and registry value name
+ /// REGSTR_VAL_PROVIDER_NAME ProviderName
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_DriverProvider is supplied by the Provider directive that is included in the INF Version
+ /// section of a device INF file.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_DriverProvider.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_DriverProvider
+ /// property key. On these earlier versions of Windows, you can access the value of this property by accessing the corresponding
+ /// ProviderName registry value under the software key for the device instance. For information about how to access this
+ /// property value on these earlier versions of Windows, see Accessing Device Driver Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-driverprovider
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DriverProvider = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 9);
+
+ ///
+ /// The DEVPKEY_Device_DriverRank device property represents the rank of the driver that is installed for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DriverRank
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_UINT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_DriverRank.
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_DriverRank.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_DriverRank
+ /// property key. For information about how to access this property on these earlier versions of Windows, see Accessing Device
+ /// Driver Properties.
+ ///
+ /// For information about driver rank, see How Windows Ranks Drivers.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-driverrank
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DriverRank = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 14);
+
+ ///
+ ///
+ /// The PKEY_Device_DriverVersion device property represents the version of the driver that is currently installed on a device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_DriverVersion
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value identifier and registry value name
+ /// REGSTR_VAL_DRIVERVERSION DriverVersion
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_DriverVersion is supplied by the INF DriverVer directive that is included in the INF
+ /// Version section of an INF file that installs a device or is supplied by a device-specific INF DriverVer directive
+ /// that is included in the INF DDInstall section that installs a device.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of PKEY_Device_DriverVersion.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_DriverVersion
+ /// property key. On these earlier versions of Windows, you can access the value of this property by accessing the corresponding
+ /// DriverVersion registry value under the software key for the device instance. For information about how to access this
+ /// property value on these earlier versions of Windows, see Accessing Device Driver Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-driverversion
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_DriverVersion = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 3);
+
+ ///
+ /// The DEVPKEY_Device_EjectionRelations device property represents the ejection relations for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_EjectionRelations
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// Not applicable
+ ///
+ ///
+ ///
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_EjectionRelations.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not directly support this property. For information about how to retrieve
+ /// device relations properties on these earlier versions of Windows, see Retrieving Device Relations.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-ejectionrelations
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_EjectionRelations = new DEVPROPKEY(0x4340a6c5, 0x93fa, 0x4706, 0x97, 0x2c, 0x7b, 0x64, 0x80, 0x08, 0xa5, 0xa7, 4);
+
+ ///
+ /// The DEVPKEY_Device_EnumeratorName device property represents the name of the enumerator for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_EnumeratorName
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_ENUMERATOR_NAME
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_EnumeratorName to the name of the enumerator for a device.
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_EnumeratorName.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_EnumeratorName
+ /// property key. Instead, you can use the corresponding SPDRP_ENUMERATOR_NAME identifier to access the value of the property on
+ /// these earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows,
+ /// see Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-enumeratorname
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_EnumeratorName = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 24);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_Exclusive device property represents a Boolean value that determines whether a device instance can be opened
+ /// for exclusive use.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_Exclusive
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_EXCLUSIVE
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of the DEVPKEY_Device_Exclusive property is DEVPROP_TRUE if the device can be opened for exclusive use. Otherwise, the
+ /// value of the property is DEVPROP_FALSE.
+ ///
+ ///
+ /// You can set the value of DEVPKEY_Device_Exclusive by using an INF AddReg directive that is included in the INF
+ /// DDInstall.HW section that installs a device.
+ ///
+ /// You can retrieve or set the value of DEVPKEY_Device_Exclusive by calling SetupDiGetDeviceProperty and SetupDiSetDeviceProperty.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_Exclusive
+ /// property key. Instead, you can use the corresponding SPDRP_EXCLUSIVE identifier to access the value of the property on these
+ /// earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows, see
+ /// Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-exclusive
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Exclusive = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 28);
+
+ ///
+ [CorrespondingType(typeof(ulong))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_ExtendedAddress = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 23);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_ExtendedConfigurationIds = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 15);
+
+ ///
+ [CorrespondingType(typeof(FILETIME))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_FirmwareDate = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 17);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_FirmwareRevision = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 19);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_FirmwareVersion = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 18);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_FirstInstallDate device property specifies the time stamp when the device instance was first installed in the system.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_FirstInstallDate
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_FILETIME
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers.
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_FirstInstallDate with the time stamp that specifies when the device instance was first
+ /// installed in the system.
+ ///
+ ///
+ /// Note Unlike the DEVPKEY_Device_InstallDate property, the value of the DEVPKEY_Device_FirstInstallDate property
+ /// does not change with each successive update of the device driver. For example, a driver that was updated through Windows Update
+ /// does not change the value of this property,
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_FirstInstallDate property.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-firstinstalldate
+ [CorrespondingType(typeof(FILETIME))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_FirstInstallDate = new DEVPROPKEY(0x83da6326, 0x97a6, 0x4088, 0x94, 0x53, 0xa1, 0x92, 0x3f, 0x57, 0x3b, 0x29, 101);
+
+ ///
+ /// The DEVPKEY_Device_FriendlyName device property represents the friendly name of a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_FriendlyName
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_FRIENDLYNAME
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// You can use the DEVPKEY_NAME device property instead of DEVPKEY_Device_FriendlyName to display the name that identifies a
+ /// device instance in a user interface display.
+ ///
+ ///
+ /// You can set the value of DEVPKEY_Device_FriendlyName by using an INF AddReg directive that is included in the INF
+ /// DDInstall.HW section in the INF file that installs a device.
+ ///
+ ///
+ /// You can retrieve the value of DEVPKEY_Device_FriendlyName by calling SetupDiGetDeviceProperty or you can set this
+ /// property by calling SetupDiSetDeviceProperty.
+ ///
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_FriendlyName
+ /// property key. Instead, you can use the corresponding SPDRP_FRIENDLYNAME identifier to access the value of the property on these
+ /// earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows, see
+ /// Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-friendlyname
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_FriendlyName = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 14);
+
+ ///
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_FriendlyNameAttributes = new DEVPROPKEY(0x80d81ea6, 0x7473, 0x4b0c, 0x82, 0x16, 0xef, 0xc1, 0x1a, 0x2c, 0x4c, 0x8b, 3);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_GenericDriverInstalled device property represents a Boolean value that indicates whether the driver installed
+ /// for a device instance provides only basic device functionality.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_GenericDriverInstalled
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_GenericDriverInstalled.
+ ///
+ /// The value of DEVPKEY_Device_GenericDriverInstalled is set to DEVPROP_TRUE to indicate that a basic driver is installed.
+ /// Otherwise, the value of the property is set to DEVPROP_FALSE.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_GenericDriverInstalled.
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not support this property.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-genericdriverinstalled
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_GenericDriverInstalled = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 18);
+
+ ///
+ /// The DEVPKEY_DEVICE_HardwareIds device property represents the list of hardware identifiers for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_HardwareIds
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Data format
+ /// "hw-id1\0hw-id2\0...hw-idn\0\0"
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_HARDWAREID
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_DEVICE_HardwareIds is set by the hw-id entry values for a device that are supplied by the INF Models
+ /// section of the INF file that installs a device.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_DEVICE_HardwareIds.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_DEVICE_HardwareIds
+ /// property key. Instead, you can use the corresponding SPDRP_HARDWAREID identifier to access the value of the property on these
+ /// earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows, see
+ /// Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-hardwareids
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_HardwareIds = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 3);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_HasProblem = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 6);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_InLocalMachineContainer = new DEVPROPKEY(0x8c7ed206, 0x3f8a, 0x4827, 0xb3, 0xab, 0xae, 0x9e, 0x1f, 0xae, 0xfc, 0x6c, 4);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_InstallDate device property specifies the time stamp when the device instance was last installed in the system.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_InstallDate
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_FILETIME
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers.
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_InstallDate with the time stamp that specifies when the device instance was last
+ /// installed in the system.
+ ///
+ ///
+ /// This time stamp value changes for each successive update of the device driver. For example, this time stamp reports the date and
+ /// time when the device driver was last updated through Windows Update.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_FirstInstallDate property.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-installdate
+ [CorrespondingType(typeof(FILETIME))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_InstallDate = new DEVPROPKEY(0x83da6326, 0x97a6, 0x4088, 0x94, 0x53, 0xa1, 0x92, 0x3f, 0x57, 0x3b, 0x29, 100);
+
+ ///
+ /// The DEVPKEY_Device_InstallState device property represents the installation state of a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_InstallState
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_UINT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_INSTALL_STATE
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_InstallState to one of the CM_INSTALL_STATE_Xxx values that are defined in Cfgmgr32.h.
+ /// The CM_INSTALL_STATE_Xxx values correspond to the DEVICE_INSTALL_STATE enumeration values.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_InstallState.
+ ///
+ /// Windows Server 2003 and Windows XP support this property, but do not support the DEVPKEY_Device_InstallState property key.
+ /// Instead, you can use the corresponding SPDRP_INSTALL_STATE identifier to access the value of the property on these earlier
+ /// versions of Windows. For information about how to access this property value on these earlier versions of Windows, see Accessing
+ /// Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-installstate
+ [CorrespondingType(typeof(CM_INSTALL_STATE))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_InstallState = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 36);
+
+ ///
+ /// The DEVPKEY_Device_InstanceId device property represents the device instance identifier of a device.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_InstanceId
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers.
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_InstanceId is set internally by Windows during the installation of a device instance.
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_InstanceId for a device instance.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_InstanceId
+ /// property key. For information about how to retrieve a device instance identifier on these earlier versions of Windows, see
+ /// Retrieving a Device Instance Identifier.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-instanceid
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_InstanceId = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 256);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_IsAssociateableByUserAction = new DEVPROPKEY(0x80d81ea6, 0x7473, 0x4b0c, 0x82, 0x16, 0xef, 0xc1, 0x1a, 0x2c, 0x4c, 0x8b, 7);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_IsPresent = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 5);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_IsRebootRequired = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 16);
+
+ ///
+ [CorrespondingType(typeof(FILETIME))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_LastArrivalDate = new DEVPROPKEY(0x83da6326, 0x97a6, 0x4088, 0x94, 0x53, 0xa1, 0x92, 0x3f, 0x57, 0x3b, 0x29, 102);
+
+ ///
+ [CorrespondingType(typeof(FILETIME))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_LastRemovalDate = new DEVPROPKEY(0x83da6326, 0x97a6, 0x4088, 0x94, 0x53, 0xa1, 0x92, 0x3f, 0x57, 0x3b, 0x29, 103);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_Legacy device property represents a Boolean value that indicates whether a device is a root-enumerated device
+ /// that the Plug and Play (PnP) manager automatically created when the non-PnP driver for the device was loaded.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_Legacy
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The PnP manager sets the value of DEVPKEY_Device_Reported to DEVPROP_TRUE if the PnP manager automatically created the device as
+ /// a root-enumerated device when the non-PnP driver for the device was loaded. Otherwise, the PnP manager sets the value of the
+ /// property to DEVPROP_FALSE.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_Legacy.
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not support this property.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-legacy
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Legacy = new DEVPROPKEY(0x80497100, 0x8c73, 0x48b9, 0xaa, 0xd9, 0xce, 0x38, 0x7e, 0x19, 0xc5, 0x6e, 3);
+
+ ///
+ /// The DEVPKEY_Device_LegacyBusType device property represents the legacy bus number of a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_LegacyBusType
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_LEGACYBUSTYPE
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_LegacyBusType to the value of the LegacyBusType member of the
+ /// PNP_BUS_INFORMATION structure that a bus driver returns in response to an IRP_MN_QUERY_BUS_INFORMATION request.
+ /// The value of DEVPKEY_Device_LegacyBusType is one of INTERFACE_TYPE enumerator values that are defined in Wdm.h and Ntddk.h.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_LegacyBusType.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_LegacyBusType
+ /// property key. Instead, you can use the corresponding SPDRP_LEGACYBUSTYPE identifier to access the value of the property on these
+ /// earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows, see
+ /// Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-legacybustype
+ [CorrespondingType(typeof(INTERFACE_TYPE))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_LegacyBusType = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 22);
+
+ ///
+ /// The DEVPKEY_Device_LocationInfo device property represents the bus-specific physical location of a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_LocationInfo
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_LOCATION_INFORMATION
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_LocationInfo to the value that the bus driver returns for a device instance in response
+ /// to an IRP_MN_QUERY_DEVICE_TEXT IRP.
+ ///
+ /// You can call SetupDiGetDeviceProperty and SetupDiGetDeviceProperty to retrieve and set the value of DEVPKEY_Device_LocationInfo.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_LocationInfo
+ /// property key. Instead, you can use the corresponding SPDRP_LOCATION_INFORMATION identifier to access the value of the property
+ /// on these earlier versions of Windows. For information about how to access this property value on these earlier versions of
+ /// Windows, see Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-locationinfo
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_LocationInfo = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 15);
+
+ ///
+ /// The DEVPKEY_Device_LocationPaths device property represents the location of a device instance in the device tree.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_LocationPaths
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_LOCATION_PATHS
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_LocationPaths.
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_LocationPaths.
+ ///
+ /// Windows Server 2003 supports this property, but does not support the DEVPKEY_Device_LocationPaths property key. Instead, you can
+ /// use the corresponding SPDRP_LOCATION_PATHS identifier to access the value of the property on Windows Server 2003. For
+ /// information about how to access this property value on Windows Server 2003, see Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-locationpaths
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_LocationPaths = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 37);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_LowerFilters device property represents a list of the service names of the lower-level filter drivers that
+ /// are installed for a device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_LowerFilters
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_LOWERFILTERS
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of the DEVPKEY_Device_LowerFilters property is set when a lower-level device filter driver is installed for a device.
+ /// For more information about how to install a device filter driver, see Installing a Filter Driver.
+ ///
+ /// You can call SetupDiGetDeviceProperty and SetupDiSetDeviceProperty to retrieve and set the value of DEVPKEY_Device_LowerFilters.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_LowerFilters
+ /// property key. Instead, you can use the corresponding SPDRP_LOWERFILTERS identifier to access the value of the property on these
+ /// earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows, see
+ /// Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-lowerfilters
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_LowerFilters = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 20);
+
+ ///
+ /// The DEVPKEY_DEVICE_Manufacturer device property represents the name of the manufacturer of a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_Manufacturer
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_MFG
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_DEVICE_Manufacturer is set by the manufacturer-identifier entry value for a device that is supplied by the
+ /// INF Manufacturer section of the INF file that installs a device.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_DEVICE_Manufacturer.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_Manufacturer
+ /// property key. Instead, you can use the corresponding SPDRP_MFG identifier to access the value of the property on these earlier
+ /// versions of Windows. For information about how to access this property value on these earlier versions of Windows, see Accessing
+ /// Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-manufacturer
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Manufacturer = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 13);
+
+ ///
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_ManufacturerAttributes = new DEVPROPKEY(0x80d81ea6, 0x7473, 0x4b0c, 0x82, 0x16, 0xef, 0xc1, 0x1a, 0x2c, 0x4c, 0x8b, 4);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_MatchingDeviceId device property represents the hardware ID or compatible ID that Windows uses to install a
+ /// device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_MatchingDeviceId
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value identifier and registry value name
+ /// REGSTR_VAL_MATCHINGDEVICEID MatchingDeviceId
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_MatchingDeviceId. The hardware IDs and compatible IDs for a device are supplied by the
+ /// device-description entries that are included in the INF Models section of the INF file that installs a device.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of PKEY_Device_MatchingDeviceId.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_MatchingDeviceId
+ /// property key. On these earlier versions of Windows, you can access the value of this property by accessing the corresponding
+ /// MatchingDeviceId registry value under the software key for the device instance. For information about how to access this
+ /// property value on these earlier versions of Windows, see Accessing Device Driver Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-matchingdeviceid
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_MatchingDeviceId = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 8);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Model = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 39);
+
+ ///
+ /// The DEVPKEY_Device_ModelId device property matches a device to a device metadata package.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_ModelId
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_GUID
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The DEVPKEY_Device_ModelId device property provides support for IHVs and OEMs to uniquely identify devices that share the same
+ /// manufacturer and model. By using a model identifier (ModelID), OEMs and IHVs can match the device model that they distribute to
+ /// their own branded device metadata package.
+ ///
+ ///
+ /// The DEVPKEY_Device_ModelId device property contains the value of the ModelID XML element from the device's metadata
+ /// package. When the device is installed, this PKEY is populated with the ModelID GUID value as reported by the device.
+ ///
+ /// For more information, see Device Metadata Packages.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-modelid
+ [CorrespondingType(typeof(Guid))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_ModelId = new DEVPROPKEY(0x80d81ea6, 0x7473, 0x4b0c, 0x82, 0x16, 0xef, 0xc1, 0x1a, 0x2c, 0x4c, 0x8b, 2);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_NoConnectSound device property represents a Boolean value that indicates whether to suppress the sound that
+ /// the Microsoft Windows operating system plays to indicate that a removable device arrived or was removed.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_NoConnectSound
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_NoConnectSound is set to DEVPROP_TRUE to suppress playing sound. Otherwise, the value of the
+ /// property is set to DEVPROP_FALSE.
+ ///
+ ///
+ /// The DEVPKEY_Device_NoConnectSound property is typically set by an INF AddProperty directive in the INF file for a device.
+ ///
+ /// You can call SetupDiGetDeviceProperty or SetupDiSetDeviceProperty to retrieve or set the value of DEVPKEY_Device_NoConnectSound.
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not support this property.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-noconnectsound
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_NoConnectSound = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 17);
+
+ ///
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Numa_Node = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 3);
+
+ ///
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Numa_Proximity_Domain = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 1);
+
+ ///
+ /// The DEVPKEY_Device_Parent device property represents the device instance identifier of the parent for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_Parent
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// Not applicable
+ ///
+ ///
+ ///
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_Parent property.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not directly support this property. For information about how to retrieve
+ /// device relations properties on these earlier versions of Windows, see Retrieving Device Relations.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-parent
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Parent = new DEVPROPKEY(0x4340a6c5, 0x93fa, 0x4706, 0x97, 0x2c, 0x7b, 0x64, 0x80, 0x08, 0xa5, 0xa7, 8);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_PDOName device property represents the name of the physical device object (PDO) that represents a device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_PDOName
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_PHYSICAL_DEVICE_OBJECT_NAME
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_PDOName to the name of the physical name object (PDO) that represents a device. For
+ /// more information about PDO names, see the DeviceName parameter that is used with the IoCreateDevice routine.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_PDOName.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_PDOName property
+ /// key. Instead, you can use the corresponding SPDRP_PHYSICAL_DEVICE_OBJECT_NAME identifier to access the value of the property on
+ /// these earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows,
+ /// see Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-pdoname
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_PDOName = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 16);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_PhysicalDeviceLocation device property encapsulates the physical device location information provided by a
+ /// device's firmware to Windows.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_PhysicalDeviceLocation
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BINARY
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_PHYSICAL_DEVICE_LOCATION
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_PhysicalDeviceLocation with the physical device location information. The format of the
+ /// information is defined in the ACPI 4.0a Specification, section 6.1.6.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_PhysicalDeviceLocation.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-physicaldevicelocation
+ [CorrespondingType(typeof(byte[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_PhysicalDeviceLocation = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 9);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_PostInstallInProgress = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 13);
+
+ ///
+ /// The DEVPKEY_Device_PowerData device property represents power information about a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_PowerData
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BINARY
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_DEVICE_POWER_DATA
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_PowerData. The value of DEVPKEY_Device_PowerData contains a CM_POWER_DATA structure.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_PowerData.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_PowerData
+ /// property key. Instead, you can use the corresponding SPDRP_DEVICE_POWER_DATA identifier to access the value of the property on
+ /// these earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows,
+ /// see Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-powerdata
+ [CorrespondingType(typeof(CM_POWER_DATA))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_PowerData = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 32);
+
+ ///
+ /// The DEVPKEY_Device_PowerRelations device property represents the power relations for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_PowerRelations
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// Not applicable
+ ///
+ ///
+ ///
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_PowerRelations.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not directly support this property. For information about how to retrieve
+ /// device relations properties on these earlier versions of Windows, see Retrieving Device Relations.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-powerrelations
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_PowerRelations = new DEVPROPKEY(0x4340a6c5, 0x93fa, 0x4706, 0x97, 0x2c, 0x7b, 0x64, 0x80, 0x08, 0xa5, 0xa7, 6);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_PresenceNotForDevice = new DEVPROPKEY(0x80d81ea6, 0x7473, 0x4b0c, 0x82, 0x16, 0xef, 0xc1, 0x1a, 0x2c, 0x4c, 0x8b, 5);
+
+ ///
+ /// The DEVPKEY_Device_ProblemCode device property represents the problem code for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_ProblemCode
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_ProblemCode is one of the CM_PROB_Xxx problem codes that are defined in Cfg.h.
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_ProblemCode.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not directly support this property. For information about how to access the
+ /// problem code for a device instance on these earlier versions of Windows, see Retrieving the Status and Problem Code for a Device Instance.
+ ///
+ ///
+ /// For info on finding problem status in Device Manager or the kernel debugger, see Retrieving the Status and Problem Code for a
+ /// Device Instance.
+ ///
+ /// For additional information that may help with the problem code, see DEVPKEY_Device_ProblemStatus.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-problemcode
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_ProblemCode = new DEVPROPKEY(0x4340a6c5, 0x93fa, 0x4706, 0x97, 0x2c, 0x7b, 0x64, 0x80, 0x08, 0xa5, 0xa7, 3);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_ProblemStatus device property is an NTSTATUS value that is set when a problem code is generated. It provides
+ /// more context on why the problem code was set. If no additional context is available, ProblemStatus shows as STATUS_SUCCESS (0x00000000).
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_ProblemStatus
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_NTSTATUS
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// For info on finding problem status in Device Manager or the kernel debugger, see Retrieving the Status and Problem Code for a
+ /// Device Instance.
+ ///
+ /// For more info about NTSTATUS values, see Using NTSTATUS Values.
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_ProblemStatus.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-problemstatus
+ [CorrespondingType(typeof(NTStatus))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_ProblemStatus = new DEVPROPKEY(0x4340a6c5, 0x93fa, 0x4706, 0x97, 0x2c, 0x7b, 0x64, 0x80, 0x08, 0xa5, 0xa7, 12);
+
+ ///
+ /// The DEVPKEY_Device_RemovalPolicy device property represents the current removal policy for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_RemovalPolicy
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_REMOVAL_POLICY
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_RemovalPolicy to one of the CM_REMOVAL_POLICY_Xxx values that are defined in Cfgmgr32.h.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_RemovalPolicy property.
+ ///
+ /// Windows Server 2003 and Windows XP support this property, but do not support the DEVPKEY_Device_RemovalPolicy property key.
+ /// Instead, you can use the corresponding SPDRP_REMOVAL_POLICY identifier to access the value of the property on these earlier
+ /// versions of Windows. For information about how to access this property value on these earlier versions of Windows, see Accessing
+ /// Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-removalpolicy
+ [CorrespondingType(typeof(CM_REMOVAL_POLICY))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_RemovalPolicy = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 33);
+
+ ///
+ /// The DEVPKEY_Device_RemovalPolicyDefault device property represents the default removal policy for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_RemovalPolicyDefault
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_REMOVAL_POLICY_HW_DEFAULT
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_RemovalPolicyDefault to one of the CM_REMOVAL_POLICY_Xxx values that are defined in Cfgmgr32.h.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_RemovalPolicyDefault.
+ ///
+ /// Windows Server 2003 and Windows XP support this property, but do not support the DEVPKEY_Device_RemovalPolicyDefault property
+ /// key. Instead, you can use the corresponding SPDRP_REMOVAL_POLICY_HW_DEFAULT identifier to access the value of the property on
+ /// these earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows,
+ /// see Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-removalpolicydefault
+ [CorrespondingType(typeof(CM_REMOVAL_POLICY))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_RemovalPolicyDefault = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 34);
+
+ ///
+ /// The DEVPKEY_Device_RemovalPolicyOverride device property represents the removal policy override for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_RemovalPolicyOverride
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_REMOVAL_POLICY_OVERRIDE
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_RemovalPolicyOverride is one of the CM_REMOVAL_POLICY_Xxx values that are defined in Cfgmgr32.h.
+ ///
+ /// You can retrieve the value of DEVPKEY_Device_RemovalPolicyOverride by calling SetupDiGetDeviceProperty or you can also
+ /// set this value by calling SetupDiSetDeviceProperty.
+ ///
+ ///
+ /// Windows Server 2003 and Windows XP support this property, but do not support the DEVPKEY_Device_RemovalPolicyOverride property
+ /// key. Instead, you can use the corresponding SPDRP_REMOVAL_POLICY_OVERRIDE identifier to access the value of the property on
+ /// these earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows,
+ /// see Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-removalpolicyoverride
+ [CorrespondingType(typeof(CM_REMOVAL_POLICY))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_RemovalPolicyOverride = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 35);
+
+ ///
+ /// The DEVPKEY_Device_RemovalRelations device property represents the removal relations for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_RemovalRelations
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// Not applicable
+ ///
+ ///
+ ///
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_RemovalRelations.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not directly support this property. For information about how to retrieve
+ /// device relations properties on these earlier versions of Windows, see Retrieving Device Relations.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-removalrelations
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_RemovalRelations = new DEVPROPKEY(0x4340a6c5, 0x93fa, 0x4706, 0x97, 0x2c, 0x7b, 0x64, 0x80, 0x08, 0xa5, 0xa7, 5);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_Reported device property represents a Boolean value that indicates whether a device instance is a
+ /// root-enumerated device that the driver for the device reported to the Plug and Play (PnP) manager by calling IoReportDetectedDevice.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_Reported
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The PnP manager sets the value of DEVPKEY_Device_Reported to DEVPROP_TRUE if the device is a root-enumerated device that the
+ /// driver for the device reported to the PnP manager by calling IoReportDetectedDevice. Otherwise, the PnP manager sets the value
+ /// of the property to DEVPROP_FALSE.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_Reported.
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not support this property.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-reported
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Reported = new DEVPROPKEY(0x80497100, 0x8c73, 0x48b9, 0xaa, 0xd9, 0xce, 0x38, 0x7e, 0x19, 0xc5, 0x6e, 2);
+
+ ///
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_ReportedDeviceIdsHash = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 8);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_ResourcePickerExceptions device property represents the resource conflicts that are allowed for a device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_ResourcePickerExceptions
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value identifier and registry value name
+ /// REGSTR_VAL_RESOURCE_PICKER_EXCEPTIONS ResourcePickerExceptions
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// You can set the value of DEVPKEY_Device_ResourcePickerExceptions by using an INF AddReg directive that is included in the
+ /// INF DDInstall section of the INF file that installs a device.
+ ///
+ /// You can retrieve the value of DEVPKEY_Device_ResourcePickerExceptions by calling SetupDiGetDeviceProperty.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_Device_ResourcePickerExceptions property key. On these earlier versions of Windows, you can access the value of this
+ /// property by accessing the corresponding ResourcePickerExceptions registry value under the software key for the device
+ /// instance. For information about how to access this property value on these earlier versions of Windows, see Accessing Device
+ /// Driver Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-resourcepickerexceptions
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_ResourcePickerExceptions = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 13);
+
+ ///
+ /// The DEVPKEY_Device_ResourcePickerTags device property represents resource picker tags for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_ResourcePickerTags
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value identifier and registry value name
+ /// REGSTR_VAL_RESOURCE_PICKER_TAGS ResourcePickerTags
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// You can set the value of DEVPKEY_Device_ResourcePickerTags by using an INF AddReg directive that is included in the
+ /// INF DDInstall section of the INF file that installs a device.
+ ///
+ /// You can retrieve the value of PKEY_Device_ResourcePickerTags by calling SetupDiGetDeviceProperty.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_Device_ResourcePickerTags property key. On these earlier versions of Windows, you can access the value of this property
+ /// by accessing the corresponding ResourcePickerTags registry value under the software key for the device instance. For
+ /// information about how to access this property value on these earlier versions of Windows, see Accessing Device Driver Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-resourcepickertags
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_ResourcePickerTags = new DEVPROPKEY(0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 12);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_SafeRemovalRequired device property represents a Boolean value that indicates whether a hot-plug device
+ /// instance requires safe removal from the computer.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_SafeRemovalRequired
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// If this property for a hot-plug device instance has a value of DEVPROP_TRUE, the device instance requires safe removal from the
+ /// computer. In this case, Windows displays the Safely Remove Hardware icon in the notification area on the right side of
+ /// the taskbar. When the user clicks this icon, the system starts the Safely Remove Hardware program. By using this program,
+ /// the user can instruct the system to prepare the device instance for removal before it can be surprise-removed from the computer.
+ ///
+ ///
+ /// Note If the device instance is a removable media device, such as an optical disk drive, the device instance must have
+ /// media inserted and must have the DEVPKEY_Device_SafeRemovalRequired property value of DEVPROP_TRUE. If both are true, the device
+ /// instance is displayed in the Safely Remove Hardware program.
+ ///
+ ///
+ /// Windows Plug and Play (PnP) determines that the hot-plug device instance requires safe removal from the system if the following
+ /// are true:
+ ///
+ ///
+ /// -
+ ///
+ /// The device instance is currently connected to the system.
+ ///
+ ///
+ /// -
+ ///
+ /// The device instance is either started or can be ejected automatically by the system.
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// The CM_DEVCAP_SURPRISEREMOVALOK device capability bit for the device instance is not set. For more information about device
+ /// capabilities, see SetupDiGetDeviceRegistryProperty.
+ ///
+ ///
+ ///
+ /// -
+ ///
+ /// The device instance does not have the DEVPKEY_Device_SafeRemovalRequiredOverride device property set to DEVPROP_FALSE.
+ ///
+ /// Note PnP unconditionally determines that the hot-plug device requires safe removal if the
+ /// DEVPKEY_Device_SafeRemovalRequiredOverride device property is set to DEVPROP_TRUE.
+ ///
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// The device instance is either directly removable from its parent device instance or has a removable ancestor in its device tree.
+ ///
+ ///
+ ///
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_SafeRemovalRequired.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-saferemovalrequired
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_SafeRemovalRequired = new DEVPROPKEY(0xafd97640, 0x86a3, 0x4210, 0xb6, 0x7c, 0x28, 0x9c, 0x41, 0xaa, 0xbe, 0x55, 2);
+
+ ///
+ /// The DEVPKEY_Device_SafeRemovalRequiredOverride device property represents the safe removal override for the device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_SafeRemovalRequiredOverride
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// This device property can be used to override the result of the heuristic that Windows Plug and Play (PnP) uses to calculate the
+ /// value of the DEVPKEY_Device_SafeRemovalRequired device property. This override is performed as follows:
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// If the DEVPKEY_Device_SafeRemovalRequiredOverride device property is set to DEVPROP_TRUE and the device instance is removable or
+ /// has a removable ancestor, PnP sets the DEVPKEY_Device_SafeRemovalRequired device property to DEVPROP_TRUE and does not use the heuristic.
+ ///
+ ///
+ /// Note A device instance is considered removable if its removable device capability is set. For more information, see
+ /// Overview of the Removable Device Capability.
+ ///
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// If the DEVPKEY_Device_SafeRemovalRequiredOverride device property is set to DEVPROP_TRUE and the device instance (or an
+ /// ancestor) is not removable, PnP sets the DEVPKEY_Device_SafeRemovalRequired to DEVPROP_FALSE and does not use the heuristic.
+ ///
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// If the DEVPKEY_Device_SafeRemovalRequiredOverride device property is either not set or set to DEVPROP_FALSE, PnP sets the
+ /// DEVPKEY_Device_SafeRemovalRequired device property to a value that is determined by using the heuristic.
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// You can retrieve the value of DEVPKEY_Device_SafeRemovalRequiredOverride by calling SetupDiGetDeviceProperty. You can
+ /// also set this value by calling SetupDiSetDeviceProperty.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-saferemovalrequiredoverride
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_SafeRemovalRequiredOverride = new DEVPROPKEY(0xafd97640, 0x86a3, 0x4210, 0xb6, 0x7c, 0x28, 0x9c, 0x41, 0xaa, 0xbe, 0x55, 3);
+
+ ///
+ /// The DEVPKEY_Device_Security device property represents a security descriptor structure for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_Security
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_SECURITY_DESCRIPTOR
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_SECURITY
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// You can set the value of DEVPKEY_Device_Security by using an INF AddReg directive that is included in the INF
+ /// DDInstall.HW section of the INF file that installs a device.
+ ///
+ ///
+ /// You can retrieve the value of DEVPKEY_Device_Security by calling SetupDiGetDeviceProperty or you can set this property by
+ /// calling SetupDiSetDeviceProperty.
+ ///
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_Security property
+ /// key. Instead, you can use the corresponding SPDRP_SECURITY identifier to access the value of the property on these earlier
+ /// versions of Windows. For information about how to access this property value on these earlier versions of Windows, see Accessing
+ /// Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-security
+ [CorrespondingType(typeof(byte[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Security = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 25);
+
+ ///
+ /// The DEVPKEY_Device_SecuritySDS device property represents a security descriptor string for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_SecuritySDS
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_SECURITY_SDS
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// You can retrieve the value of DEVPKEY_Device_SecuritySDS by calling SetupDiGetDeviceProperty or you can also set his
+ /// value by calling SetupDiSetDeviceProperty.
+ ///
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_SecuritySDS
+ /// property key. Instead, you can use the corresponding SPDRP_SECURITY_SDS identifier to access the value of the property on these
+ /// earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows, see
+ /// Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-securitysds
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_SecuritySDS = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 26);
+
+ ///
+ /// The DEVPKEY_Device_Service device property represents the name of the service that is installed for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_Service
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_SERVICE
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_Device_Service is set by the service-name entry value that is supplied by the INF AddService
+ /// directive in the INF file that installs a service for a device.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_Service.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_Service property
+ /// key. Instead, you can use the corresponding SPDRP_SERVICE identifier to access the value of the property on these earlier
+ /// versions of Windows. For information about how to access this property value on these earlier versions of Windows, see Accessing
+ /// Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-service
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Service = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 6);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_SessionId device property represents a value that indicates the Terminal Services sessions that a device
+ /// instance can be accessed in.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_SessionId
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_UINT32
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by applications and services.
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The Terminal Server feature supports Plug and Play (PnP) device redirection. Device redirection determines whether a device can
+ /// be accessed by applications and services within all Terminal Services sessions or whether a device can be accessed only within a
+ /// particular Terminal Services session. The accessibility of a device within a Terminal Services session is determined by the
+ /// setting of DEVPKEY_Device_SessionId for a device, as follows:
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// If the DEVPKEY_Device_SessionId property does not exist, or the property exists, but the value of the property is not set, the
+ /// device can be accessed in all active Terminal Services sessions.
+ ///
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// If the DEVPKEY_Device_SessionId property exists and the value of the property is set to a nonzero Terminal Services l session
+ /// identifier, the device can be accessed only in the Terminal Services session indicated by the Terminal Services session identifier.
+ ///
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// If the DEVPKEY_Device_SessionId property exists and the value of the property is set to zero, the device can be accessed only by
+ /// services. Session zero is a special session in which only services can run.
+ ///
+ ///
+ ///
+ ///
+ /// You can access the DEVPKEY_Device_SessionId property by calling SetupDiGetDeviceProperty and SetupDiSetDeviceProperty.
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not support this property.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-sessionid
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_SessionId = new DEVPROPKEY(0x83da6326, 0x97a6, 0x4088, 0x94, 0x53, 0xa1, 0x92, 0x3f, 0x57, 0x3b, 0x29, 6);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_ShowInUninstallUI = new DEVPROPKEY(0x80d81ea6, 0x7473, 0x4b0c, 0x82, 0x16, 0xef, 0xc1, 0x1a, 0x2c, 0x4c, 0x8b, 8);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_Siblings device property represents a list of the device instance IDs for the devices that are siblings of a
+ /// device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_Siblings
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// Not applicable
+ ///
+ ///
+ ///
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_Siblings.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not directly support this property. For information about how to retrieve
+ /// device relations properties on these earlier versions of Windows, see Retrieving Device Relations.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-siblings
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Siblings = new DEVPROPKEY(0x4340a6c5, 0x93fa, 0x4706, 0x97, 0x2c, 0x7b, 0x64, 0x80, 0x08, 0xa5, 0xa7, 10);
+
+ ///
+ [CorrespondingType(typeof(int))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_SignalStrength = new DEVPROPKEY(0x80d81ea6, 0x7473, 0x4b0c, 0x82, 0x16, 0xef, 0xc1, 0x1a, 0x2c, 0x4c, 0x8b, 6);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_SoftRestartSupported = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 22);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_Stack = new DEVPROPKEY(0x540b947e, 0x8b40, 0x45bc, 0xa8, 0xa2, 0x6a, 0x0b, 0x89, 0x4c, 0xbd, 0xa2, 14);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_TransportRelations = new DEVPROPKEY(0x4340a6c5, 0x93fa, 0x4706, 0x97, 0x2c, 0x7b, 0x64, 0x80, 0x08, 0xa5, 0xa7, 11);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_UINumber device property represents a number for the device instance that can be displayed in a user
+ /// interface item.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_UINumber
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_UI_NUMBER
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Windows sets the value of DEVPKEY_Device_UINumber to the value of the UINumber member of the DEVICE_CAPABILITIES
+ /// structure for a device instance. The bus driver for a device instance returns this value in response to an
+ /// IRP_MN_QUERY_CAPABILITIES request.
+ ///
+ /// You can call SetupDiGetDeviceProperty to retrieve the value of DEVPKEY_Device_UINumber.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_UINumber property
+ /// key. Instead, you can use the corresponding SPDRP_UI_NUMBER identifier to access the value of the property on these earlier
+ /// versions of Windows. For information about how to access this property value on these earlier versions of Windows, see Accessing
+ /// Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-uinumber
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_UINumber = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 18);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_UINumberDescFormat device property represents a printf-compatible format string that you should use to
+ /// display the value of the DEVPKEY_DEVICE_UINumber device property for a device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_UINumberDescFormat
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_UI_NUMBER_DESC_FORMAT
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// You can retrieve the value of DDEVPKEY_Device_UINumberDescFormat by calling SetupDiGetDeviceProperty or you can also set
+ /// this value by calling SetupDiSetDeviceProperty.
+ ///
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_Device_UINumberDescFormat property key. Instead, you can use the corresponding SPDRP_UI_NUMBER_DESC_FORMAT identifier to
+ /// access the value of the property on these earlier versions of Windows. For information about how to access this property value
+ /// on these earlier versions of Windows, see Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-uinumberdescformat
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_UINumberDescFormat = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 31);
+
+ ///
+ ///
+ /// The DEVPKEY_Device_UpperFilters device property represents a list of the service names of the upper-level filter drivers that
+ /// are installed for a device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_Device_UpperFilters
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPDRP_Xxx identifier
+ /// SPDRP_UPPERFILTERS
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of the DEVPKEY_Device_UpperFilters property is set when an upper-level device filter driver is installed for a device.
+ /// For more information about how to install a device filter driver, see Installing a Filter Driver.
+ ///
+ /// You can call SetupDiGetDeviceProperty and SetupDiGetDeviceProperty to retrieve and set the value of DEVPKEY_Device_UpperFilters.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_Device_UpperFilters
+ /// property key. Instead, you can use the corresponding SPDRP_UPPERFILTERS identifier to access the value of the property on these
+ /// earlier versions of Windows. For information about how to access this property value on these earlier versions of Windows, see
+ /// Accessing Device Instance SPDRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-device-upperfilters
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_Device_UpperFilters = new DEVPROPKEY(0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 19);
+
+ ///
+ ///
+ /// The DEVPKEY_DeviceClass_Characteristics device property represents the default device characteristics of all devices in a device
+ /// setup class.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_Characteristics
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_INT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers after a device setup class is installed
+ ///
+ /// -
+ /// Corresponding SPCRP_Xxx identifier
+ /// SPCRP_CHARACTERISTICS
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// DEVPKEY_DeviceClass_Characteristics should only be set when a device setup class is installed and not modified later. For
+ /// information about how to install a device setup class and setting this property, see INF ClassInstall32 Section and the
+ /// information about the registry entry value DeviceCharacteristics that is provided in the "Special value-entry-name
+ /// Keywords" section of INF AddReg Directive.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_Characteristics.
+ ///
+ /// Windows Server 2003 and Windows XP support this property, but do not support the DEVPKEY_DeviceClass_Characteristics property
+ /// key. On these earlier versions of Windows, you can use the SPCRP_CHARACTERISTICS identifier to access the value of this
+ /// property. For information about how to access the value of this property, see Retrieving Device Setup Class SPCRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-characteristics
+ [CorrespondingType(typeof(CM_FILE))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_Characteristics = new DEVPROPKEY(0x4321918b, 0xf69e, 0x470d, 0xa5, 0xde, 0x4d, 0x88, 0xc7, 0x5a, 0xd2, 0x4b, 29);
+
+ ///
+ ///
+ /// The DEVPKEY_DeviceClass_ClassCoInstallers device property represents a list of the class co-installers that are installed for a
+ /// device setup class.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_ClassCoInstallers
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Data format
+ /// "coinstaller1.dll,coinstaller1-entry-point\0…coinstallerN.dll,coinstallerN-entry-point\0\0"
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value name
+ /// HLM\System\CurrentControlSet\Control\CoDeviceInstallers{device-setup-class-guid}
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// Each class installer in the class co-installer list is identified by its DLL and entry point.
+ /// For information about how to install a class co-installer, see Registering a Class Co-installer.
+ ///
+ /// You can retrieve the value of DEVPKEY_DeviceClass_ClassCoInstallers by calling SetupDiGetClassProperty or
+ /// SetupDiGetClassPropertyEx. You can set DEVPKEY_DeviceClass_ClassCoInstallers by calling SetupDiSetClassProperty or SetupDiSetClassPropertyEx.
+ ///
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_DeviceClass_ClassCoInstallers property key. For information about how to access the corresponding information on these
+ /// earlier versions of Windows, see Accessing the Co-installers Registry Entry Value of a Device Setup Class.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-classcoinstallers
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_ClassCoInstallers = new DEVPROPKEY(0x713d1703, 0xa2e2, 0x49f5, 0x92, 0x14, 0x56, 0x47, 0x2e, 0xf3, 0xda, 0x5c, 2);
+
+ ///
+ /// The DEVPKEY_DeviceClass_ClassInstaller device property represents the class installer for a device setup class.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_ClassInstaller
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Data format
+ /// "class-installer.dll,class-entry-point"
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value name
+ /// Installer32
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_DeviceClass_ClassInstaller is the value of the Installer32 registry value under the class registry
+ /// key. This entry contains the name of the class installer DLL and the installer's entry point for the device setup class.
+ ///
+ ///
+ /// The Installer32 registry value for a device setup class can be set by an INF AddReg directive that is included in
+ /// the INF ClassInstall32 Section of the INF file that installs a device setup class.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_ClassInstaller.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_DeviceClass_ClassInstaller property key. You can access the value of this property by accessing the corresponding
+ /// Installer32 registry value under the class registry key. For information about how to access value entries under the
+ /// class registry key, see Accessing Registry Entry Values Under the Class Registry Key.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-classinstaller
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_ClassInstaller = new DEVPROPKEY(0x259abffc, 0x50a7, 0x47ce, 0xaf, 0x8, 0x68, 0xc9, 0xa7, 0xd7, 0x33, 0x66, 5);
+
+ ///
+ /// The DEVPKEY_DeviceClass_ClassName device property represents the class name of a device setup class.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_ClassName
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_DeviceClass_ClassName is set by the Class directive that is included in the INF Version
+ /// section that installs the device setup class.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_ClassName.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_DeviceClass_ClassName
+ /// property key. For information about how to access the name of a device setup class on Windows Server 2003, Windows XP, and
+ /// Windows 2000, see Accessing the Friendly Name and Class Name of a Device Setup Class.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-classname
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_ClassName = new DEVPROPKEY(0x259abffc, 0x50a7, 0x47ce, 0xaf, 0x8, 0x68, 0xc9, 0xa7, 0xd7, 0x33, 0x66, 3);
+
+ ///
+ /// The DEVPKEY_DeviceClass_DefaultService device property represents the name of the default service for a device setup class.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_DefaultService
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value name
+ /// Default Service
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// If a default service is installed for a device setup class and a device does not install a device-specific service, the INF
+ /// ClassInstall32.Services section of the INF file that installs the class installs the class default service for the device.
+ ///
+ ///
+ /// The value of DEVPKEY_DeviceClass_DefaultService is the value of the Default Service registry value under the class
+ /// registry key.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_DefaultService.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_DeviceClass_DefaultService property key. You can access the value of this property by accessing the corresponding
+ /// Default Service registry value under the class registry key. For information about how to access value entries under the
+ /// class registry key, see Accessing Registry Entry Values Under the Class Registry Key.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-defaultservice
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_DefaultService = new DEVPROPKEY(0x259abffc, 0x50a7, 0x47ce, 0xaf, 0x8, 0x68, 0xc9, 0xa7, 0xd7, 0x33, 0x66, 11);
+
+ ///
+ /// The DEVPKEY_DeviceClass_DevType device property represents the default device type for a device setup class.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_DevType
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_UINT32
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers after a device setup class is installed
+ ///
+ /// -
+ /// Corresponding SPCRP_Xxx identifier
+ /// SPCRP_DEVTYPE
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// You can set the value of DEVPKEY_DeviceClass_DevType when an installation application installs a device setup class. For
+ /// information about how to install a device setup class and setting this property, see INF ClassInstall32 Section and the
+ /// information about the registry entry value DeviceType that is provided in the "Special value-entry-name Keywords" section
+ /// of INF AddReg Directive.
+ ///
+ ///
+ /// The value of DEVPKEY_DeviceClass_DevType is one of the FILE_DEVICE_Xxx values that are defined in Wdm.h and Ntddk.h. For more
+ /// information about device types, see the DeviceType parameter of the IoCreateDevice function.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_DevType.
+ ///
+ /// Windows Server 2003 and Windows XP support this property, but do not support the DEVPKEY_DeviceClass_DevType property key. On
+ /// these earlier versions of Windows, you can use the SPCRP_DEVTYPE identifier to access the value of this property. For
+ /// information about how to access the value of this property, see Retrieving Device Setup Class SPCRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-devtype
+ [CorrespondingType(typeof(FILE_DEVICE))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_DevType = new DEVPROPKEY(0x4321918b, 0xf69e, 0x470d, 0xa5, 0xde, 0x4d, 0x88, 0xc7, 0x5a, 0xd2, 0x4b, 27);
+
+ ///
+ ///
+ /// The DEVPKEY_DeviceClass_DHPRebalanceOptOut device property represents a value that indicates whether an entire device class will
+ /// participate in resource rebalancing after a dynamic hardware partitioning (DHP) processor hot-add operation has occurred.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_DHPRebalanceOptOut
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by applications and services.
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ /// Remarks
+ ///
+ /// On a dynamically partitionable server that is running Windows Server 2008 or later versions of Windows Server, the operating
+ /// system initiates a system-wide resource rebalance whenever a new processor is dynamically added to the system. The device class
+ /// participates in resource rebalancing under the following circumstances:
+ ///
+ ///
+ /// -
+ ///
+ /// The DEVPKEY_DeviceClass_DHPRebalanceOptOut device property does not exist.
+ ///
+ ///
+ /// -
+ ///
+ /// The device property exists and the value of the device property is not set.
+ ///
+ ///
+ /// -
+ ///
+ /// The device property exists and the value of the device property is set to FALSE.
+ ///
+ ///
+ ///
+ ///
+ /// If the DEVPKEY_DeviceClass_DHPRebalanceOptOut device property exists and the value of the property is set to TRUE, the
+ /// device class does not participate in resource rebalancing when a new processor is dynamically added to the system.
+ ///
+ /// A device's device setup class is specified in the INF Version Section of the device's INF file.
+ ///
+ /// The default value for this property for the Network Adapter (Class = Net) is TRUE. The default value for this property
+ /// for all other device setup classes is FALSE.
+ ///
+ ///
+ /// This device property does not affect whether a device class participates in a resource rebalance that is initiated for other reasons.
+ ///
+ /// You can access the DEVPKEY_DeviceClass_DHPRebalanceOptOut property by calling SetupDiGetClassProperty and SetupDiSetClassProperty.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-dhprebalanceoptout
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_DHPRebalanceOptOut = new DEVPROPKEY(0xd14d3ef3, 0x66cf, 0x4ba2, 0x9d, 0x38, 0x0d, 0xdb, 0x37, 0xab, 0x47, 0x01, 2);
+
+ ///
+ ///
+ /// The DEVPKEY_DeviceClass_Exclusive device property represents a Boolean flag that indicates whether devices that are members of a
+ /// device setup class are exclusive devices.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_Exclusive
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers after a device setup class is installed
+ ///
+ /// -
+ /// Corresponding SPCRP_Xxx identifier
+ /// SPCRP_EXCLUSIVE
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// You can set the value of DEVPKEY_DeviceClass_Exclusive when an installation application installs a device setup class. For
+ /// information about how to install a device setup class and setting this property, see INF ClassInstall32 Section and the
+ /// information about the registry value Exclusive that is provided in the "Special value-entry-name Keywords" section of
+ /// INF AddReg Directive.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_Exclusive.
+ ///
+ /// Windows Server 2003 and Windows XP support this property, but do not support the DEVPKEY_DeviceClass_Exclusive property key. On
+ /// these earlier versions of Windows, you can use the SPCRP_EXCLUSIVE identifier to access the value of this property. For
+ /// information about how to access the value of this property, see Retrieving Device Setup Class SPCRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-exclusive
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_Exclusive = new DEVPROPKEY(0x4321918b, 0xf69e, 0x470d, 0xa5, 0xde, 0x4d, 0x88, 0xc7, 0x5a, 0xd2, 0x4b, 28);
+
+ ///
+ /// The DEVPKEY_DeviceClass_Icon device property represents the icon for a device setup class.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_Icon
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_DeviceClass_Icon is set by an INF AddReg directive that is included in the INF ClassInstall32
+ /// section that installs the class. To set the value of DEVPKEY_DeviceClass_Icon, use an AddReg directive to set the
+ /// Icon registry entry value for the class.
+ ///
+ ///
+ /// The Icon entry value is an integer number in string format. If the number is negative, the absolute value of the number
+ /// is the resource identifier of the icon in setupapi.dll. If the number is positive, the number is the resource identifier of the
+ /// icon in the class installer DLL, if there is a class installer, or the class property page provider, if there is no class
+ /// installer and there is a property page provider. A value of zero is not valid.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_Icon.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_DeviceClass_Icon
+ /// property key. For information about how to access the mini-icon for a device setup class on Windows Server 2003, Windows XP, and
+ /// Windows 2000, see Accessing Icon Properties of a Device Setup Class.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-icon
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_Icon = new DEVPROPKEY(0x259abffc, 0x50a7, 0x47ce, 0xaf, 0x8, 0x68, 0xc9, 0xa7, 0xd7, 0x33, 0x66, 4);
+
+ ///
+ /// The DEVPKEY_DeviceClass_IconPath device property represents an icon list for a device setup class.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_IconPath
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value name
+ /// IconPath
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_IconPath.
+ ///
+ /// A DEVPKEY_DeviceClass_IconPath value is a REG_MULTI_SZ-typed list of icon resource specifiers in the format that is used by the
+ /// Windows shell. The format of an icon resource specifier is "executable-file-path,resource-identifier," where
+ /// executable-file-path contains the fully qualified path of the file on a computer that contains the icon resource and
+ /// resource-identifier specifies an integer that identifies the resource. For example, the icon resource specifier
+ /// "%SystemRoot%\system32\DLL1.dll,-12" contains the executable file path "%SystemRoot%\system32\DLL1.dll" and the resource
+ /// identifier "-12".
+ ///
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not support this property. For information about how to access icon
+ /// information for a device setup class on these versions of Windows, see Accessing Icon Properties of a Device Setup Class.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-iconpath
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_IconPath = new DEVPROPKEY(0x259abffc, 0x50a7, 0x47ce, 0xaf, 0x8, 0x68, 0xc9, 0xa7, 0xd7, 0x33, 0x66, 12);
+
+ ///
+ ///
+ /// The DEVPKEY_DeviceClass_LowerFilters device property represents a list of the service names of the lower-level filter drivers
+ /// that are installed for a device setup class.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_LowerFilters
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Data format
+ /// "service-name1\0service-name2\0…service-nameN\0\0"
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers after a class filter is installed
+ ///
+ /// -
+ /// Corresponding SPCRP_Xxx identifier
+ /// SPCRP_LOWERFILTERS
+ ///
+ /// -
+ /// Corresponding registry value name
+ /// LowerFilters
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_DeviceClass_LowerFilters is set when a class filter driver is installed. For more information about how to
+ /// install a class filter driver, see Installing a Filter Driver and INF ClassInstall32 Section.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_LowerFilters.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_DeviceClass_LowerFilters
+ /// property key. On these earlier versions of Windows, you can access the value of this property by accessing the corresponding
+ /// LowerFilters registry value under the class registry key. For information about how to access this property value on
+ /// these earlier versions of Windows, see Accessing Registry Entry Values Under the Class Registry Key.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-lowerfilters
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_LowerFilters = new DEVPROPKEY(0x4321918b, 0xf69e, 0x470d, 0xa5, 0xde, 0x4d, 0x88, 0xc7, 0x5a, 0xd2, 0x4b, 20);
+
+ ///
+ /// The DEVPKEY_DeviceClass_Name device property represents the friendly name of a device setup class.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_Name
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_DeviceClass_Name is set by an INF AddReg directive that is included in the INF ClassInstall32
+ /// section that installs the class. To set the friendly name for a class, use an AddReg directive to set the
+ /// (Default) registry entry value for the class.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_Name.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_DeviceClass_Name
+ /// property key. For information about how to access the friendly name of a device setup class on Windows Server 2003, Windows XP,
+ /// and Windows 2000, see Accessing the Friendly Name and Class Name of a Device Setup Class.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-name
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_Name = new DEVPROPKEY(0x259abffc, 0x50a7, 0x47ce, 0xaf, 0x8, 0x68, 0xc9, 0xa7, 0xd7, 0x33, 0x66, 2);
+
+ ///
+ ///
+ /// The DEVPKEY_DeviceClass_NoDisplayClass device property represents a Boolean flag that controls whether devices in a device setup
+ /// class are displayed by the Device Manager.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_NoDisplayClass
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value name
+ /// NoDisplayClass
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// If the value of DEVPKEY_DeviceClass_NoDisplayClass is set to DEVPROP_TRUE, Device Manager does not display devices in the device
+ /// setup class. If this value is not set to DEVPROP_TRUE, the Device Manager does display devices in the device setup class.
+ ///
+ ///
+ /// The NoDisplayClass registry value for a device setup class can be set by an INF AddReg directive that is included
+ /// in the INF ClassInstall32 section of the INF file that installs the class.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_NoDisplayClass.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_DeviceClass_NoDisplayClass property key. You can access the value of this property by accessing the corresponding
+ /// NoDisplayClass registry value under the class registry key. For information about how to access value entries under the
+ /// class registry key, see Accessing Registry Entry Values Under the Class Registry Key.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-nodisplayclass
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_NoDisplayClass = new DEVPROPKEY(0x259abffc, 0x50a7, 0x47ce, 0xaf, 0x8, 0x68, 0xc9, 0xa7, 0xd7, 0x33, 0x66, 8);
+
+ ///
+ ///
+ /// The DEVPKEY_DeviceClass_NoInstallClass device setup class property represents a Boolean flag that controls whether devices in a
+ /// device setup class are displayed in the Add Hardware Wizard.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_NoInstallClass
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value name
+ /// NoInstallClass
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Setting the value of DEVPKEY_DeviceClass_NoInstallClass to DEVPROP_TRUE indicates that installation of devices in the class does
+ /// not require end-user interaction. If this value is not set to DEVPROP_TRUE, the Add Hardware Wizard does display devices for the
+ /// device setup class.
+ ///
+ ///
+ /// The NoInstallClass registry value for a device setup class can be set by an INF AddReg directive that is included
+ /// in the INF ClassInstall32 section of the INF file that installs the class.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_NoInstallClass.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_DeviceClass_NoInstallClass property key. You can access the value of this property by accessing the corresponding
+ /// NoInstallClass registry value under the class registry key. For information about how to access value entries under the
+ /// class registry key, see Accessing Registry Entry Values Under the Class Registry Key.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-noinstallclass
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_NoInstallClass = new DEVPROPKEY(0x259abffc, 0x50a7, 0x47ce, 0xaf, 0x8, 0x68, 0xc9, 0xa7, 0xd7, 0x33, 0x66, 7);
+
+ ///
+ ///
+ /// The DEVPKEY_DeviceClass_NoUseClass device property represents a Boolean flag that controls whether the Plug and Play (PnP)
+ /// manager and SetupAPI use the device setup class.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_NoUseClass
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value name
+ /// NoUseClass
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// If the value of DEVPKEY_DeviceClass_NoUseClass is set to 1, the PnP manager and SetupAPI do not use the device setup
+ /// class. Otherwise, they do use the device setup class.
+ ///
+ ///
+ /// The NoUseClass registry value for a device setup class is set by an INF AddReg directive that is included in the
+ /// INF ClassInstall32 section of the INF file that installs the class.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_NoUseClass.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_DeviceClass_NoUseClass
+ /// property key. You can access the value of this property by accessing the corresponding NoUseClass registry value under
+ /// the class registry key. For information about how to access value entries under the class registry key, see Accessing Registry
+ /// Entry Values Under the Class Registry Key.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-nouseclass
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_NoUseClass = new DEVPROPKEY(0x259abffc, 0x50a7, 0x47ce, 0xaf, 0x8, 0x68, 0xc9, 0xa7, 0xd7, 0x33, 0x66, 10);
+
+ ///
+ /// The DEVPKEY_DeviceClass_PropPageProvider device property represents the property page provider for a device setup class.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_PropPageProvider
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Data format
+ /// "prop-provider.dll,provider-entry-point"
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value name
+ /// EnumPropPages32
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_DeviceClass_PropPageProvider is the value of the EnumPropPages32 registry value under the class
+ /// registry key. This value contains the name of the class property page provider DLL and the provider's entry point for the device
+ /// setup class.
+ ///
+ ///
+ /// The EnumPropPages32 registry value for a device setup class can set by an INF AddReg directive that is included in
+ /// the INF ClassInstall32 section of the INF file that installs the class.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_PropPageProvider.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_DeviceClass_PropPageProvider property key. You can access the value of this property by accessing the corresponding
+ /// EnumPropPages32 registry value under the class registry key. For information about how to access value entries under the
+ /// class registry key, see Accessing Registry Entry Values Under the Class Registry Key.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-proppageprovider
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_PropPageProvider = new DEVPROPKEY(0x259abffc, 0x50a7, 0x47ce, 0xaf, 0x8, 0x68, 0xc9, 0xa7, 0xd7, 0x33, 0x66, 6);
+
+ ///
+ /// The DEVPKEY_DeviceClass_Security device property represents a security descriptor structure for a device setup class.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_Security
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_SECURITY_DESCRIPTOR
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPCRP_Xxx identifier
+ /// SPCRP_SECURITY
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// You can set the value of DEVPKEY_DeviceClass_Security either during or after an installation application installs a device setup
+ /// class. For more information about how to set this property, see Creating Secure Device Installations.
+ ///
+ ///
+ /// You can retrieve the value of DEVPKEY_DeviceClass_Security by calling SetupDiGetClassProperty or
+ /// SetupDiGetClassPropertyEx. You can set DEVPKEY_DeviceClass_Security by calling SetupDiSetClassProperty or SetupDiSetClassPropertyEx.
+ ///
+ ///
+ /// Windows Server 2003 and Windows XP support this property, but do not support the DEVPKEY_DeviceClass_Security property key. On
+ /// these earlier versions of Windows, you can use the SPCRP_SECURITY identifier to access the value of this property. For
+ /// information about how to access the value of this property, see Retrieving Device Setup Class SPCRP_Xxx Properties and Setting
+ /// Device Setup Class SPCRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-security
+ [CorrespondingType(typeof(byte[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_Security = new DEVPROPKEY(0x4321918b, 0xf69e, 0x470d, 0xa5, 0xde, 0x4d, 0x88, 0xc7, 0x5a, 0xd2, 0x4b, 25);
+
+ ///
+ /// The DEVPKEY_DeviceClass_SecuritySDS device property represents a security descriptor string for a device setup class.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_SecuritySDS
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding SPCRP_Xxx identifier
+ /// SPCRP_SECURITY_SDS
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// You can set the value of DEVPKEY_DeviceClass_SecuritySDS either during or after an installation application installs a device
+ /// setup class. For more information about how to set this property, see Creating Secure Device Installations.
+ ///
+ ///
+ /// You can retrieve the value of DEVPKEY_DeviceClass_SecuritySDS by calling SetupDiGetClassProperty or
+ /// SetupDiGetClassPropertyEx. You can set DEVPKEY_DeviceClass_SecuritySDS by calling SetupDiSetClassProperty or SetupDiSetClassPropertyEx.
+ ///
+ ///
+ /// Windows Server 2003 and Windows XP support this property, but do not support the DEVPKEY_DeviceClass_SecuritySDS property key.
+ /// On these earlier versions of Windows, you can use the SPCRP_SECURITY_SDS identifier to access the value of this property. For
+ /// information about how to access the value of this property, see Retrieving Device Setup Class SPCRP_Xxx Properties and Setting
+ /// Device Setup Class SPCRP_Xxx Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-securitysds
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_SecuritySDS = new DEVPROPKEY(0x4321918b, 0xf69e, 0x470d, 0xa5, 0xde, 0x4d, 0x88, 0xc7, 0x5a, 0xd2, 0x4b, 26);
+
+ ///
+ ///
+ /// The DEVPKEY_DeviceClass_SilentInstall device property represents a Boolean flag that controls whether devices in a device setup
+ /// class should be installed, if possible, without displaying any user interface items.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_SilentInstall
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value name
+ /// SilentInstall
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// If the value of DEVPKEY_DeviceClass_SilentInstall is set to DEVPROP_TRUE, Windows installs a driver for a device without
+ /// displaying any user interface items if the driver is already preinstalled in the driver store. Otherwise, Windows does not
+ /// suppress the display of user interface items.
+ ///
+ ///
+ /// The SilentInstall registry value for a device setup class can be set by an INF AddReg directive that is included
+ /// in the INF ClassInstall32 section of the INF file that installs the class.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_SilentInstall.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_DeviceClass_SilentInstall property key. You can access the value of this property by accessing the corresponding
+ /// SilentInstall registry value under the class registry key. For information about how to access value entries under the
+ /// class registry key, see Accessing Registry Entry Values Under the Class Registry Key.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-silentinstall
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_SilentInstall = new DEVPROPKEY(0x259abffc, 0x50a7, 0x47ce, 0xaf, 0x8, 0x68, 0xc9, 0xa7, 0xd7, 0x33, 0x66, 9);
+
+ ///
+ ///
+ /// The DEVPKEY_DeviceClass_UpperFilters device property represents a list of the service names of the upper-level filter drivers
+ /// that are installed for a device setup class.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceClass_UpperFilters
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Data format
+ /// "service-name1\0service-name2\0…service-nameN\0\0"
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers after a class filter is installed
+ ///
+ /// -
+ /// Corresponding SPCRP_Xxx identifier
+ /// SPCRP_UPPERFILTERS
+ ///
+ /// -
+ /// Corresponding registry value name
+ /// UpperFilters
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The value of DEVPKEY_DeviceClass_UpperFilters is set when a class filter driver is installed. For more information about how to
+ /// install a class filter driver, see Installing a Filter Driver and INF ClassInstall32 Section.
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_DeviceClass_UpperFilters.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_DeviceClass_UpperFilters
+ /// property key. On these earlier versions of Windows, you can access the value of this property by accessing the corresponding
+ /// UpperFilters registry value under the class registry key. For information about how to access this property value on
+ /// these earlier versions of Windows, see Accessing Registry Entry Values Under the Class Registry Key.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceclass-upperfilters
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceClass_UpperFilters = new DEVPROPKEY(0x4321918b, 0xf69e, 0x470d, 0xa5, 0xde, 0x4d, 0x88, 0xc7, 0x5a, 0xd2, 0x4b, 19);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_Address = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 51);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_AlwaysShowDeviceAsConnected = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 101);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_AssociationArray = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 80);
+
+ ///
+ [CorrespondingType(typeof(Guid))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_BaselineExperienceId = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 78);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_Category = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 90);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_Category_Desc_Plural = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 92);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_Category_Desc_Singular = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 91);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_Category_Icon = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 93);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_CategoryGroup_Desc = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 94);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_CategoryGroup_Icon = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 95);
+
+ ///
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_ConfigFlags = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 105);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_CustomPrivilegedPackageFamilyNames = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 107);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_DeviceDescription1 = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 81);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_DeviceDescription2 = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 82);
+
+ ///
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_DeviceFunctionSubRank = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 100);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_DiscoveryMethod = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 52);
+
+ ///
+ [CorrespondingType(typeof(Guid))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_ExperienceId = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 89);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_FriendlyName = new DEVPROPKEY(0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 12288);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_HasProblem = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 83);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_Icon = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 57);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_InstallInProgress = new DEVPROPKEY(0x83da6326, 0x97a6, 0x4088, 0x94, 0x53, 0xa1, 0x92, 0x3f, 0x57, 0x3b, 0x29, 9);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_IsAuthenticated = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 54);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_IsConnected = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 55);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_IsDefaultDevice = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 86);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_IsDeviceUniquelyIdentifiable = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 79);
+
+ // DE
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_IsEncrypted = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 53);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_IsLocalMachine = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 70);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_IsMetadataSearchInProgress = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 72);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_IsNetworkDevice = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 85);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_IsNotInterestingForDisplay = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 74);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_IsPaired = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 56);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_IsRebootRequired = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 108);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_IsSharedDevice = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 84);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_IsShowInDisconnectedState = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 68);
+
+ ///
+ [CorrespondingType(typeof(FILETIME))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_Last_Connected = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 67);
+
+ ///
+ [CorrespondingType(typeof(FILETIME))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_Last_Seen = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 66);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_LaunchDeviceStageFromExplorer = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 77);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_LaunchDeviceStageOnDeviceConnect = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 76);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_Manufacturer = new DEVPROPKEY(0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 8192);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_MetadataCabinet = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 87);
+
+ ///
+ [CorrespondingType(typeof(byte[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_MetadataChecksum = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 73);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_MetadataPath = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 71);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_ModelName = new DEVPROPKEY(0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 8194);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_ModelNumber = new DEVPROPKEY(0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 8195);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_PrimaryCategory = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 97);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_PrivilegedPackageFamilyNames = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 106);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_RequiresPairingElevation = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 88);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_RequiresUninstallElevation = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 99);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_UnpairUninstall = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 98);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceContainer_Version = new DEVPROPKEY(0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 65);
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceDisplay_AlwaysShowDeviceAsConnected = DEVPKEY_DeviceContainer_AlwaysShowDeviceAsConnected;
+
+ ///
+ ///
+ /// The DEVPKEY_DeviceDisplay_Category device property represents one or more functional categories that apply to a device instance.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceDisplay_Category
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers.
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Device categories for a physical device are specified through the DeviceCategory XML element in a device metadata
+ /// package. Each instance of that device in a system inherits the device categories for that physical device.
+ ///
+ ///
+ /// Each physical device can have one or more functional categories specified in the device metadata package. Each category is used
+ /// by Windows Devices and Printers to group the device instance into one of the recognized device categories.
+ ///
+ ///
+ /// Multifunction devices would typically identify multiple functional categories for each hardware function that the device
+ /// supports. For example, a multifunction device could identify functional categories for printer, fax, scanner, and removable
+ /// storage device functionality.
+ ///
+ ///
+ /// The first functional category string in the DEVPROP_TYPE_STRING_LIST specifies the physical device's primary functional
+ /// category. The primary functional category is defined by the independent hardware vendor (IHV) to specify how the device is
+ /// advertised, packaged, sold, and ultimately identified by users.
+ ///
+ ///
+ /// If the DEVPKEY_DeviceDisplay_Category device property specifies more than one functional category string, the remaining strings
+ /// that follow the first string specifies the physical device's secondary functional categories.
+ ///
+ ///
+ /// The Devices and Printers user interface in Control Panel displays the primary and secondary functional categories of the
+ /// device instance. These categories are displayed in the order that is specified in the DEVPKEY_DeviceDisplay_Category device property.
+ ///
+ /// You can access the DEVPKEY_DeviceDisplay_Category property by calling SetupDiGetDeviceProperty.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-devicedisplay-category
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceDisplay_Category = DEVPKEY_DeviceContainer_Category;
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceDisplay_DiscoveryMethod = DEVPKEY_DeviceContainer_DiscoveryMethod;
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceDisplay_IsNetworkDevice = DEVPKEY_DeviceContainer_IsNetworkDevice;
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceDisplay_IsNotInterestingForDisplay = DEVPKEY_DeviceContainer_IsNotInterestingForDisplay;
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceDisplay_IsShowInDisconnectedState = DEVPKEY_DeviceContainer_IsShowInDisconnectedState;
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceDisplay_RequiresUninstallElevation = DEVPKEY_DeviceContainer_RequiresUninstallElevation;
+
+ ///
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceDisplay_UnpairUninstall = DEVPKEY_DeviceContainer_UnpairUninstall;
+
+ ///
+ /// The DEVPKEY_DeviceInterface_ClassGuid device property represents the GUID that identifies a device interface class.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceInterface_ClassGuid
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_GUID
+ ///
+ /// -
+ /// Property access
+ /// Read-only by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The format of {device-interface-class} key value is "{nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}", where each n is a hexadecimal digit.
+ ///
+ /// You can call SetupDiGetDeviceInterfaceProperty to retrieve the value of DEVPKEY_DeviceInterface_ClassGuid.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_DeviceInterface_ClassGuid property key. For information about how to retrieve the class GUID of a device interface on
+ /// these earlier versions of Windows, see the information about how to use SetupDiEnumDeviceInterfaces that is provided in
+ /// Accessing Device Interface Properties.
+ ///
+ ///
+ /// For information about how to install and accessing device interfaces, see Device Interface Classes and the INF AddInterface Directive.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceinterface-classguid
+ [CorrespondingType(typeof(Guid))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceInterface_ClassGuid = new DEVPROPKEY(0x026e516e, 0xb814, 0x414b, 0x83, 0xcd, 0x85, 0x6d, 0x6f, 0xef, 0x48, 0x22, 4);
+
+ ///
+ ///
+ /// The DeviceInterfaceEnabled device property represents a Boolean flag that indicates whether a device interface is enabled.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceInterface_Enabled
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read-only by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// If the value of DEVPKEY_DeviceInterface_Enabled is DEVPROP_TRUE, the interface is enabled. Otherwise, the interface is not enabled.
+ ///
+ /// You can call SetupDiGetDeviceInterfaceProperty to retrieve the value of DEVPKEY_DeviceInterface_Enabled.
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the DEVPKEY_DeviceInterface_Enabled
+ /// property key. For information about how to retrieve the activity status of a device interface on these earlier versions of
+ /// Windows, see the information about how to use SetupDiEnumDeviceInterfaces that is provided in Accessing Device Interface Properties.
+ ///
+ /// For more information about device interfaces, see Device Interface Classes and the INF AddInterface Directive.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceinterface-enabled
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceInterface_Enabled = new DEVPROPKEY(0x026e516e, 0xb814, 0x414b, 0x83, 0xcd, 0x85, 0x6d, 0x6f, 0xef, 0x48, 0x22, 3);
+
+ ///
+ /// The DEVPKEY_DeviceInterface_FriendlyName device property represents the friendly name of a device interface.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceInterface_FriendlyName
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Corresponding registry value name
+ /// FriendlyName
+ ///
+ /// -
+ /// Localized?
+ /// Yes
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The FriendlyName registry value for a device interface class is set by an INF AddInterface directive that is
+ /// included in the INF DDInstall.Interface section of the INF file that installs a device interface.
+ ///
+ ///
+ /// Windows sets the value of the DEVPKEY_NAME device property for an interface to the value of
+ /// DEVPKEY_DeviceInterface_FriendlyName. To identify a device interface in a user interface item, use the value of DEVPKEY_NAME for
+ /// the device interface instead of the value of DEVPKEY_DeviceInterface_FriendlyName.
+ ///
+ ///
+ /// You can retrieve the value of the DEVPKEY_DeviceInterface_FriendlyName by calling SetupDiGetDeviceInterfaceProperty and
+ /// set it by calling SetupDiSetDeviceInterfaceProperty.
+ ///
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_DeviceInterface_FriendlyName property key. You can access the value of this property by accessing the corresponding
+ /// FriendlyName registry entry value for the device interface. For information about how to access a registry entry value
+ /// for a device interface, see Accessing Device Interface Properties.
+ ///
+ /// For information about device interfaces, see Device Interface Classes and the INF AddInterface Directive.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceinterface-friendlyname
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceInterface_FriendlyName = new DEVPROPKEY(0x026e516e, 0xb814, 0x414b, 0x83, 0xcd, 0x85, 0x6d, 0x6f, 0xef, 0x48, 0x22, 2);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceInterface_ReferenceString = new DEVPROPKEY(0x026e516e, 0xb814, 0x414b, 0x83, 0xcd, 0x85, 0x6d, 0x6f, 0xef, 0x48, 0x22, 5);
+
+ ///
+ ///
+ /// The DEVPKEY_DeviceInterface_Restricted device interface property indicates that the device interface on which it is present and
+ /// set to TRUE, should be treated with privileged access by system components that honor the setting.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceInterface_Restricted
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_BOOLEAN
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ /// You can call SetupDiGetDeviceInterfaceProperty to retrieve the value of DEVPKEY_DeviceInterface_Restricted.
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceinterface-restricted
+ [CorrespondingType(typeof(bool))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceInterface_Restricted = new DEVPROPKEY(0x026e516e, 0xb814, 0x414b, 0x83, 0xcd, 0x85, 0x6d, 0x6f, 0xef, 0x48, 0x22, 6);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceInterface_SchematicName = new DEVPROPKEY(0x026e516e, 0xb814, 0x414b, 0x83, 0xcd, 0x85, 0x6d, 0x6f, 0xef, 0x48, 0x22, 9);
+
+ ///
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceInterface_UnrestrictedAppCapabilities = new DEVPROPKEY(0x026e516e, 0xb814, 0x414b, 0x83, 0xcd, 0x85, 0x6d, 0x6f, 0xef, 0x48, 0x22, 8);
+
+ ///
+ ///
+ /// The DEVPKEY_DeviceInterfaceClass_DefaultInterface device property represents the symbolic link name of the default device
+ /// interface for a device interface class.
+ ///
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DeviceInterfaceClass_DefaultInterface
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read and write access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// No
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// For information about how to install and using device interfaces, see Device Interface Classes and the INF AddInterface Directive.
+ ///
+ ///
+ /// You can retrieve the value of DEVPKEY_DeviceInterfaceClass_DefaultInterface by calling SetupDiGetDeviceInterfaceProperty.
+ /// You can set DEVPKEY_DeviceInterfaceClass_DefaultInterface by calling SetupDiSetDeviceInterfaceProperty.
+ ///
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 support this property, but do not support the
+ /// DEVPKEY_DeviceInterfaceClass_DefaultInterface property key. For information about how to access the default interface of a
+ /// device interface class on these earlier versions of Windows, see Accessing Device Interface Class Properties.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-deviceinterface-defaultinterface
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceInterfaceClass_DefaultInterface = new DEVPROPKEY(0x14c83a99, 0x0b3f, 0x44b7, 0xbe, 0x4c, 0xa1, 0x78, 0xd3, 0x99, 0x05, 0x64, 2);
+
+ ///
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DeviceInterfaceClass_Name = new DEVPROPKEY(0x14c83a99, 0x0b3f, 0x44b7, 0xbe, 0x4c, 0xa1, 0x78, 0xd3, 0x99, 0x05, 0x64, 3);
+
+ ///
+ [CorrespondingType(typeof(uint))]
+ public static readonly DEVPROPKEY DEVPKEY_DevQuery_ObjectType = new DEVPROPKEY(0x13673f42, 0xa3d6, 0x49f6, 0xb4, 0xda, 0xae, 0x46, 0xe0, 0xc5, 0x23, 0x7c, 2);
+
+ ///
+ /// The DEVPKEY_DrvPkg_BrandingIcon device property represents a list of icons that associate a device instance with a vendor.
+ ///
+ ///
+ /// Property key
+ /// DEVPKEY_DrvPkg_BrandingIcon
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// Yes
+ ///
+ ///
+ ///
+ ///
+ /// A branding icon can be specified as an .ico file or as a resource within an executable file.
+ /// The format of an icon list is the same as that described for the DEVPKEY_DrvPkg_Icon device property.
+ ///
+ /// You can set the value of DEVPKEY_DrvPkg_BrandingIcon by an INF AddProperty directive that is included in the INF
+ /// DDInstall section of the INF file that installs a device. You can retrieve the value of DEVPKEY_DrvPkg_BrandingIcon by
+ /// calling SetupDiGetDeviceProperty.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-drvpkg-brandingicon
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DrvPkg_BrandingIcon = new DEVPROPKEY(0xcf73bb51, 0x3abf, 0x44a2, 0x85, 0xe0, 0x9a, 0x3d, 0xc7, 0xa1, 0x21, 0x32, 7);
+
+ ///
+ ///
+ /// The DEVPKEY_DrvPkg_DetailedDescription device property represents a detailed description of the capabilities of a device instance.
+ ///
+ ///
+ ///
+ /// Property key
+ /// DEVPKEY_DrvPkg_DetailedDescription
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Data format
+ /// Limited set of XML tags
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// Yes
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The detailed description string is in XML format. XML format makes it possible for Windows to format the display of the
+ /// information based on the following subset of supported Hypertext Markup Language (HTML) tags. The operation of these tags
+ /// resembles the operation of HTML tags.
+ ///
+ /// Heading level tags <h1>, <h2>, <h3>
+ /// List tags <ul>, <ol>, <li>
+ /// Paragraph tag <p>
+ ///
+ /// You can set the value of DEVPKEY_DrvPkg_DetailedDescription by an INF AddProperty directive that is included in the
+ /// INF DDInstall section of the INF file that installs the device. You can retrieve the value of
+ /// DEVPKEY_DrvPkg_DetailedDescription by calling SetupDiGetDeviceProperty.
+ ///
+ ///
+ /// The following is an example of how to use an INF AddProperty directive to set the value of
+ /// DEVPKEY_DrvPkg_DetailedDescription for a device instance that is installed by an INF DDInstall section "SampleDDInstallSection":
+ ///
+ ///
+ /// [SampleDDinstallSection] ... AddProperty=SampleAddPropertySection ... [SampleAddPropertySection] DeviceDetailedDescription,,,,"<xml><h1>Microsoft DiscoveryCam 530</h1><h2>Overview<h2>The Microsoft DiscoveryCam is great.<p>Really.<p><h2>Features</h2>The Microsoft DiscoveryCam has three features.<ol><li>Feature 1</li><li>Feature 2</li><li>Feature 3</li></ol></xml>" ...
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-drvpkg-detaileddescription
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DrvPkg_DetailedDescription = new DEVPROPKEY(0xcf73bb51, 0x3abf, 0x44a2, 0x85, 0xe0, 0x9a, 0x3d, 0xc7, 0xa1, 0x21, 0x32, 4);
+
+ ///
+ /// The DEVPKEY_DrvPkg_DocumentationLink device property represents a URL to the documentation for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DrvPkg_DocumentationLink
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// Yes
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The documentation link URL should be a link to a file that contains information about a device. This property is intended to
+ /// provide Web-accessible documentation for a device. The file can be an HTML page, a .pdf file, a .doc file, or other file type.
+ /// The only restriction is that all the documentation content must be contained within the URL-specified file. For example, an
+ /// *.htm file that is self-contained is valid, an *.htm file that refers to other graphics files is not valid, and an *.mta Web
+ /// archive file that contains referenced graphic files is valid.
+ ///
+ ///
+ /// The URL can contain parameters. For example, the following URL contains a prod parameter that supplies the value
+ /// "DSC530", a rev parameter that supplies the value "34", and a type parameter that supplies the value "doc":
+ ///
+ ///
+ /// http://www.microsoft.com/redirect?prod=DSC530&rev=34&type=docs
+ ///
+ ///
+ /// Microsoft does not provide Web hosting or redirection for a webpage that is specified by a DEVPKEY_DrvPkg_DocumentationLink
+ /// property value. The URL must link to a webpage that is maintained by the driver package provider.
+ ///
+ ///
+ /// When a user clicks the website link that is displayed in Setup-generated end-user dialog box, Windows adds the following
+ /// information to the HTTP request that includes the URL supplied by DEVPKEY_DrvPkg_DocumentationLink:
+ ///
+ ///
+ /// -
+ ///
+ /// The Windows version, as specified by a pver parameter. For example, "pver=6.0" specifies Windows Vista.
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// The stock keeping unit (SKU), as specified by the sbp parameter, which can be set to per or pro. For example, "sbp=pro"
+ /// specifies the professional edition.
+ ///
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// The local identifier (LCID), as specified by the olcid parameter. For example, "olcid=0x409" specifies the English
+ /// (Standard) language.
+ ///
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// The most specific hardware identifier for a device, as specified by the pnpid parameter. For example,
+ /// "pnpid=PCI%5CVEN_8086%26DEV_2533%26SUBSYS_00000000%26REV_04" specifies the hardware identifier for a PCI device.
+ ///
+ ///
+ ///
+ ///
+ /// For privacy reasons, user information and the serial number of device is not included in the HTTP request.
+ ///
+ /// The following example shows the type of HTTP request that would be sent to a web server: http://www.microsoft.com/redirect?prod=DSC530&rev34&type=docs&pver=6.0&spb=pro&olcid=0x409&pnpid=PCI%5CVEN_8086%26DEV_2533%26SUBSYS_00000000%26REV_04
+ ///
+ ///
+ /// You can set the value of DEVPKEY_DrvPkg_DocumentationLink by an INF AddProperty directive that is included in the INF
+ /// DDInstall section of the INF file that installs the device. You can retrieve the value of
+ /// DEVPKEY_DrvPkg_DocumentationLinkproperty by calling SetupDiGetDeviceProperty.
+ ///
+ ///
+ /// The following is an example of how to use an INF AddProperty directive to set the value of
+ /// DEVPKEY_DrvPkg_DocumentationLink for a device that is installed by an INF DDInstall section "SampleDDInstallSection":
+ ///
+ ///
+ /// [SampleDDinstallSection] ... AddProperty=SampleAddPropertySection ... [SampleAddPropertySection] DeviceDocumentationLink,,,,"http://www.microsoft.com/redirect?prod=DSC530&rev34&type="docs" ...
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-drvpkg-documentationlink
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DrvPkg_DocumentationLink = new DEVPROPKEY(0xcf73bb51, 0x3abf, 0x44a2, 0x85, 0xe0, 0x9a, 0x3d, 0xc7, 0xa1, 0x21, 0x32, 5);
+
+ ///
+ ///
+ /// The DEVPKEY_DrvPkg_Icon device property represents a list of device icons that Windows uses to visually represent a device instance.
+ ///
+ ///
+ ///
+ /// Property key
+ /// DEVPKEY_DrvPkg_Icon
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING_LIST
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// Yes
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// Each icon in the list is specified by a path of an icon file (*.ico) or a reference to an icon resource in an executable file.
+ ///
+ ///
+ /// The first icon in the list is used as the default. Additional icons can be supplied that provide different visual
+ /// representations of a device. Windows includes a user interface that allows a user to select which icon Windows displays. For
+ /// example, the Microsoft DiscoveryCam 530 is available in blue, green, and red. Microsoft supplies an icon for each color. Windows
+ /// uses the blue icon by default because it is the first one in the list. However, Windows users can also choose the green icon or
+ /// the red icon.
+ ///
+ ///
+ /// The icon list is a NULL-separated list of icon specifiers. An icon specifier is either a path of an icon file (*.ico) or an
+ /// icon-resource specifier, as follows:
+ ///
+ ///
+ /// -
+ ///
+ /// The format of the path to an icon file is DirectoryPath\filename.ico.
+ ///
+ ///
+ /// -
+ ///
+ /// An icon-resource specifier has the following entries:
+ ///
+ /// The first character of icon-resource specifier is the at sign (@) followed by the path of an executable file (an *.exe or a
+ /// *.dll file), followed by a comma separator (,), and then the resource-identifier entry.
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// For example, the icon specifier"@shell32.dll,-30" represents the executable file "shell32.dll" and the resource identifier "-30".
+ ///
+ /// A resource identifier must be an integer value, which corresponds to a resource within the executable file, as follows:
+ ///
+ /// -
+ ///
+ ///
+ /// If the supplied identifier is negative, Windows uses the resource in the executable file whose identifier is equal to the
+ /// absolute value of the supplied identifier.
+ ///
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// If the supplied identifier is zero, Windows uses the resource in the executable file whose identifier has the lowest value in
+ /// the execuable file.
+ ///
+ ///
+ ///
+ /// -
+ ///
+ ///
+ /// If the supplied identifier is positive, for example, the value n, Windows uses the resource in the executable file whose
+ /// identifier is the n+1 lowest value in the executable file. For example, if the value of n is 1, Windows uses the resource whose
+ /// identifier has the second lowest value in the executable file.
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// You can set the value of DEVPKEY_DrvPkg_Icon by an INF AddProperty directive that is included in the INF DDInstall
+ /// section of the INF file that installs the device. You can retrieve the value of DEVPKEY_DrvPkg_Icon by calling SetupDiGetDeviceProperty.
+ ///
+ ///
+ /// The following is an example of how to use an INF AddProperty directive to set DEVPKEY_DrvPkg_Icon for a device that is
+ /// installed by an INF DDInstall section "SampleDDInstallSection":
+ ///
+ ///
+ /// [SampleDDinstallSection] ... AddProperty=SampleAddPropertySection ... [SampleAddPropertySection] DeviceIcon,,,,"SomeResource.dll,-2","SomeIcon.icon" ...
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-drvpkg-icon
+ [CorrespondingType(typeof(string[]))]
+ public static readonly DEVPROPKEY DEVPKEY_DrvPkg_Icon = new DEVPROPKEY(0xcf73bb51, 0x3abf, 0x44a2, 0x85, 0xe0, 0x9a, 0x3d, 0xc7, 0xa1, 0x21, 0x32, 6);
+
+ ///
+ /// The DEVPKEY_DrvPkg_Model device driver package property represents the model name for a device instance.
+ ///
+ ///
+ /// Property key
+ /// DEVPKEY_DrvPkg_Model
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// Yes
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// You can set the value of DEVPKEY_DrvPkg_Model by an INF AddProperty directive that is included in the INF DDInstall
+ /// section of the INF file that installs the device. You can retrieve the value of the DEVPKEY_DrvPkg_Model property by calling SetupDiGetDeviceProperty.
+ ///
+ ///
+ /// The following is an example of how to use an INF AddProperty directive to set the value of DEVPKEY_DrvPkg_Model for a
+ /// device that is installed by an INF DDInstall section "SampleDDInstallSection":
+ ///
+ ///
+ /// [SampleDDinstallSection] ... AddProperty=SampleAddPropertySection ... [SampleAddPropertySection] DeviceModel,,,,"DSC-530" ...
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-drvpkg-model
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DrvPkg_Model = new DEVPROPKEY(0xcf73bb51, 0x3abf, 0x44a2, 0x85, 0xe0, 0x9a, 0x3d, 0xc7, 0xa1, 0x21, 0x32, 2);
+
+ ///
+ /// The DEVPKEY_DrvPkg_VendorWebSite device property represents a vendor URL for a device instance.
+ ///
+ ///
+ /// Attribute
+ /// Value
+ ///
+ /// -
+ /// Property key
+ /// DEVPKEY_DrvPkg_VendorWebSite
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING">
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// Yes
+ ///
+ ///
+ ///
+ ///
+ ///
+ /// The URL can be a link to the root of the vendor website, a webpage within a website, or a redirection page. The URL can also
+ /// contain parameters, for example, the following URL contains a prod parameter that supplies the product identifier
+ /// "DSC530" and a rev parameter that supplies the number "34":
+ ///
+ ///
+ /// http://www.microsoft.com/redirect?prod=DSC530&rev=34
+ ///
+ ///
+ /// You can set the value of DEVPKEY_DrvPkg_VendorWebSite by an INF AddProperty directive that is included in the INF
+ /// DDInstall section of the INF file that installs the device. You can retrieve the value of DEVPKEY_DrvPkg_VendorWebSite by
+ /// calling SetupDiGetDeviceProperty.
+ ///
+ ///
+ /// The following is an example of how to use an INF AddProperty directive to set the DEVPKEY_DrvPkg_VendorWebSite property
+ /// value for a device that is installed by an INF DDInstall section "SampleDDInstallSection":
+ ///
+ ///
+ /// [SampleDDinstallSection] ... AddProperty=SampleAddPropertySection ... [SampleAddPropertySection] DeviceVendorWebsite,,,,"http://www.microsoft.com/redirect?prod=DSC530&rev=34" ...
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-drvpkg-vendorwebsite
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_DrvPkg_VendorWebSite = new DEVPROPKEY(0xcf73bb51, 0x3abf, 0x44a2, 0x85, 0xe0, 0x9a, 0x3d, 0xc7, 0xa1, 0x21, 0x32, 3);
+
+ ///
+ /// The DEVPKEY_NAME device property represents the name of a device setup class.
+ ///
+ ///
+ /// Property key
+ /// DEVPKEY_NAME
+ ///
+ /// -
+ /// Property-data-type identifier
+ /// DEVPROP_TYPE_STRING
+ ///
+ /// -
+ /// Property access
+ /// Read-only access by installation applications and installers
+ ///
+ /// -
+ /// Localized?
+ /// Yes
+ ///
+ ///
+ ///
+ ///
+ /// You can use the value of DEVPKEY_NAME to identify a device setup class to an end-user in a user interface item.
+ ///
+ /// If DEVPKEY_DeviceClass_Name is set, the value of DEVPKEY_NAME is the same as the value of the DEVPKEY_DeviceClass_Name
+ /// device property. Otherwise, the DEVPKEY_NAME value is the same as the value of the DEVPKEY_DeviceClass_ClassName device property.
+ ///
+ ///
+ /// You can call SetupDiGetClassProperty or SetupDiGetClassPropertyEx to retrieve the value of DEVPKEY_NAME for a
+ /// device setup class.
+ ///
+ ///
+ /// Windows Server 2003, Windows XP, and Windows 2000 do not directly support a corresponding name property. However, these earlier
+ /// versions of Windows do support properties that correspond to DEVPKEY_DeviceClass_Name and DEVPKEY_DeviceClass_ClassName.
+ ///
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpkey-name--device-setup-class-
+ [CorrespondingType(typeof(string))]
+ public static readonly DEVPROPKEY DEVPKEY_NAME = new DEVPROPKEY(0xb725f130, 0x47ef, 0x101a, 0xa5, 0xf1, 0x02, 0x60, 0x8c, 0x9e, 0xeb, 0xac, 10);
+ }
+}
\ No newline at end of file
diff --git a/PInvoke/SetupAPI/DevPropDef.cs b/PInvoke/SetupAPI/DevPropDef.cs
new file mode 100644
index 00000000..25fc5b6b
--- /dev/null
+++ b/PInvoke/SetupAPI/DevPropDef.cs
@@ -0,0 +1,76 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace Vanara.PInvoke
+{
+ public static partial class SetupAPI
+ {
+ ///
+ /// In Windows Vista and later versions of Windows, the DEVPROPKEY structure represents a device property key for a device property
+ /// in the unified device property model.
+ ///
+ ///
+ /// The DEVPROPKEY structure is part of the unified device property model.
+ /// The basic set of system-supplied device property keys are defined in Devpkey.h.
+ /// The DEFINE_DEVPROPKEY macro creates an instance of a DEVPROPKEY structure that represents a device property key.
+ ///
+ // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpropkey struct DEVPROPKEY { DEVPROPGUID fmtid; DEVPROPID
+ // pid; };
+ [PInvokeData("Devpropdef.h")]
+ [StructLayout(LayoutKind.Sequential)]
+ public struct DEVPROPKEY : IEquatable
+ {
+ ///
+ /// A DEVPROPGUID-typed value that specifies a property category.
+ /// The DEVPROPGUID data type is defined as:
+ ///
+ public Guid fmtid;
+
+ ///
+ ///
+ /// pid A DEVPROPID-typed value that uniquely identifies the property within the property category. For internal system
+ /// reasons, a property identifier must be greater than or equal to two.
+ ///
+ /// The DEVPROPID data type is defined as:
+ ///
+ public uint pid;
+
+ /// Initializes a new instance of the struct.
+ /// Guid value.
+ /// Guid value.
+ /// Guid value.
+ /// Guid value.
+ /// Guid value.
+ /// Guid value.
+ /// Guid value.
+ /// Guid value.
+ /// Guid value.
+ /// Guid value.
+ /// Guid value.
+ /// The pid.
+ public DEVPROPKEY(uint a, ushort b, ushort c, byte d, byte e, byte f, byte g, byte h, byte i, byte j, byte k, uint pid)
+ {
+ fmtid = new Guid(a, b, c, d, e, f, g, h, i, j, k);
+ this.pid = pid;
+ }
+
+ /// Determines whether the specified , is equal to this instance.
+ /// The to compare with this instance.
+ ///
+ /// if the specified is equal to this instance; otherwise, .
+ ///
+ public override bool Equals(object obj) => obj is DEVPROPKEY pk && Equals(pk);
+
+ /// Determines whether the specified , is equal to this instance.
+ /// The property key.
+ ///
+ /// if the specified is equal to this instance; otherwise, .
+ ///
+ public bool Equals(DEVPROPKEY pk) => pk.pid == pid && pk.fmtid == fmtid;
+
+ /// Returns a hash code for this instance.
+ /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+ public override int GetHashCode() => (pid, fmtid).GetHashCode();
+ }
+ }
+}
\ No newline at end of file
diff --git a/PInvoke/SetupAPI/SetupAPI.DiFuncs.cs b/PInvoke/SetupAPI/SetupAPI.DiFuncs.cs
index 87da3174..e5b00d91 100644
--- a/PInvoke/SetupAPI/SetupAPI.DiFuncs.cs
+++ b/PInvoke/SetupAPI/SetupAPI.DiFuncs.cs
@@ -205,7 +205,7 @@ namespace Vanara.PInvoke
[DllImport(Lib_SetupAPI, SetLastError = true, CharSet = CharSet.Auto)]
[PInvokeData("setupapi.h", MSDNShortId = "NF:setupapi.SetupDiBuildClassInfoListExA")]
[return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool SetupDiBuildClassInfoListExA(DIBCI Flags, [Out, Optional, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] Guid[] ClassGuidList,
+ public static extern bool SetupDiBuildClassInfoListEx(DIBCI Flags, [Out, Optional, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] Guid[] ClassGuidList,
uint ClassGuidListSize, out uint RequiredSize, [Optional, MarshalAs(UnmanagedType.LPTStr)] string MachineName, IntPtr Reserved = default);
///
@@ -1212,7 +1212,8 @@ namespace Vanara.PInvoke
[DllImport(Lib_SetupAPI, SetLastError = true, CharSet = CharSet.Auto)]
[PInvokeData("setupapi.h", MSDNShortId = "NF:setupapi.SetupDiCreateDeviceInterfaceRegKeyA")]
public static extern HKEY SetupDiCreateDeviceInterfaceRegKey(HDEVINFO DeviceInfoSet, in SP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
- [Optional] uint Reserved, System.Security.AccessControl.RegistryRights samDesired, [In, Optional] HINF InfHandle, [In, Optional, MarshalAs(UnmanagedType.LPTStr)] string InfSectionName);
+ [Optional] uint Reserved, System.Security.AccessControl.RegistryRights samDesired, [In, Optional] HINF InfHandle,
+ [In, Optional, MarshalAs(UnmanagedType.LPTStr)] string InfSectionName);
///
/// The SetupDiCreateDevRegKey function creates a registry key for device-specific configuration information and returns a
@@ -1749,7 +1750,8 @@ namespace Vanara.PInvoke
[DllImport(Lib_SetupAPI, SetLastError = true, ExactSpelling = true)]
[PInvokeData("setupapi.h", MSDNShortId = "NF:setupapi.SetupDiEnumDeviceInterfaces")]
[return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool SetupDiEnumDeviceInterfaces(HDEVINFO DeviceInfoSet, in SP_DEVINFO_DATA DeviceInfoData, in Guid InterfaceClassGuid, uint MemberIndex, ref SP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
+ public static extern bool SetupDiEnumDeviceInterfaces(HDEVINFO DeviceInfoSet, in SP_DEVINFO_DATA DeviceInfoData, in Guid InterfaceClassGuid,
+ uint MemberIndex, ref SP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
///
/// The SetupDiEnumDeviceInterfaces function enumerates the device interfaces that are contained in a device information set.
@@ -1802,7 +1804,8 @@ namespace Vanara.PInvoke
[DllImport(Lib_SetupAPI, SetLastError = true, ExactSpelling = true)]
[PInvokeData("setupapi.h", MSDNShortId = "NF:setupapi.SetupDiEnumDeviceInterfaces")]
[return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool SetupDiEnumDeviceInterfaces(HDEVINFO DeviceInfoSet, [In, Optional] IntPtr DeviceInfoData, in Guid InterfaceClassGuid, uint MemberIndex, ref SP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
+ public static extern bool SetupDiEnumDeviceInterfaces(HDEVINFO DeviceInfoSet, [In, Optional] IntPtr DeviceInfoData, in Guid InterfaceClassGuid,
+ uint MemberIndex, ref SP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
///
/// The SetupDiEnumDeviceInterfaces function enumerates the device interfaces that are contained in a device information set.
@@ -1828,7 +1831,8 @@ namespace Vanara.PInvoke
/// See System Defined Device Interface Classes for a list of available device interface classes.
///
[PInvokeData("setupapi.h", MSDNShortId = "NF:setupapi.SetupDiEnumDeviceInterfaces")]
- public static IEnumerable SetupDiEnumDeviceInterfaces(HDEVINFO DeviceInfoSet, Guid InterfaceClassGuid, SP_DEVINFO_DATA? DeviceInfoData = null)
+ public static IEnumerable SetupDiEnumDeviceInterfaces(HDEVINFO DeviceInfoSet, Guid InterfaceClassGuid,
+ SP_DEVINFO_DATA? DeviceInfoData = null)
{
using var dvidata = DeviceInfoData.HasValue ? new SafeCoTaskMemStruct(DeviceInfoData.Value) : SafeCoTaskMemStruct.Null;
var data = new SP_DEVICE_INTERFACE_DATA { cbSize = (uint)Marshal.SizeOf(typeof(SP_DEVICE_INTERFACE_DATA)) };
@@ -2825,7 +2829,8 @@ namespace Vanara.PInvoke
// SetupDiGetClassDevsW( const GUID *ClassGuid, PCWSTR Enumerator, HWND hwndParent, DWORD Flags );
[DllImport(Lib_SetupAPI, SetLastError = true, CharSet = CharSet.Auto)]
[PInvokeData("setupapi.h", MSDNShortId = "NF:setupapi.SetupDiGetClassDevsW")]
- public static extern SafeHDEVINFO SetupDiGetClassDevs([In, Optional] IntPtr ClassGuid, [In, Optional] string Enumerator, [In, Optional] HWND hwndParent, DIGCF Flags);
+ public static extern SafeHDEVINFO SetupDiGetClassDevs([In, Optional] IntPtr ClassGuid, [In, Optional] string Enumerator,
+ [In, Optional] HWND hwndParent, DIGCF Flags);
///
/// The SetupDiGetClassDevsEx function returns a handle to a device information set that contains requested device
diff --git a/PInvoke/SetupAPI/SetupAPI.DiFuncs2.cs b/PInvoke/SetupAPI/SetupAPI.DiFuncs2.cs
index d949c2b5..0449bd01 100644
--- a/PInvoke/SetupAPI/SetupAPI.DiFuncs2.cs
+++ b/PInvoke/SetupAPI/SetupAPI.DiFuncs2.cs
@@ -1478,45 +1478,55 @@ namespace Vanara.PInvoke
using var mem = new SafeCoTaskMemHandle(sz);
if (SetupDiGetDeviceProperty(DeviceInfoSet, DeviceInfoData, PropertyKey, out var propType, mem, mem.Size, out _))
{
- switch (propType)
- {
- case DEVPROPTYPE.DEVPROP_TYPE_EMPTY:
- case DEVPROPTYPE.DEVPROP_TYPE_NULL:
- Value = null;
- return true;
-
- case DEVPROPTYPE.DEVPROP_TYPE_SECURITY_DESCRIPTOR:
- Value = new RawSecurityDescriptor(mem.GetBytes(0, mem.Size), 0);
- return true;
-
- case DEVPROPTYPE.DEVPROP_TYPE_STRING_INDIRECT:
- Value = mem.ToString(-1, CharSet.Unicode);
- return true;
-
- case DEVPROPTYPE.DEVPROP_TYPE_STRING_LIST:
- Value = mem.ToStringEnum(CharSet.Unicode).ToArray();
- return true;
-
- default:
- (DEVPROPTYPE type, DEVPROPTYPE mod) spt = propType.Split();
- var type = CorrespondingTypeAttribute.GetCorrespondingTypes(spt.type).FirstOrDefault();
- if (type is not null)
- {
- Value = spt.mod switch
- {
- 0 => mem.DangerousGetHandle().Convert(mem.Size, type, CharSet.Unicode),
- DEVPROPTYPE.DEVPROP_TYPEMOD_ARRAY => mem.DangerousGetHandle().ToArray(type, mem.Size / Marshal.SizeOf(type), 0, mem.Size),
- _ => null
- };
- if (Value is not null)
- return true;
- }
- break;
- }
+ Value = SetupDiPropertyToManagedObject(mem, propType);
+ return true;
}
return false;
}
+ /// Converts memory retrieved from a property call to a managed object of the correct type.
+ /// The allocated memory.
+ /// The type of the property.
+ /// A managed object with the value from the memory.
+ public static object SetupDiPropertyToManagedObject(ISafeMemoryHandle mem, DEVPROPTYPE propType)
+ {
+ object Value = null;
+ switch (propType)
+ {
+ case DEVPROPTYPE.DEVPROP_TYPE_EMPTY:
+ case DEVPROPTYPE.DEVPROP_TYPE_NULL:
+ break;
+
+ case DEVPROPTYPE.DEVPROP_TYPE_SECURITY_DESCRIPTOR:
+ Value = new RawSecurityDescriptor(mem.GetBytes(0, mem.Size), 0);
+ break;
+
+ case DEVPROPTYPE.DEVPROP_TYPE_STRING_INDIRECT:
+ Value = mem.ToString(-1, CharSet.Unicode);
+ break;
+
+ case DEVPROPTYPE.DEVPROP_TYPE_STRING_LIST:
+ Value = mem.ToStringEnum(CharSet.Unicode).ToArray();
+ break;
+
+ default:
+ (DEVPROPTYPE type, DEVPROPTYPE mod) spt = propType.Split();
+ var type = CorrespondingTypeAttribute.GetCorrespondingTypes(spt.type).FirstOrDefault();
+ if (type is not null)
+ {
+ Value = spt.mod switch
+ {
+ 0 => mem.DangerousGetHandle().Convert(mem.Size, type, CharSet.Unicode),
+ DEVPROPTYPE.DEVPROP_TYPEMOD_ARRAY => mem.DangerousGetHandle().ToArray(type, mem.Size / Marshal.SizeOf(type), 0, mem.Size),
+ _ => null
+ };
+ }
+ Value ??= mem.GetBytes(0, mem.Size);
+ break;
+ }
+ return Value;
+ }
+
///
/// The SetupDiGetDevicePropertyKeys function retrieves an array of the device property keys that represent the device
/// properties that are set for a device instance.
@@ -2944,7 +2954,7 @@ namespace Vanara.PInvoke
[DllImport(Lib_SetupAPI, SetLastError = true, CharSet = CharSet.Auto)]
[PInvokeData("setupapi.h", MSDNShortId = "NF:setupapi.SetupDiOpenDeviceInfoA")]
[return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool SetupDiOpenDeviceInfo(HDEVINFO DeviceInfoSet, [MarshalAs(UnmanagedType.LPTStr)] string DeviceInstanceId,
+ public static extern bool SetupDiOpenDeviceInfo(HDEVINFO DeviceInfoSet, [Optional, MarshalAs(UnmanagedType.LPTStr)] string DeviceInstanceId,
[In, Optional] HWND hwndParent, DIOD OpenFlags, ref SP_DEVINFO_DATA DeviceInfoData);
///
@@ -4013,7 +4023,7 @@ namespace Vanara.PInvoke
[PInvokeData("setupapi.h", MSDNShortId = "NF:setupapi.SetupDiSetClassPropertyW")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetupDiSetClassProperty(in Guid ClassGuid, in DEVPROPKEY PropertyKey, DEVPROPTYPE PropertyType,
- [In, Optional] IntPtr PropertyBuffer, uint PropertyBufferSize, DICLASSPROP Flags);
+ [In, Optional] IntPtr PropertyBuffer, [In, Optional] uint PropertyBufferSize, DICLASSPROP Flags);
///
/// The SetupDiSetClassPropertyEx function sets a device property for a device setup class or a device interface class on a
@@ -4144,7 +4154,7 @@ namespace Vanara.PInvoke
[PInvokeData("setupapi.h", MSDNShortId = "NF:setupapi.SetupDiSetClassPropertyExW")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetupDiSetClassPropertyEx(in Guid ClassGuid, in DEVPROPKEY PropertyKey, DEVPROPTYPE PropertyType,
- [In, Optional] IntPtr PropertyBuffer, uint PropertyBufferSize, DICLASSPROP Flags,
+ [In, Optional] IntPtr PropertyBuffer, [In, Optional] uint PropertyBufferSize, DICLASSPROP Flags,
[Optional, MarshalAs(UnmanagedType.LPWStr)] string MachineName, [In, Optional] IntPtr Reserved);
/// The SetupDiSetClassRegistryProperty function sets a specified device class property in the registry.
diff --git a/PInvoke/SetupAPI/SetupAPI.cs b/PInvoke/SetupAPI/SetupAPI.cs
index 4ab18f1f..6e2300a2 100644
--- a/PInvoke/SetupAPI/SetupAPI.cs
+++ b/PInvoke/SetupAPI/SetupAPI.cs
@@ -2368,37 +2368,6 @@ namespace Vanara.PInvoke
public ushort CabinetNumber;
}
- ///
- /// In Windows Vista and later versions of Windows, the DEVPROPKEY structure represents a device property key for a device property
- /// in the unified device property model.
- ///
- ///
- /// The DEVPROPKEY structure is part of the unified device property model.
- /// The basic set of system-supplied device property keys are defined in Devpkey.h.
- /// The DEFINE_DEVPROPKEY macro creates an instance of a DEVPROPKEY structure that represents a device property key.
- ///
- // https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devpropkey struct DEVPROPKEY { DEVPROPGUID fmtid; DEVPROPID
- // pid; };
- [PInvokeData("Devpropdef.h")]
- [StructLayout(LayoutKind.Sequential)]
- public struct DEVPROPKEY
- {
- ///
- /// A DEVPROPGUID-typed value that specifies a property category.
- /// The DEVPROPGUID data type is defined as:
- ///
- public Guid fmtid;
-
- ///
- ///
- /// pid A DEVPROPID-typed value that uniquely identifies the property within the property category. For internal system
- /// reasons, a property identifier must be greater than or equal to two.
- ///
- /// The DEVPROPID data type is defined as:
- ///
- public uint pid;
- }
-
///
/// The FILE_IN_CABINET_INFO structure provides information about a file found in the cabinet. The SetupIterateCabinet
/// function sends this structure as one of the parameters when it sends a SPFILENOTIFY_FILEINCABINET notification to the cabinet
diff --git a/PInvoke/Shared/Cfg.cs b/PInvoke/Shared/Cfg.cs
new file mode 100644
index 00000000..f92bd46d
--- /dev/null
+++ b/PInvoke/Shared/Cfg.cs
@@ -0,0 +1,52 @@
+using System;
+
+#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
+
+namespace Vanara.PInvoke
+{
+ /// The status of a device node (devnode).
+ [PInvokeData("cfg.h")]
+ [Flags]
+ public enum DN : uint
+ {
+ DN_ROOT_ENUMERATED = 0x00000001,
+ DN_DRIVER_LOADED = 0x00000002,
+ DN_ENUM_LOADED = 0x00000004,
+ DN_STARTED = 0x00000008,
+ DN_MANUAL = 0x00000010,
+ DN_NEED_TO_ENUM = 0x00000020,
+ DN_NOT_FIRST_TIME = 0x00000040,
+ DN_HARDWARE_ENUM = 0x00000080,
+ DN_LIAR = 0x00000100,
+ DN_HAS_MARK = 0x00000200,
+ DN_HAS_PROBLEM = 0x00000400,
+ DN_FILTERED = 0x00000800,
+ DN_MOVED = 0x00001000,
+ DN_DISABLEABLE = 0x00002000,
+ DN_REMOVABLE = 0x00004000,
+ DN_PRIVATE_PROBLEM = 0x00008000,
+ DN_MF_PARENT = 0x00010000,
+ DN_MF_CHILD = 0x00020000,
+ DN_WILL_BE_REMOVED = 0x00040000,
+ DN_NOT_FIRST_TIMEE = 0x00080000,
+ DN_STOP_FREE_RES = 0x00100000,
+ DN_REBAL_CANDIDATE = 0x00200000,
+ DN_BAD_PARTIAL = 0x00400000,
+ DN_NT_ENUMERATOR = 0x00800000,
+ DN_NT_DRIVER = 0x01000000,
+ DN_NEEDS_LOCKING = 0x02000000,
+ DN_ARM_WAKEUP = 0x04000000,
+ DN_APM_ENUMERATOR = 0x08000000,
+ DN_APM_DRIVER = 0x10000000,
+ DN_SILENT_INSTALL = 0x20000000,
+ DN_NO_SHOW_IN_DM = 0x40000000,
+ DN_BOOT_LOG_PROB = 0x80000000,
+ DN_NEED_RESTART = DN_LIAR,
+ DN_DRIVER_BLOCKED = DN_NOT_FIRST_TIME,
+ DN_LEGACY_DRIVER = DN_MOVED,
+ DN_CHILD_WITH_INVALID_ID = DN_HAS_MARK,
+ DN_DEVICE_DISCONNECTED = DN_NEEDS_LOCKING,
+ DN_QUERY_REMOVE_PENDING = DN_MF_PARENT,
+ DN_QUERY_REMOVE_ACTIVE = DN_MF_CHILD,
+ }
+}
\ No newline at end of file
diff --git a/PInvoke/Shared/CfgMgr32.cs b/PInvoke/Shared/CfgMgr32.cs
new file mode 100644
index 00000000..6591b20e
--- /dev/null
+++ b/PInvoke/Shared/CfgMgr32.cs
@@ -0,0 +1,40 @@
+using System;
+
+#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
+
+namespace Vanara.PInvoke
+{
+ [PInvokeData("cfgmgr32.h")]
+ [Flags]
+ public enum CM_DEVCAP : uint
+ {
+ CM_DEVCAP_LOCKSUPPORTED = 0x00000001,
+ CM_DEVCAP_EJECTSUPPORTED = 0x00000002,
+ CM_DEVCAP_REMOVABLE = 0x00000004,
+ CM_DEVCAP_DOCKDEVICE = 0x00000008,
+ CM_DEVCAP_UNIQUEID = 0x00000010,
+ CM_DEVCAP_SILENTINSTALL = 0x00000020,
+ CM_DEVCAP_RAWDEVICEOK = 0x00000040,
+ CM_DEVCAP_SURPRISEREMOVALOK = 0x00000080,
+ CM_DEVCAP_HARDWAREDISABLED = 0x00000100,
+ CM_DEVCAP_NONDYNAMIC = 0x00000200,
+ CM_DEVCAP_SECUREDEVICE = 0x00000400,
+ }
+
+ [PInvokeData("cfgmgr32.h")]
+ public enum CM_INSTALL_STATE : uint
+ {
+ CM_INSTALL_STATE_INSTALLED = 0,
+ CM_INSTALL_STATE_NEEDS_REINSTALL = 1,
+ CM_INSTALL_STATE_FAILED_INSTALL = 2,
+ CM_INSTALL_STATE_FINISH_INSTALL = 3,
+ }
+
+ [PInvokeData("cfgmgr32.h")]
+ public enum CM_REMOVAL_POLICY : uint
+ {
+ CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL = 1,
+ CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL = 2,
+ CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL = 3,
+ }
+}
\ No newline at end of file
diff --git a/PInvoke/Shared/RegStr.cs b/PInvoke/Shared/RegStr.cs
new file mode 100644
index 00000000..0f48f9b3
--- /dev/null
+++ b/PInvoke/Shared/RegStr.cs
@@ -0,0 +1,70 @@
+using System;
+
+namespace Vanara.PInvoke
+{
+ /// A device's configuration flags
+ [PInvokeData("regstr.h")]
+ [Flags]
+ public enum CONFIGFLAG : uint
+ {
+ /// Set if disabled
+ CONFIGFLAG_DISABLED = 0x00000001,
+
+ /// Set if a present hardware enum device deleted
+ CONFIGFLAG_REMOVED = 0x00000002,
+
+ /// Set if the devnode was manually installed
+ CONFIGFLAG_MANUAL_INSTALL = 0x00000004,
+
+ /// Set if skip the boot config
+ CONFIGFLAG_IGNORE_BOOT_LC = 0x00000008,
+
+ /// Load this devnode when in net boot
+ CONFIGFLAG_NET_BOOT = 0x00000010,
+
+ /// Redo install
+ CONFIGFLAG_REINSTALL = 0x00000020,
+
+ /// Failed the install
+ CONFIGFLAG_FAILEDINSTALL = 0x00000040,
+
+ /// Can't stop/remove a single child
+ CONFIGFLAG_CANTSTOPACHILD = 0x00000080,
+
+ /// Can remove even if rom.
+ CONFIGFLAG_OKREMOVEROM = 0x00000100,
+
+ /// Don't remove at exit.
+ CONFIGFLAG_NOREMOVEEXIT = 0x00000200,
+
+ /// Complete install for devnode running 'raw'
+ CONFIGFLAG_FINISH_INSTALL = 0x00000400,
+
+ /// This devnode requires a forced config
+ CONFIGFLAG_NEEDS_FORCED_CONFIG = 0x00000800,
+
+ /// This is the remote boot network card
+ CONFIGFLAG_NETBOOT_CARD = 0x00001000,
+
+ /// This device has a partial logconfig
+ CONFIGFLAG_PARTIAL_LOG_CONF = 0x00002000,
+
+ /// Set if unsafe removals should be ignored
+ CONFIGFLAG_SUPPRESS_SURPRISE = 0x00004000,
+
+ /// Set if hardware should be tested for logo failures
+ CONFIGFLAG_VERIFY_HARDWARE = 0x00008000,
+
+ /// Show the finish install wizard pages for the installed device.
+ CONFIGFLAG_FINISHINSTALL_UI = 0x00010000,
+
+ /// Call installer with DIF_FINISHINSTALL_ACTION in client context.
+ CONFIGFLAG_FINISHINSTALL_ACTION = 0x00020000,
+
+ /// Configured devnode during boot phase
+ CONFIGFLAG_BOOT_DEVICE = 0x00040000,
+
+ /// Device needs additional class configuration to start
+ CONFIGFLAG_NEEDS_CLASS_CONFIG = 0x00080000,
+ }
+}
\ No newline at end of file
diff --git a/Vanara.sln b/Vanara.sln
index 40eb2dce..ed7a0732 100644
--- a/Vanara.sln
+++ b/Vanara.sln
@@ -285,6 +285,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vanara.PInvoke.Msi", "PInvo
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Msi", "UnitTests\PInvoke\Msi\Msi.csproj", "{E7242839-78DE-4AFE-8AF7-E9DDCE06E18C}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vanara.PInvoke.SHCore", "PInvoke\SHCore\Vanara.PInvoke.SHCore.csproj", "{F1417ADE-A8D3-432F-8F43-EF626DF4A3C9}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -915,6 +917,12 @@ Global
{E7242839-78DE-4AFE-8AF7-E9DDCE06E18C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E7242839-78DE-4AFE-8AF7-E9DDCE06E18C}.DebugNoTests|Any CPU.ActiveCfg = Debug|Any CPU
{E7242839-78DE-4AFE-8AF7-E9DDCE06E18C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F1417ADE-A8D3-432F-8F43-EF626DF4A3C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F1417ADE-A8D3-432F-8F43-EF626DF4A3C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F1417ADE-A8D3-432F-8F43-EF626DF4A3C9}.DebugNoTests|Any CPU.ActiveCfg = Debug|Any CPU
+ {F1417ADE-A8D3-432F-8F43-EF626DF4A3C9}.DebugNoTests|Any CPU.Build.0 = Debug|Any CPU
+ {F1417ADE-A8D3-432F-8F43-EF626DF4A3C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F1417ADE-A8D3-432F-8F43-EF626DF4A3C9}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1038,6 +1046,7 @@ Global
{B1F98DFA-7FC7-4728-B4C2-A2B3E163EF79} = {385CAD2D-0A5E-4F80-927B-D5499D126B90}
{CC8EB859-0940-4D91-B165-3B028A1B7B5D} = {212ABBD0-B724-4CFA-9D6D-E3891547FA90}
{E7242839-78DE-4AFE-8AF7-E9DDCE06E18C} = {385CAD2D-0A5E-4F80-927B-D5499D126B90}
+ {F1417ADE-A8D3-432F-8F43-EF626DF4A3C9} = {212ABBD0-B724-4CFA-9D6D-E3891547FA90}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {543FAC75-2AF1-4EF1-9609-B242B63FEED4}