//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (1179)
//--------------------------------------------------------------------------------
pub const CM_PROB_NOT_CONFIGURED = @as(u32, 1);
pub const CM_PROB_DEVLOADER_FAILED = @as(u32, 2);
pub const CM_PROB_OUT_OF_MEMORY = @as(u32, 3);
pub const CM_PROB_ENTRY_IS_WRONG_TYPE = @as(u32, 4);
pub const CM_PROB_LACKED_ARBITRATOR = @as(u32, 5);
pub const CM_PROB_BOOT_CONFIG_CONFLICT = @as(u32, 6);
pub const CM_PROB_FAILED_FILTER = @as(u32, 7);
pub const CM_PROB_DEVLOADER_NOT_FOUND = @as(u32, 8);
pub const CM_PROB_INVALID_DATA = @as(u32, 9);
pub const CM_PROB_FAILED_START = @as(u32, 10);
pub const CM_PROB_LIAR = @as(u32, 11);
pub const CM_PROB_NORMAL_CONFLICT = @as(u32, 12);
pub const CM_PROB_NOT_VERIFIED = @as(u32, 13);
pub const CM_PROB_NEED_RESTART = @as(u32, 14);
pub const CM_PROB_REENUMERATION = @as(u32, 15);
pub const CM_PROB_PARTIAL_LOG_CONF = @as(u32, 16);
pub const CM_PROB_UNKNOWN_RESOURCE = @as(u32, 17);
pub const CM_PROB_REINSTALL = @as(u32, 18);
pub const CM_PROB_REGISTRY = @as(u32, 19);
pub const CM_PROB_VXDLDR = @as(u32, 20);
pub const CM_PROB_WILL_BE_REMOVED = @as(u32, 21);
pub const CM_PROB_DISABLED = @as(u32, 22);
pub const CM_PROB_DEVLOADER_NOT_READY = @as(u32, 23);
pub const CM_PROB_DEVICE_NOT_THERE = @as(u32, 24);
pub const CM_PROB_MOVED = @as(u32, 25);
pub const CM_PROB_TOO_EARLY = @as(u32, 26);
pub const CM_PROB_NO_VALID_LOG_CONF = @as(u32, 27);
pub const CM_PROB_FAILED_INSTALL = @as(u32, 28);
pub const CM_PROB_HARDWARE_DISABLED = @as(u32, 29);
pub const CM_PROB_CANT_SHARE_IRQ = @as(u32, 30);
pub const CM_PROB_FAILED_ADD = @as(u32, 31);
pub const CM_PROB_DISABLED_SERVICE = @as(u32, 32);
pub const CM_PROB_TRANSLATION_FAILED = @as(u32, 33);
pub const CM_PROB_NO_SOFTCONFIG = @as(u32, 34);
pub const CM_PROB_BIOS_TABLE = @as(u32, 35);
pub const CM_PROB_IRQ_TRANSLATION_FAILED = @as(u32, 36);
pub const CM_PROB_FAILED_DRIVER_ENTRY = @as(u32, 37);
pub const CM_PROB_DRIVER_FAILED_PRIOR_UNLOAD = @as(u32, 38);
pub const CM_PROB_DRIVER_FAILED_LOAD = @as(u32, 39);
pub const CM_PROB_DRIVER_SERVICE_KEY_INVALID = @as(u32, 40);
pub const CM_PROB_LEGACY_SERVICE_NO_DEVICES = @as(u32, 41);
pub const CM_PROB_DUPLICATE_DEVICE = @as(u32, 42);
pub const CM_PROB_FAILED_POST_START = @as(u32, 43);
pub const CM_PROB_HALTED = @as(u32, 44);
pub const CM_PROB_PHANTOM = @as(u32, 45);
pub const CM_PROB_SYSTEM_SHUTDOWN = @as(u32, 46);
pub const CM_PROB_HELD_FOR_EJECT = @as(u32, 47);
pub const CM_PROB_DRIVER_BLOCKED = @as(u32, 48);
pub const CM_PROB_REGISTRY_TOO_LARGE = @as(u32, 49);
pub const CM_PROB_SETPROPERTIES_FAILED = @as(u32, 50);
pub const CM_PROB_WAITING_ON_DEPENDENCY = @as(u32, 51);
pub const CM_PROB_UNSIGNED_DRIVER = @as(u32, 52);
pub const CM_PROB_USED_BY_DEBUGGER = @as(u32, 53);
pub const CM_PROB_DEVICE_RESET = @as(u32, 54);
pub const CM_PROB_CONSOLE_LOCKED = @as(u32, 55);
pub const CM_PROB_NEED_CLASS_CONFIG = @as(u32, 56);
pub const CM_PROB_GUEST_ASSIGNMENT_FAILED = @as(u32, 57);
pub const NUM_CM_PROB_V1 = @as(u32, 37);
pub const NUM_CM_PROB_V2 = @as(u32, 50);
pub const NUM_CM_PROB_V3 = @as(u32, 51);
pub const NUM_CM_PROB_V4 = @as(u32, 52);
pub const NUM_CM_PROB_V5 = @as(u32, 53);
pub const NUM_CM_PROB_V6 = @as(u32, 54);
pub const NUM_CM_PROB_V7 = @as(u32, 55);
pub const NUM_CM_PROB_V8 = @as(u32, 57);
pub const NUM_CM_PROB_V9 = @as(u32, 58);
pub const NUM_CM_PROB = @as(u32, 58);
pub const DN_ROOT_ENUMERATED = @as(u32, 1);
pub const DN_DRIVER_LOADED = @as(u32, 2);
pub const DN_ENUM_LOADED = @as(u32, 4);
pub const DN_STARTED = @as(u32, 8);
pub const DN_MANUAL = @as(u32, 16);
pub const DN_NEED_TO_ENUM = @as(u32, 32);
pub const DN_NOT_FIRST_TIME = @as(u32, 64);
pub const DN_HARDWARE_ENUM = @as(u32, 128);
pub const DN_LIAR = @as(u32, 256);
pub const DN_HAS_MARK = @as(u32, 512);
pub const DN_HAS_PROBLEM = @as(u32, 1024);
pub const DN_FILTERED = @as(u32, 2048);
pub const DN_MOVED = @as(u32, 4096);
pub const DN_DISABLEABLE = @as(u32, 8192);
pub const DN_REMOVABLE = @as(u32, 16384);
pub const DN_PRIVATE_PROBLEM = @as(u32, 32768);
pub const DN_MF_PARENT = @as(u32, 65536);
pub const DN_MF_CHILD = @as(u32, 131072);
pub const DN_WILL_BE_REMOVED = @as(u32, 262144);
pub const DN_NOT_FIRST_TIMEE = @as(u32, 524288);
pub const DN_STOP_FREE_RES = @as(u32, 1048576);
pub const DN_REBAL_CANDIDATE = @as(u32, 2097152);
pub const DN_BAD_PARTIAL = @as(u32, 4194304);
pub const DN_NT_ENUMERATOR = @as(u32, 8388608);
pub const DN_NT_DRIVER = @as(u32, 16777216);
pub const DN_NEEDS_LOCKING = @as(u32, 33554432);
pub const DN_ARM_WAKEUP = @as(u32, 67108864);
pub const DN_APM_ENUMERATOR = @as(u32, 134217728);
pub const DN_APM_DRIVER = @as(u32, 268435456);
pub const DN_SILENT_INSTALL = @as(u32, 536870912);
pub const DN_NO_SHOW_IN_DM = @as(u32, 1073741824);
pub const DN_BOOT_LOG_PROB = @as(u32, 2147483648);
pub const DN_NEED_RESTART = @as(u32, 256);
pub const DN_DRIVER_BLOCKED = @as(u32, 64);
pub const DN_LEGACY_DRIVER = @as(u32, 4096);
pub const DN_CHILD_WITH_INVALID_ID = @as(u32, 512);
pub const DN_DEVICE_DISCONNECTED = @as(u32, 33554432);
pub const DN_QUERY_REMOVE_PENDING = @as(u32, 65536);
pub const DN_QUERY_REMOVE_ACTIVE = @as(u32, 131072);
pub const LCPRI_FORCECONFIG = @as(u32, 0);
pub const LCPRI_BOOTCONFIG = @as(u32, 1);
pub const LCPRI_DESIRED = @as(u32, 8192);
pub const LCPRI_NORMAL = @as(u32, 12288);
pub const LCPRI_LASTBESTCONFIG = @as(u32, 16383);
pub const LCPRI_SUBOPTIMAL = @as(u32, 20480);
pub const LCPRI_LASTSOFTCONFIG = @as(u32, 32767);
pub const LCPRI_RESTART = @as(u32, 32768);
pub const LCPRI_REBOOT = @as(u32, 36864);
pub const LCPRI_POWEROFF = @as(u32, 40960);
pub const LCPRI_HARDRECONFIG = @as(u32, 49152);
pub const LCPRI_HARDWIRED = @as(u32, 57344);
pub const LCPRI_IMPOSSIBLE = @as(u32, 61440);
pub const LCPRI_DISABLED = @as(u32, 65535);
pub const MAX_LCPRI = @as(u32, 65535);
pub const CM_DEVICE_PANEL_SIDE_UNKNOWN = @as(u32, 0);
pub const CM_DEVICE_PANEL_SIDE_TOP = @as(u32, 1);
pub const CM_DEVICE_PANEL_SIDE_BOTTOM = @as(u32, 2);
pub const CM_DEVICE_PANEL_SIDE_LEFT = @as(u32, 3);
pub const CM_DEVICE_PANEL_SIDE_RIGHT = @as(u32, 4);
pub const CM_DEVICE_PANEL_SIDE_FRONT = @as(u32, 5);
pub const CM_DEVICE_PANEL_SIDE_BACK = @as(u32, 6);
pub const CM_DEVICE_PANEL_EDGE_UNKNOWN = @as(u32, 0);
pub const CM_DEVICE_PANEL_EDGE_TOP = @as(u32, 1);
pub const CM_DEVICE_PANEL_EDGE_BOTTOM = @as(u32, 2);
pub const CM_DEVICE_PANEL_EDGE_LEFT = @as(u32, 3);
pub const CM_DEVICE_PANEL_EDGE_RIGHT = @as(u32, 4);
pub const CM_DEVICE_PANEL_SHAPE_UNKNOWN = @as(u32, 0);
pub const CM_DEVICE_PANEL_SHAPE_RECTANGLE = @as(u32, 1);
pub const CM_DEVICE_PANEL_SHAPE_OVAL = @as(u32, 2);
pub const CM_DEVICE_PANEL_ORIENTATION_HORIZONTAL = @as(u32, 0);
pub const CM_DEVICE_PANEL_ORIENTATION_VERTICAL = @as(u32, 1);
pub const CM_DEVICE_PANEL_JOINT_TYPE_UNKNOWN = @as(u32, 0);
pub const CM_DEVICE_PANEL_JOINT_TYPE_PLANAR = @as(u32, 1);
pub const CM_DEVICE_PANEL_JOINT_TYPE_HINGE = @as(u32, 2);
pub const CM_DEVICE_PANEL_JOINT_TYPE_PIVOT = @as(u32, 3);
pub const CM_DEVICE_PANEL_JOINT_TYPE_SWIVEL = @as(u32, 4);
pub const GUID_DEVCLASS_1394 = Guid.initString("6bdd1fc1-810f-11d0-bec7-08002be2092f");
pub const GUID_DEVCLASS_1394DEBUG = Guid.initString("66f250d6-7801-4a64-b139-eea80a450b24");
pub const GUID_DEVCLASS_61883 = Guid.initString("7ebefbc0-3200-11d2-b4c2-00a0c9697d07");
pub const GUID_DEVCLASS_ADAPTER = Guid.initString("4d36e964-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_APMSUPPORT = Guid.initString("d45b1c18-c8fa-11d1-9f77-0000f805f530");
pub const GUID_DEVCLASS_AVC = Guid.initString("c06ff265-ae09-48f0-812c-16753d7cba83");
pub const GUID_DEVCLASS_BATTERY = Guid.initString("72631e54-78a4-11d0-bcf7-00aa00b7b32a");
pub const GUID_DEVCLASS_BIOMETRIC = Guid.initString("53d29ef7-377c-4d14-864b-eb3a85769359");
pub const GUID_DEVCLASS_BLUETOOTH = Guid.initString("e0cbf06c-cd8b-4647-bb8a-263b43f0f974");
pub const GUID_DEVCLASS_CAMERA = Guid.initString("ca3e7ab9-b4c3-4ae6-8251-579ef933890f");
pub const GUID_DEVCLASS_CDROM = Guid.initString("4d36e965-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_COMPUTEACCELERATOR = Guid.initString("f01a9d53-3ff6-48d2-9f97-c8a7004be10c");
pub const GUID_DEVCLASS_COMPUTER = Guid.initString("4d36e966-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_DECODER = Guid.initString("6bdd1fc2-810f-11d0-bec7-08002be2092f");
pub const GUID_DEVCLASS_DISKDRIVE = Guid.initString("4d36e967-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_DISPLAY = Guid.initString("4d36e968-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_DOT4 = Guid.initString("48721b56-6795-11d2-b1a8-0080c72e74a2");
pub const GUID_DEVCLASS_DOT4PRINT = Guid.initString("49ce6ac8-6f86-11d2-b1e5-0080c72e74a2");
pub const GUID_DEVCLASS_EHSTORAGESILO = Guid.initString("9da2b80f-f89f-4a49-a5c2-511b085b9e8a");
pub const GUID_DEVCLASS_ENUM1394 = Guid.initString("c459df55-db08-11d1-b009-00a0c9081ff6");
pub const GUID_DEVCLASS_EXTENSION = Guid.initString("e2f84ce7-8efa-411c-aa69-97454ca4cb57");
pub const GUID_DEVCLASS_FDC = Guid.initString("4d36e969-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_FIRMWARE = Guid.initString("f2e7dd72-6468-4e36-b6f1-6488f42c1b52");
pub const GUID_DEVCLASS_FLOPPYDISK = Guid.initString("4d36e980-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_GPS = Guid.initString("6bdd1fc3-810f-11d0-bec7-08002be2092f");
pub const GUID_DEVCLASS_HDC = Guid.initString("4d36e96a-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_HIDCLASS = Guid.initString("745a17a0-74d3-11d0-b6fe-00a0c90f57da");
pub const GUID_DEVCLASS_HOLOGRAPHIC = Guid.initString("d612553d-06b1-49ca-8938-e39ef80eb16f");
pub const GUID_DEVCLASS_IMAGE = Guid.initString("6bdd1fc6-810f-11d0-bec7-08002be2092f");
pub const GUID_DEVCLASS_INFINIBAND = Guid.initString("30ef7132-d858-4a0c-ac24-b9028a5cca3f");
pub const GUID_DEVCLASS_INFRARED = Guid.initString("6bdd1fc5-810f-11d0-bec7-08002be2092f");
pub const GUID_DEVCLASS_KEYBOARD = Guid.initString("4d36e96b-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_LEGACYDRIVER = Guid.initString("8ecc055d-047f-11d1-a537-0000f8753ed1");
pub const GUID_DEVCLASS_MEDIA = Guid.initString("4d36e96c-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_MEDIUM_CHANGER = Guid.initString("ce5939ae-ebde-11d0-b181-0000f8753ec4");
pub const GUID_DEVCLASS_MEMORY = Guid.initString("5099944a-f6b9-4057-a056-8c550228544c");
pub const GUID_DEVCLASS_MODEM = Guid.initString("4d36e96d-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_MONITOR = Guid.initString("4d36e96e-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_MOUSE = Guid.initString("4d36e96f-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_MTD = Guid.initString("4d36e970-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_MULTIFUNCTION = Guid.initString("4d36e971-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_MULTIPORTSERIAL = Guid.initString("50906cb8-ba12-11d1-bf5d-0000f805f530");
pub const GUID_DEVCLASS_NET = Guid.initString("4d36e972-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_NETCLIENT = Guid.initString("4d36e973-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_NETDRIVER = Guid.initString("87ef9ad1-8f70-49ee-b215-ab1fcadcbe3c");
pub const GUID_DEVCLASS_NETSERVICE = Guid.initString("4d36e974-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_NETTRANS = Guid.initString("4d36e975-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_NETUIO = Guid.initString("78912bc1-cb8e-4b28-a329-f322ebadbe0f");
pub const GUID_DEVCLASS_NODRIVER = Guid.initString("4d36e976-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_PCMCIA = Guid.initString("4d36e977-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_PNPPRINTERS = Guid.initString("4658ee7e-f050-11d1-b6bd-00c04fa372a7");
pub const GUID_DEVCLASS_PORTS = Guid.initString("4d36e978-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_PRINTER = Guid.initString("4d36e979-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_PRINTERUPGRADE = Guid.initString("4d36e97a-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_PRINTQUEUE = Guid.initString("1ed2bbf9-11f0-4084-b21f-ad83a8e6dcdc");
pub const GUID_DEVCLASS_PROCESSOR = Guid.initString("50127dc3-0f36-415e-a6cc-4cb3be910b65");
pub const GUID_DEVCLASS_SBP2 = Guid.initString("d48179be-ec20-11d1-b6b8-00c04fa372a7");
pub const GUID_DEVCLASS_SCMDISK = Guid.initString("53966cb1-4d46-4166-bf23-c522403cd495");
pub const GUID_DEVCLASS_SCMVOLUME = Guid.initString("53ccb149-e543-4c84-b6e0-bce4f6b7e806");
pub const GUID_DEVCLASS_SCSIADAPTER = Guid.initString("4d36e97b-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_SECURITYACCELERATOR = Guid.initString("268c95a1-edfe-11d3-95c3-0010dc4050a5");
pub const GUID_DEVCLASS_SENSOR = Guid.initString("5175d334-c371-4806-b3ba-71fd53c9258d");
pub const GUID_DEVCLASS_SIDESHOW = Guid.initString("997b5d8d-c442-4f2e-baf3-9c8e671e9e21");
pub const GUID_DEVCLASS_SMARTCARDREADER = Guid.initString("50dd5230-ba8a-11d1-bf5d-0000f805f530");
pub const GUID_DEVCLASS_SMRDISK = Guid.initString("53487c23-680f-4585-acc3-1f10d6777e82");
pub const GUID_DEVCLASS_SMRVOLUME = Guid.initString("53b3cf03-8f5a-4788-91b6-d19ed9fcccbf");
pub const GUID_DEVCLASS_SOFTWARECOMPONENT = Guid.initString("5c4c3332-344d-483c-8739-259e934c9cc8");
pub const GUID_DEVCLASS_SOUND = Guid.initString("4d36e97c-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_SYSTEM = Guid.initString("4d36e97d-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_TAPEDRIVE = Guid.initString("6d807884-7d21-11cf-801c-08002be10318");
pub const GUID_DEVCLASS_UNKNOWN = Guid.initString("4d36e97e-e325-11ce-bfc1-08002be10318");
pub const GUID_DEVCLASS_UCM = Guid.initString("e6f1aa1c-7f3b-4473-b2e8-c97d8ac71d53");
pub const GUID_DEVCLASS_USB = Guid.initString("36fc9e60-c465-11cf-8056-444553540000");
pub const GUID_DEVCLASS_VOLUME = Guid.initString("71a27cdd-812a-11d0-bec7-08002be2092f");
pub const GUID_DEVCLASS_VOLUMESNAPSHOT = Guid.initString("533c5b84-ec70-11d2-9505-00c04f79deaf");
pub const GUID_DEVCLASS_WCEUSBS = Guid.initString("25dbce51-6c8f-4a72-8a6d-b54c2b4fc835");
pub const GUID_DEVCLASS_WPD = Guid.initString("eec5ad98-8080-425f-922a-dabf3de3f69a");
pub const GUID_DEVCLASS_FSFILTER_TOP = Guid.initString("b369baf4-5568-4e82-a87e-a93eb16bca87");
pub const GUID_DEVCLASS_FSFILTER_ACTIVITYMONITOR = Guid.initString("b86dff51-a31e-4bac-b3cf-e8cfe75c9fc2");
pub const GUID_DEVCLASS_FSFILTER_UNDELETE = Guid.initString("fe8f1572-c67a-48c0-bbac-0b5c6d66cafb");
pub const GUID_DEVCLASS_FSFILTER_ANTIVIRUS = Guid.initString("b1d1a169-c54f-4379-81db-bee7d88d7454");
pub const GUID_DEVCLASS_FSFILTER_REPLICATION = Guid.initString("48d3ebc4-4cf8-48ff-b869-9c68ad42eb9f");
pub const GUID_DEVCLASS_FSFILTER_CONTINUOUSBACKUP = Guid.initString("71aa14f8-6fad-4622-ad77-92bb9d7e6947");
pub const GUID_DEVCLASS_FSFILTER_CONTENTSCREENER = Guid.initString("3e3f0674-c83c-4558-bb26-9820e1eba5c5");
pub const GUID_DEVCLASS_FSFILTER_QUOTAMANAGEMENT = Guid.initString("8503c911-a6c7-4919-8f79-5028f5866b0c");
pub const GUID_DEVCLASS_FSFILTER_SYSTEMRECOVERY = Guid.initString("2db15374-706e-4131-a0c7-d7c78eb0289a");
pub const GUID_DEVCLASS_FSFILTER_CFSMETADATASERVER = Guid.initString("cdcf0939-b75b-4630-bf76-80f7ba655884");
pub const GUID_DEVCLASS_FSFILTER_HSM = Guid.initString("d546500a-2aeb-45f6-9482-f4b1799c3177");
pub const GUID_DEVCLASS_FSFILTER_COMPRESSION = Guid.initString("f3586baf-b5aa-49b5-8d6c-0569284c639f");
pub const GUID_DEVCLASS_FSFILTER_ENCRYPTION = Guid.initString("a0a701c0-a511-42ff-aa6c-06dc0395576f");
pub const GUID_DEVCLASS_FSFILTER_VIRTUALIZATION = Guid.initString("f75a86c0-10d8-4c3a-b233-ed60e4cdfaac");
pub const GUID_DEVCLASS_FSFILTER_PHYSICALQUOTAMANAGEMENT = Guid.initString("6a0a8e78-bba6-4fc4-a709-1e33cd09d67e");
pub const GUID_DEVCLASS_FSFILTER_OPENFILEBACKUP = Guid.initString("f8ecafa6-66d1-41a5-899b-66585d7216b7");
pub const GUID_DEVCLASS_FSFILTER_SECURITYENHANCER = Guid.initString("d02bc3da-0c8e-4945-9bd5-f1883c226c8c");
pub const GUID_DEVCLASS_FSFILTER_COPYPROTECTION = Guid.initString("89786ff1-9c12-402f-9c9e-17753c7f4375");
pub const GUID_DEVCLASS_FSFILTER_BOTTOM = Guid.initString("37765ea0-5958-4fc9-b04b-2fdfef97e59e");
pub const GUID_DEVCLASS_FSFILTER_SYSTEM = Guid.initString("5d1b9aaa-01e2-46af-849f-272b3f324c46");
pub const GUID_DEVCLASS_FSFILTER_INFRASTRUCTURE = Guid.initString("e55fa6f9-128c-4d04-abab-630c74b1453a");
pub const LINE_LEN = @as(u32, 256);
pub const MAX_INF_STRING_LENGTH = @as(u32, 4096);
pub const MAX_INF_SECTION_NAME_LENGTH = @as(u32, 255);
pub const MAX_TITLE_LEN = @as(u32, 60);
pub const MAX_INSTRUCTION_LEN = @as(u32, 256);
pub const MAX_LABEL_LEN = @as(u32, 30);
pub const MAX_SERVICE_NAME_LEN = @as(u32, 256);
pub const MAX_SUBTITLE_LEN = @as(u32, 256);
pub const SP_MAX_MACHINENAME_LENGTH = @as(u32, 263);
pub const SP_ALTPLATFORM_FLAGS_VERSION_RANGE = @as(u32, 1);
pub const SP_ALTPLATFORM_FLAGS_SUITE_MASK = @as(u32, 2);
pub const INF_STYLE_CACHE_ENABLE = @as(u32, 16);
pub const INF_STYLE_CACHE_DISABLE = @as(u32, 32);
pub const INF_STYLE_CACHE_IGNORE = @as(u32, 64);
pub const DIRID_ABSOLUTE = @as(i32, -1);
pub const DIRID_ABSOLUTE_16BIT = @as(u32, 65535);
pub const DIRID_NULL = @as(u32, 0);
pub const DIRID_SRCPATH = @as(u32, 1);
pub const DIRID_WINDOWS = @as(u32, 10);
pub const DIRID_SYSTEM = @as(u32, 11);
pub const DIRID_DRIVERS = @as(u32, 12);
pub const DIRID_IOSUBSYS = @as(u32, 12);
pub const DIRID_DRIVER_STORE = @as(u32, 13);
pub const DIRID_INF = @as(u32, 17);
pub const DIRID_HELP = @as(u32, 18);
pub const DIRID_FONTS = @as(u32, 20);
pub const DIRID_VIEWERS = @as(u32, 21);
pub const DIRID_COLOR = @as(u32, 23);
pub const DIRID_APPS = @as(u32, 24);
pub const DIRID_SHARED = @as(u32, 25);
pub const DIRID_BOOT = @as(u32, 30);
pub const DIRID_SYSTEM16 = @as(u32, 50);
pub const DIRID_SPOOL = @as(u32, 51);
pub const DIRID_SPOOLDRIVERS = @as(u32, 52);
pub const DIRID_USERPROFILE = @as(u32, 53);
pub const DIRID_LOADER = @as(u32, 54);
pub const DIRID_PRINTPROCESSOR = @as(u32, 55);
pub const DIRID_DEFAULT = @as(u32, 11);
pub const DIRID_COMMON_STARTMENU = @as(u32, 16406);
pub const DIRID_COMMON_PROGRAMS = @as(u32, 16407);
pub const DIRID_COMMON_STARTUP = @as(u32, 16408);
pub const DIRID_COMMON_DESKTOPDIRECTORY = @as(u32, 16409);
pub const DIRID_COMMON_FAVORITES = @as(u32, 16415);
pub const DIRID_COMMON_APPDATA = @as(u32, 16419);
pub const DIRID_PROGRAM_FILES = @as(u32, 16422);
pub const DIRID_SYSTEM_X86 = @as(u32, 16425);
pub const DIRID_PROGRAM_FILES_X86 = @as(u32, 16426);
pub const DIRID_PROGRAM_FILES_COMMON = @as(u32, 16427);
pub const DIRID_PROGRAM_FILES_COMMONX86 = @as(u32, 16428);
pub const DIRID_COMMON_TEMPLATES = @as(u32, 16429);
pub const DIRID_COMMON_DOCUMENTS = @as(u32, 16430);
pub const DIRID_USER = @as(u32, 32768);
pub const SPFILENOTIFY_STARTQUEUE = @as(u32, 1);
pub const SPFILENOTIFY_ENDQUEUE = @as(u32, 2);
pub const SPFILENOTIFY_STARTSUBQUEUE = @as(u32, 3);
pub const SPFILENOTIFY_ENDSUBQUEUE = @as(u32, 4);
pub const SPFILENOTIFY_STARTDELETE = @as(u32, 5);
pub const SPFILENOTIFY_ENDDELETE = @as(u32, 6);
pub const SPFILENOTIFY_DELETEERROR = @as(u32, 7);
pub const SPFILENOTIFY_STARTRENAME = @as(u32, 8);
pub const SPFILENOTIFY_ENDRENAME = @as(u32, 9);
pub const SPFILENOTIFY_RENAMEERROR = @as(u32, 10);
pub const SPFILENOTIFY_STARTCOPY = @as(u32, 11);
pub const SPFILENOTIFY_ENDCOPY = @as(u32, 12);
pub const SPFILENOTIFY_COPYERROR = @as(u32, 13);
pub const SPFILENOTIFY_NEEDMEDIA = @as(u32, 14);
pub const SPFILENOTIFY_QUEUESCAN = @as(u32, 15);
pub const SPFILENOTIFY_CABINETINFO = @as(u32, 16);
pub const SPFILENOTIFY_FILEINCABINET = @as(u32, 17);
pub const SPFILENOTIFY_NEEDNEWCABINET = @as(u32, 18);
pub const SPFILENOTIFY_FILEEXTRACTED = @as(u32, 19);
pub const SPFILENOTIFY_FILEOPDELAYED = @as(u32, 20);
pub const SPFILENOTIFY_STARTBACKUP = @as(u32, 21);
pub const SPFILENOTIFY_BACKUPERROR = @as(u32, 22);
pub const SPFILENOTIFY_ENDBACKUP = @as(u32, 23);
pub const SPFILENOTIFY_QUEUESCAN_EX = @as(u32, 24);
pub const SPFILENOTIFY_STARTREGISTRATION = @as(u32, 25);
pub const SPFILENOTIFY_ENDREGISTRATION = @as(u32, 32);
pub const SPFILENOTIFY_QUEUESCAN_SIGNERINFO = @as(u32, 64);
pub const SPFILENOTIFY_LANGMISMATCH = @as(u32, 65536);
pub const SPFILENOTIFY_TARGETEXISTS = @as(u32, 131072);
pub const SPFILENOTIFY_TARGETNEWER = @as(u32, 262144);
pub const FILEOP_RENAME = @as(u32, 1);
pub const FILEOP_BACKUP = @as(u32, 3);
pub const FILEOP_ABORT = @as(u32, 0);
pub const FILEOP_DOIT = @as(u32, 1);
pub const FILEOP_SKIP = @as(u32, 2);
pub const FILEOP_RETRY = @as(u32, 1);
pub const FILEOP_NEWPATH = @as(u32, 4);
pub const COPYFLG_WARN_IF_SKIP = @as(u32, 1);
pub const COPYFLG_NOSKIP = @as(u32, 2);
pub const COPYFLG_NOVERSIONCHECK = @as(u32, 4);
pub const COPYFLG_FORCE_FILE_IN_USE = @as(u32, 8);
pub const COPYFLG_NO_OVERWRITE = @as(u32, 16);
pub const COPYFLG_NO_VERSION_DIALOG = @as(u32, 32);
pub const COPYFLG_OVERWRITE_OLDER_ONLY = @as(u32, 64);
pub const COPYFLG_PROTECTED_WINDOWS_DRIVER_FILE = @as(u32, 256);
pub const COPYFLG_REPLACEONLY = @as(u32, 1024);
pub const COPYFLG_NODECOMP = @as(u32, 2048);
pub const COPYFLG_REPLACE_BOOT_FILE = @as(u32, 4096);
pub const COPYFLG_NOPRUNE = @as(u32, 8192);
pub const COPYFLG_IN_USE_TRY_RENAME = @as(u32, 16384);
pub const DELFLG_IN_USE = @as(u32, 1);
pub const DELFLG_IN_USE1 = @as(u32, 65536);
pub const SPREG_SUCCESS = @as(u32, 0);
pub const SPREG_LOADLIBRARY = @as(u32, 1);
pub const SPREG_GETPROCADDR = @as(u32, 2);
pub const SPREG_REGSVR = @as(u32, 3);
pub const SPREG_DLLINSTALL = @as(u32, 4);
pub const SPREG_TIMEOUT = @as(u32, 5);
pub const SPREG_UNKNOWN = @as(u32, 4294967295);
pub const SPINT_ACTIVE = @as(u32, 1);
pub const SPINT_DEFAULT = @as(u32, 2);
pub const SPINT_REMOVED = @as(u32, 4);
pub const SPID_ACTIVE = @as(u32, 1);
pub const SPID_DEFAULT = @as(u32, 2);
pub const SPID_REMOVED = @as(u32, 4);
pub const DIF_SELECTDEVICE = @as(u32, 1);
pub const DIF_INSTALLDEVICE = @as(u32, 2);
pub const DIF_ASSIGNRESOURCES = @as(u32, 3);
pub const DIF_PROPERTIES = @as(u32, 4);
pub const DIF_REMOVE = @as(u32, 5);
pub const DIF_FIRSTTIMESETUP = @as(u32, 6);
pub const DIF_FOUNDDEVICE = @as(u32, 7);
pub const DIF_SELECTCLASSDRIVERS = @as(u32, 8);
pub const DIF_VALIDATECLASSDRIVERS = @as(u32, 9);
pub const DIF_INSTALLCLASSDRIVERS = @as(u32, 10);
pub const DIF_CALCDISKSPACE = @as(u32, 11);
pub const DIF_DESTROYPRIVATEDATA = @as(u32, 12);
pub const DIF_VALIDATEDRIVER = @as(u32, 13);
pub const DIF_DETECT = @as(u32, 15);
pub const DIF_INSTALLWIZARD = @as(u32, 16);
pub const DIF_DESTROYWIZARDDATA = @as(u32, 17);
pub const DIF_PROPERTYCHANGE = @as(u32, 18);
pub const DIF_ENABLECLASS = @as(u32, 19);
pub const DIF_DETECTVERIFY = @as(u32, 20);
pub const DIF_INSTALLDEVICEFILES = @as(u32, 21);
pub const DIF_UNREMOVE = @as(u32, 22);
pub const DIF_SELECTBESTCOMPATDRV = @as(u32, 23);
pub const DIF_ALLOW_INSTALL = @as(u32, 24);
pub const DIF_REGISTERDEVICE = @as(u32, 25);
pub const DIF_NEWDEVICEWIZARD_PRESELECT = @as(u32, 26);
pub const DIF_NEWDEVICEWIZARD_SELECT = @as(u32, 27);
pub const DIF_NEWDEVICEWIZARD_PREANALYZE = @as(u32, 28);
pub const DIF_NEWDEVICEWIZARD_POSTANALYZE = @as(u32, 29);
pub const DIF_NEWDEVICEWIZARD_FINISHINSTALL = @as(u32, 30);
pub const DIF_UNUSED1 = @as(u32, 31);
pub const DIF_INSTALLINTERFACES = @as(u32, 32);
pub const DIF_DETECTCANCEL = @as(u32, 33);
pub const DIF_REGISTER_COINSTALLERS = @as(u32, 34);
pub const DIF_ADDPROPERTYPAGE_ADVANCED = @as(u32, 35);
pub const DIF_ADDPROPERTYPAGE_BASIC = @as(u32, 36);
pub const DIF_RESERVED1 = @as(u32, 37);
pub const DIF_TROUBLESHOOTER = @as(u32, 38);
pub const DIF_POWERMESSAGEWAKE = @as(u32, 39);
pub const DIF_ADDREMOTEPROPERTYPAGE_ADVANCED = @as(u32, 40);
pub const DIF_UPDATEDRIVER_UI = @as(u32, 41);
pub const DIF_FINISHINSTALL_ACTION = @as(u32, 42);
pub const DIF_RESERVED2 = @as(u32, 48);
pub const DIF_MOVEDEVICE = @as(u32, 14);
pub const DI_SHOWOEM = @as(i32, 1);
pub const DI_SHOWCOMPAT = @as(i32, 2);
pub const DI_SHOWCLASS = @as(i32, 4);
pub const DI_SHOWALL = @as(i32, 7);
pub const DI_NOVCP = @as(i32, 8);
pub const DI_DIDCOMPAT = @as(i32, 16);
pub const DI_DIDCLASS = @as(i32, 32);
pub const DI_AUTOASSIGNRES = @as(i32, 64);
pub const DI_NEEDRESTART = @as(i32, 128);
pub const DI_NEEDREBOOT = @as(i32, 256);
pub const DI_NOBROWSE = @as(i32, 512);
pub const DI_MULTMFGS = @as(i32, 1024);
pub const DI_DISABLED = @as(i32, 2048);
pub const DI_GENERALPAGE_ADDED = @as(i32, 4096);
pub const DI_RESOURCEPAGE_ADDED = @as(i32, 8192);
pub const DI_PROPERTIES_CHANGE = @as(i32, 16384);
pub const DI_INF_IS_SORTED = @as(i32, 32768);
pub const DI_ENUMSINGLEINF = @as(i32, 65536);
pub const DI_DONOTCALLCONFIGMG = @as(i32, 131072);
pub const DI_INSTALLDISABLED = @as(i32, 262144);
pub const DI_COMPAT_FROM_CLASS = @as(i32, 524288);
pub const DI_CLASSINSTALLPARAMS = @as(i32, 1048576);
pub const DI_NODI_DEFAULTACTION = @as(i32, 2097152);
pub const DI_QUIETINSTALL = @as(i32, 8388608);
pub const DI_NOFILECOPY = @as(i32, 16777216);
pub const DI_FORCECOPY = @as(i32, 33554432);
pub const DI_DRIVERPAGE_ADDED = @as(i32, 67108864);
pub const DI_USECI_SELECTSTRINGS = @as(i32, 134217728);
pub const DI_OVERRIDE_INFFLAGS = @as(i32, 268435456);
pub const DI_PROPS_NOCHANGEUSAGE = @as(i32, 536870912);
pub const DI_NOSELECTICONS = @as(i32, 1073741824);
pub const DI_NOWRITE_IDS = @as(i32, -2147483648);
pub const DI_FLAGSEX_RESERVED2 = @as(i32, 1);
pub const DI_FLAGSEX_RESERVED3 = @as(i32, 2);
pub const DI_FLAGSEX_CI_FAILED = @as(i32, 4);
pub const DI_FLAGSEX_FINISHINSTALL_ACTION = @as(i32, 8);
pub const DI_FLAGSEX_DIDINFOLIST = @as(i32, 16);
pub const DI_FLAGSEX_DIDCOMPATINFO = @as(i32, 32);
pub const DI_FLAGSEX_FILTERCLASSES = @as(i32, 64);
pub const DI_FLAGSEX_SETFAILEDINSTALL = @as(i32, 128);
pub const DI_FLAGSEX_DEVICECHANGE = @as(i32, 256);
pub const DI_FLAGSEX_ALWAYSWRITEIDS = @as(i32, 512);
pub const DI_FLAGSEX_PROPCHANGE_PENDING = @as(i32, 1024);
pub const DI_FLAGSEX_ALLOWEXCLUDEDDRVS = @as(i32, 2048);
pub const DI_FLAGSEX_NOUIONQUERYREMOVE = @as(i32, 4096);
pub const DI_FLAGSEX_USECLASSFORCOMPAT = @as(i32, 8192);
pub const DI_FLAGSEX_RESERVED4 = @as(i32, 16384);
pub const DI_FLAGSEX_NO_DRVREG_MODIFY = @as(i32, 32768);
pub const DI_FLAGSEX_IN_SYSTEM_SETUP = @as(i32, 65536);
pub const DI_FLAGSEX_INET_DRIVER = @as(i32, 131072);
pub const DI_FLAGSEX_APPENDDRIVERLIST = @as(i32, 262144);
pub const DI_FLAGSEX_PREINSTALLBACKUP = @as(i32, 524288);
pub const DI_FLAGSEX_BACKUPONREPLACE = @as(i32, 1048576);
pub const DI_FLAGSEX_DRIVERLIST_FROM_URL = @as(i32, 2097152);
pub const DI_FLAGSEX_RESERVED1 = @as(i32, 4194304);
pub const DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS = @as(i32, 8388608);
pub const DI_FLAGSEX_POWERPAGE_ADDED = @as(i32, 16777216);
pub const DI_FLAGSEX_FILTERSIMILARDRIVERS = @as(i32, 33554432);
pub const DI_FLAGSEX_INSTALLEDDRIVER = @as(i32, 67108864);
pub const DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE = @as(i32, 134217728);
pub const DI_FLAGSEX_ALTPLATFORM_DRVSEARCH = @as(i32, 268435456);
pub const DI_FLAGSEX_RESTART_DEVICE_ONLY = @as(i32, 536870912);
pub const DI_FLAGSEX_RECURSIVESEARCH = @as(i32, 1073741824);
pub const DI_FLAGSEX_SEARCH_PUBLISHED_INFS = @as(i32, -2147483648);
pub const ENABLECLASS_QUERY = @as(u32, 0);
pub const ENABLECLASS_SUCCESS = @as(u32, 1);
pub const ENABLECLASS_FAILURE = @as(u32, 2);
pub const DICS_ENABLE = @as(u32, 1);
pub const DICS_DISABLE = @as(u32, 2);
pub const DICS_PROPCHANGE = @as(u32, 3);
pub const DICS_START = @as(u32, 4);
pub const DICS_STOP = @as(u32, 5);
pub const DICS_FLAG_GLOBAL = @as(u32, 1);
pub const DICS_FLAG_CONFIGSPECIFIC = @as(u32, 2);
pub const DICS_FLAG_CONFIGGENERAL = @as(u32, 4);
pub const DI_REMOVEDEVICE_GLOBAL = @as(u32, 1);
pub const DI_REMOVEDEVICE_CONFIGSPECIFIC = @as(u32, 2);
pub const DI_UNREMOVEDEVICE_CONFIGSPECIFIC = @as(u32, 2);
pub const MAX_INSTALLWIZARD_DYNAPAGES = @as(u32, 20);
pub const NDW_INSTALLFLAG_DIDFACTDEFS = @as(u32, 1);
pub const NDW_INSTALLFLAG_HARDWAREALLREADYIN = @as(u32, 2);
pub const NDW_INSTALLFLAG_NEEDRESTART = @as(i32, 128);
pub const NDW_INSTALLFLAG_NEEDREBOOT = @as(i32, 256);
pub const NDW_INSTALLFLAG_NEEDSHUTDOWN = @as(u32, 512);
pub const NDW_INSTALLFLAG_EXPRESSINTRO = @as(u32, 1024);
pub const NDW_INSTALLFLAG_SKIPISDEVINSTALLED = @as(u32, 2048);
pub const NDW_INSTALLFLAG_NODETECTEDDEVS = @as(u32, 4096);
pub const NDW_INSTALLFLAG_INSTALLSPECIFIC = @as(u32, 8192);
pub const NDW_INSTALLFLAG_SKIPCLASSLIST = @as(u32, 16384);
pub const NDW_INSTALLFLAG_CI_PICKED_OEM = @as(u32, 32768);
pub const NDW_INSTALLFLAG_PCMCIAMODE = @as(u32, 65536);
pub const NDW_INSTALLFLAG_PCMCIADEVICE = @as(u32, 131072);
pub const NDW_INSTALLFLAG_USERCANCEL = @as(u32, 262144);
pub const NDW_INSTALLFLAG_KNOWNCLASS = @as(u32, 524288);
pub const DYNAWIZ_FLAG_PAGESADDED = @as(u32, 1);
pub const DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT = @as(u32, 8);
pub const DYNAWIZ_FLAG_INSTALLDET_NEXT = @as(u32, 2);
pub const DYNAWIZ_FLAG_INSTALLDET_PREV = @as(u32, 4);
pub const MIN_IDD_DYNAWIZ_RESOURCE_ID = @as(u32, 10000);
pub const MAX_IDD_DYNAWIZ_RESOURCE_ID = @as(u32, 11000);
pub const IDD_DYNAWIZ_FIRSTPAGE = @as(u32, 10000);
pub const IDD_DYNAWIZ_SELECT_PREVPAGE = @as(u32, 10001);
pub const IDD_DYNAWIZ_SELECT_NEXTPAGE = @as(u32, 10002);
pub const IDD_DYNAWIZ_ANALYZE_PREVPAGE = @as(u32, 10003);
pub const IDD_DYNAWIZ_ANALYZE_NEXTPAGE = @as(u32, 10004);
pub const IDD_DYNAWIZ_SELECTDEV_PAGE = @as(u32, 10009);
pub const IDD_DYNAWIZ_ANALYZEDEV_PAGE = @as(u32, 10010);
pub const IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE = @as(u32, 10011);
pub const IDD_DYNAWIZ_SELECTCLASS_PAGE = @as(u32, 10012);
pub const IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE = @as(u32, 10006);
pub const IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE = @as(u32, 10007);
pub const IDD_DYNAWIZ_INSTALLDETECTED_NODEVS = @as(u32, 10008);
pub const DNF_DUPDESC = @as(u32, 1);
pub const DNF_OLDDRIVER = @as(u32, 2);
pub const DNF_EXCLUDEFROMLIST = @as(u32, 4);
pub const DNF_NODRIVER = @as(u32, 8);
pub const DNF_LEGACYINF = @as(u32, 16);
pub const DNF_CLASS_DRIVER = @as(u32, 32);
pub const DNF_COMPATIBLE_DRIVER = @as(u32, 64);
pub const DNF_INET_DRIVER = @as(u32, 128);
pub const DNF_UNUSED1 = @as(u32, 256);
pub const DNF_UNUSED2 = @as(u32, 512);
pub const DNF_OLD_INET_DRIVER = @as(u32, 1024);
pub const DNF_BAD_DRIVER = @as(u32, 2048);
pub const DNF_DUPPROVIDER = @as(u32, 4096);
pub const DNF_INF_IS_SIGNED = @as(u32, 8192);
pub const DNF_OEM_F6_INF = @as(u32, 16384);
pub const DNF_DUPDRIVERVER = @as(u32, 32768);
pub const DNF_BASIC_DRIVER = @as(u32, 65536);
pub const DNF_AUTHENTICODE_SIGNED = @as(u32, 131072);
pub const DNF_INSTALLEDDRIVER = @as(u32, 262144);
pub const DNF_ALWAYSEXCLUDEFROMLIST = @as(u32, 524288);
pub const DNF_INBOX_DRIVER = @as(u32, 1048576);
pub const DNF_REQUESTADDITIONALSOFTWARE = @as(u32, 2097152);
pub const DNF_UNUSED_22 = @as(u32, 4194304);
pub const DNF_UNUSED_23 = @as(u32, 8388608);
pub const DNF_UNUSED_24 = @as(u32, 16777216);
pub const DNF_UNUSED_25 = @as(u32, 33554432);
pub const DNF_UNUSED_26 = @as(u32, 67108864);
pub const DNF_UNUSED_27 = @as(u32, 134217728);
pub const DNF_UNUSED_28 = @as(u32, 268435456);
pub const DNF_UNUSED_29 = @as(u32, 536870912);
pub const DNF_UNUSED_30 = @as(u32, 1073741824);
pub const DNF_UNUSED_31 = @as(u32, 2147483648);
pub const DRIVER_HARDWAREID_RANK = @as(u32, 4095);
pub const DRIVER_HARDWAREID_MASK = @as(u32, 2147487743);
pub const DRIVER_UNTRUSTED_RANK = @as(u32, 2147483648);
pub const DRIVER_W9X_SUSPECT_RANK = @as(u32, 3221225472);
pub const DRIVER_COMPATID_RANK = @as(u32, 16383);
pub const DRIVER_UNTRUSTED_HARDWAREID_RANK = @as(u32, 36863);
pub const DRIVER_UNTRUSTED_COMPATID_RANK = @as(u32, 49151);
pub const DRIVER_W9X_SUSPECT_HARDWAREID_RANK = @as(u32, 53247);
pub const DRIVER_W9X_SUSPECT_COMPATID_RANK = @as(u32, 65535);
pub const SPPSR_SELECT_DEVICE_RESOURCES = @as(u32, 1);
pub const SPPSR_ENUM_BASIC_DEVICE_PROPERTIES = @as(u32, 2);
pub const SPPSR_ENUM_ADV_DEVICE_PROPERTIES = @as(u32, 3);
pub const INFINFO_INF_SPEC_IS_HINF = @as(u32, 1);
pub const INFINFO_INF_NAME_IS_ABSOLUTE = @as(u32, 2);
pub const INFINFO_DEFAULT_SEARCH = @as(u32, 3);
pub const INFINFO_REVERSE_DEFAULT_SEARCH = @as(u32, 4);
pub const INFINFO_INF_PATH_LIST_SEARCH = @as(u32, 5);
pub const FILE_COMPRESSION_NONE = @as(u32, 0);
pub const FILE_COMPRESSION_WINLZA = @as(u32, 1);
pub const FILE_COMPRESSION_MSZIP = @as(u32, 2);
pub const FILE_COMPRESSION_NTCAB = @as(u32, 3);
pub const SRCLIST_TEMPORARY = @as(u32, 1);
pub const SRCLIST_NOBROWSE = @as(u32, 2);
pub const SRCLIST_SYSTEM = @as(u32, 16);
pub const SRCLIST_USER = @as(u32, 32);
pub const SRCLIST_SYSIFADMIN = @as(u32, 64);
pub const SRCLIST_SUBDIRS = @as(u32, 256);
pub const SRCLIST_APPEND = @as(u32, 512);
pub const SRCLIST_NOSTRIPPLATFORM = @as(u32, 1024);
pub const IDF_NOBROWSE = @as(u32, 1);
pub const IDF_NOSKIP = @as(u32, 2);
pub const IDF_NODETAILS = @as(u32, 4);
pub const IDF_NOCOMPRESSED = @as(u32, 8);
pub const IDF_CHECKFIRST = @as(u32, 256);
pub const IDF_NOBEEP = @as(u32, 512);
pub const IDF_NOFOREGROUND = @as(u32, 1024);
pub const IDF_WARNIFSKIP = @as(u32, 2048);
pub const IDF_NOREMOVABLEMEDIAPROMPT = @as(u32, 4096);
pub const IDF_USEDISKNAMEASPROMPT = @as(u32, 8192);
pub const IDF_OEMDISK = @as(u32, 2147483648);
pub const DPROMPT_SUCCESS = @as(u32, 0);
pub const DPROMPT_CANCEL = @as(u32, 1);
pub const DPROMPT_SKIPFILE = @as(u32, 2);
pub const DPROMPT_BUFFERTOOSMALL = @as(u32, 3);
pub const DPROMPT_OUTOFMEMORY = @as(u32, 4);
pub const SETDIRID_NOT_FULL_PATH = @as(u32, 1);
pub const SRCINFO_PATH = @as(u32, 1);
pub const SRCINFO_TAGFILE = @as(u32, 2);
pub const SRCINFO_DESCRIPTION = @as(u32, 3);
pub const SRCINFO_FLAGS = @as(u32, 4);
pub const SRCINFO_TAGFILE2 = @as(u32, 5);
pub const SRC_FLAGS_CABFILE = @as(u32, 16);
pub const SP_FLAG_CABINETCONTINUATION = @as(u32, 2048);
pub const SP_BACKUP_BACKUPPASS = @as(u32, 1);
pub const SP_BACKUP_DEMANDPASS = @as(u32, 2);
pub const SP_BACKUP_SPECIAL = @as(u32, 4);
pub const SP_BACKUP_BOOTFILE = @as(u32, 8);
pub const SPQ_SCAN_FILE_PRESENCE = @as(u32, 1);
pub const SPQ_SCAN_FILE_VALIDITY = @as(u32, 2);
pub const SPQ_SCAN_USE_CALLBACK = @as(u32, 4);
pub const SPQ_SCAN_USE_CALLBACKEX = @as(u32, 8);
pub const SPQ_SCAN_INFORM_USER = @as(u32, 16);
pub const SPQ_SCAN_PRUNE_COPY_QUEUE = @as(u32, 32);
pub const SPQ_SCAN_USE_CALLBACK_SIGNERINFO = @as(u32, 64);
pub const SPQ_SCAN_PRUNE_DELREN = @as(u32, 128);
pub const SPQ_SCAN_FILE_PRESENCE_WITHOUT_SOURCE = @as(u32, 256);
pub const SPQ_SCAN_FILE_COMPARISON = @as(u32, 512);
pub const SPQ_SCAN_ACTIVATE_DRP = @as(u32, 1024);
pub const SPQ_DELAYED_COPY = @as(u32, 1);
pub const SPQ_FLAG_BACKUP_AWARE = @as(u32, 1);
pub const SPQ_FLAG_ABORT_IF_UNSIGNED = @as(u32, 2);
pub const SPQ_FLAG_FILES_MODIFIED = @as(u32, 4);
pub const SPQ_FLAG_DO_SHUFFLEMOVE = @as(u32, 8);
pub const SPQ_FLAG_VALID = @as(u32, 15);
pub const SPOST_MAX = @as(u32, 3);
pub const SUOI_FORCEDELETE = @as(u32, 1);
pub const SUOI_INTERNAL1 = @as(u32, 2);
pub const SPDSL_IGNORE_DISK = @as(u32, 1);
pub const SPDSL_DISALLOW_NEGATIVE_ADJUST = @as(u32, 2);
pub const SPFILEQ_FILE_IN_USE = @as(u32, 1);
pub const SPFILEQ_REBOOT_RECOMMENDED = @as(u32, 2);
pub const SPFILEQ_REBOOT_IN_PROGRESS = @as(u32, 4);
pub const FLG_ADDREG_DELREG_BIT = @as(u32, 32768);
pub const FLG_ADDREG_BINVALUETYPE = @as(u32, 1);
pub const FLG_ADDREG_NOCLOBBER = @as(u32, 2);
pub const FLG_ADDREG_DELVAL = @as(u32, 4);
pub const FLG_ADDREG_APPEND = @as(u32, 8);
pub const FLG_ADDREG_KEYONLY = @as(u32, 16);
pub const FLG_ADDREG_OVERWRITEONLY = @as(u32, 32);
pub const FLG_ADDREG_64BITKEY = @as(u32, 4096);
pub const FLG_ADDREG_KEYONLY_COMMON = @as(u32, 8192);
pub const FLG_ADDREG_32BITKEY = @as(u32, 16384);
pub const FLG_ADDREG_TYPE_SZ = @as(u32, 0);
pub const FLG_ADDREG_TYPE_MULTI_SZ = @as(u32, 65536);
pub const FLG_ADDREG_TYPE_EXPAND_SZ = @as(u32, 131072);
pub const FLG_DELREG_VALUE = @as(u32, 0);
pub const FLG_DELREG_TYPE_SZ = @as(u32, 0);
pub const FLG_DELREG_TYPE_MULTI_SZ = @as(u32, 65536);
pub const FLG_DELREG_TYPE_EXPAND_SZ = @as(u32, 131072);
pub const FLG_DELREG_64BITKEY = @as(u32, 4096);
pub const FLG_DELREG_KEYONLY_COMMON = @as(u32, 8192);
pub const FLG_DELREG_32BITKEY = @as(u32, 16384);
pub const FLG_DELREG_OPERATION_MASK = @as(u32, 254);
pub const FLG_BITREG_CLEARBITS = @as(u32, 0);
pub const FLG_BITREG_SETBITS = @as(u32, 1);
pub const FLG_BITREG_64BITKEY = @as(u32, 4096);
pub const FLG_BITREG_32BITKEY = @as(u32, 16384);
pub const FLG_INI2REG_64BITKEY = @as(u32, 4096);
pub const FLG_INI2REG_32BITKEY = @as(u32, 16384);
pub const FLG_REGSVR_DLLREGISTER = @as(u32, 1);
pub const FLG_REGSVR_DLLINSTALL = @as(u32, 2);
pub const FLG_PROFITEM_CURRENTUSER = @as(u32, 1);
pub const FLG_PROFITEM_DELETE = @as(u32, 2);
pub const FLG_PROFITEM_GROUP = @as(u32, 4);
pub const FLG_PROFITEM_CSIDL = @as(u32, 8);
pub const FLG_ADDPROPERTY_NOCLOBBER = @as(u32, 1);
pub const FLG_ADDPROPERTY_OVERWRITEONLY = @as(u32, 2);
pub const FLG_ADDPROPERTY_APPEND = @as(u32, 4);
pub const FLG_ADDPROPERTY_OR = @as(u32, 8);
pub const FLG_ADDPROPERTY_AND = @as(u32, 16);
pub const FLG_DELPROPERTY_MULTI_SZ_DELSTRING = @as(u32, 1);
pub const SPINST_LOGCONFIG = @as(u32, 1);
pub const SPINST_INIFILES = @as(u32, 2);
pub const SPINST_REGISTRY = @as(u32, 4);
pub const SPINST_INI2REG = @as(u32, 8);
pub const SPINST_FILES = @as(u32, 16);
pub const SPINST_BITREG = @as(u32, 32);
pub const SPINST_REGSVR = @as(u32, 64);
pub const SPINST_UNREGSVR = @as(u32, 128);
pub const SPINST_PROFILEITEMS = @as(u32, 256);
pub const SPINST_COPYINF = @as(u32, 512);
pub const SPINST_PROPERTIES = @as(u32, 1024);
pub const SPINST_ALL = @as(u32, 2047);
pub const SPINST_SINGLESECTION = @as(u32, 65536);
pub const SPINST_LOGCONFIG_IS_FORCED = @as(u32, 131072);
pub const SPINST_LOGCONFIGS_ARE_OVERRIDES = @as(u32, 262144);
pub const SPINST_REGISTERCALLBACKAWARE = @as(u32, 524288);
pub const SPINST_DEVICEINSTALL = @as(u32, 1048576);
pub const SPSVCINST_TAGTOFRONT = @as(u32, 1);
pub const SPSVCINST_ASSOCSERVICE = @as(u32, 2);
pub const SPSVCINST_DELETEEVENTLOGENTRY = @as(u32, 4);
pub const SPSVCINST_NOCLOBBER_DISPLAYNAME = @as(u32, 8);
pub const SPSVCINST_NOCLOBBER_STARTTYPE = @as(u32, 16);
pub const SPSVCINST_NOCLOBBER_ERRORCONTROL = @as(u32, 32);
pub const SPSVCINST_NOCLOBBER_LOADORDERGROUP = @as(u32, 64);
pub const SPSVCINST_NOCLOBBER_DEPENDENCIES = @as(u32, 128);
pub const SPSVCINST_NOCLOBBER_DESCRIPTION = @as(u32, 256);
pub const SPSVCINST_STOPSERVICE = @as(u32, 512);
pub const SPSVCINST_CLOBBER_SECURITY = @as(u32, 1024);
pub const SPSVCINST_STARTSERVICE = @as(u32, 2048);
pub const SPSVCINST_NOCLOBBER_REQUIREDPRIVILEGES = @as(u32, 4096);
pub const SPSVCINST_NOCLOBBER_TRIGGERS = @as(u32, 8192);
pub const SPSVCINST_NOCLOBBER_SERVICESIDTYPE = @as(u32, 16384);
pub const SPSVCINST_NOCLOBBER_DELAYEDAUTOSTART = @as(u32, 32768);
pub const SPSVCINST_UNIQUE_NAME = @as(u32, 65536);
pub const SPFILELOG_SYSTEMLOG = @as(u32, 1);
pub const SPFILELOG_FORCENEW = @as(u32, 2);
pub const SPFILELOG_QUERYONLY = @as(u32, 4);
pub const SPFILELOG_OEMFILE = @as(u32, 1);
pub const LogSevInformation = @as(u32, 0);
pub const LogSevWarning = @as(u32, 1);
pub const LogSevError = @as(u32, 2);
pub const LogSevFatalError = @as(u32, 3);
pub const LogSevMaximum = @as(u32, 4);
pub const DICD_GENERATE_ID = @as(u32, 1);
pub const DICD_INHERIT_CLASSDRVS = @as(u32, 2);
pub const DIOD_INHERIT_CLASSDRVS = @as(u32, 2);
pub const DIOD_CANCEL_REMOVE = @as(u32, 4);
pub const DIODI_NO_ADD = @as(u32, 1);
pub const SPRDI_FIND_DUPS = @as(u32, 1);
pub const SPDIT_NODRIVER = @as(u32, 0);
pub const DIGCF_DEFAULT = @as(u32, 1);
pub const DIGCF_PRESENT = @as(u32, 2);
pub const DIGCF_ALLCLASSES = @as(u32, 4);
pub const DIGCF_PROFILE = @as(u32, 8);
pub const DIGCF_DEVICEINTERFACE = @as(u32, 16);
pub const DIGCF_INTERFACEDEVICE = @as(u32, 16);
pub const DIBCI_NOINSTALLCLASS = @as(u32, 1);
pub const DIBCI_NODISPLAYCLASS = @as(u32, 2);
pub const DIOCR_INSTALLER = @as(u32, 1);
pub const DIOCR_INTERFACE = @as(u32, 2);
pub const DIREG_DEV = @as(u32, 1);
pub const DIREG_DRV = @as(u32, 2);
pub const DIREG_BOTH = @as(u32, 4);
pub const DICLASSPROP_INSTALLER = @as(u32, 1);
pub const DICLASSPROP_INTERFACE = @as(u32, 2);
pub const SPDRP_DEVICEDESC = @as(u32, 0);
pub const SPDRP_HARDWAREID = @as(u32, 1);
pub const SPDRP_COMPATIBLEIDS = @as(u32, 2);
pub const SPDRP_UNUSED0 = @as(u32, 3);
pub const SPDRP_SERVICE = @as(u32, 4);
pub const SPDRP_UNUSED1 = @as(u32, 5);
pub const SPDRP_UNUSED2 = @as(u32, 6);
pub const SPDRP_CLASS = @as(u32, 7);
pub const SPDRP_CLASSGUID = @as(u32, 8);
pub const SPDRP_DRIVER = @as(u32, 9);
pub const SPDRP_CONFIGFLAGS = @as(u32, 10);
pub const SPDRP_MFG = @as(u32, 11);
pub const SPDRP_FRIENDLYNAME = @as(u32, 12);
pub const SPDRP_LOCATION_INFORMATION = @as(u32, 13);
pub const SPDRP_PHYSICAL_DEVICE_OBJECT_NAME = @as(u32, 14);
pub const SPDRP_CAPABILITIES = @as(u32, 15);
pub const SPDRP_UI_NUMBER = @as(u32, 16);
pub const SPDRP_UPPERFILTERS = @as(u32, 17);
pub const SPDRP_LOWERFILTERS = @as(u32, 18);
pub const SPDRP_BUSTYPEGUID = @as(u32, 19);
pub const SPDRP_LEGACYBUSTYPE = @as(u32, 20);
pub const SPDRP_BUSNUMBER = @as(u32, 21);
pub const SPDRP_ENUMERATOR_NAME = @as(u32, 22);
pub const SPDRP_SECURITY = @as(u32, 23);
pub const SPDRP_SECURITY_SDS = @as(u32, 24);
pub const SPDRP_DEVTYPE = @as(u32, 25);
pub const SPDRP_EXCLUSIVE = @as(u32, 26);
pub const SPDRP_CHARACTERISTICS = @as(u32, 27);
pub const SPDRP_ADDRESS = @as(u32, 28);
pub const SPDRP_UI_NUMBER_DESC_FORMAT = @as(u32, 29);
pub const SPDRP_DEVICE_POWER_DATA = @as(u32, 30);
pub const SPDRP_REMOVAL_POLICY = @as(u32, 31);
pub const SPDRP_REMOVAL_POLICY_HW_DEFAULT = @as(u32, 32);
pub const SPDRP_REMOVAL_POLICY_OVERRIDE = @as(u32, 33);
pub const SPDRP_INSTALL_STATE = @as(u32, 34);
pub const SPDRP_LOCATION_PATHS = @as(u32, 35);
pub const SPDRP_BASE_CONTAINERID = @as(u32, 36);
pub const SPDRP_MAXIMUM_PROPERTY = @as(u32, 37);
pub const SPCRP_UPPERFILTERS = @as(u32, 17);
pub const SPCRP_LOWERFILTERS = @as(u32, 18);
pub const SPCRP_SECURITY = @as(u32, 23);
pub const SPCRP_SECURITY_SDS = @as(u32, 24);
pub const SPCRP_DEVTYPE = @as(u32, 25);
pub const SPCRP_EXCLUSIVE = @as(u32, 26);
pub const SPCRP_CHARACTERISTICS = @as(u32, 27);
pub const SPCRP_MAXIMUM_PROPERTY = @as(u32, 28);
pub const DMI_MASK = @as(u32, 1);
pub const DMI_BKCOLOR = @as(u32, 2);
pub const DMI_USERECT = @as(u32, 4);
pub const DIGCDP_FLAG_BASIC = @as(u32, 1);
pub const DIGCDP_FLAG_ADVANCED = @as(u32, 2);
pub const DIGCDP_FLAG_REMOTE_BASIC = @as(u32, 3);
pub const DIGCDP_FLAG_REMOTE_ADVANCED = @as(u32, 4);
pub const IDI_RESOURCEFIRST = @as(u32, 159);
pub const IDI_RESOURCE = @as(u32, 159);
pub const IDI_RESOURCELAST = @as(u32, 161);
pub const IDI_RESOURCEOVERLAYFIRST = @as(u32, 161);
pub const IDI_RESOURCEOVERLAYLAST = @as(u32, 161);
pub const IDI_CONFLICT = @as(u32, 161);
pub const IDI_CLASSICON_OVERLAYFIRST = @as(u32, 500);
pub const IDI_CLASSICON_OVERLAYLAST = @as(u32, 502);
pub const IDI_PROBLEM_OVL = @as(u32, 500);
pub const IDI_DISABLED_OVL = @as(u32, 501);
pub const IDI_FORCED_OVL = @as(u32, 502);
pub const SPWPT_SELECTDEVICE = @as(u32, 1);
pub const SPWP_USE_DEVINFO_DATA = @as(u32, 1);
pub const SIGNERSCORE_UNKNOWN = @as(u32, 4278190080);
pub const SIGNERSCORE_W9X_SUSPECT = @as(u32, 3221225472);
pub const SIGNERSCORE_UNSIGNED = @as(u32, 2147483648);
pub const SIGNERSCORE_AUTHENTICODE = @as(u32, 251658240);
pub const SIGNERSCORE_WHQL = @as(u32, 218103813);
pub const SIGNERSCORE_UNCLASSIFIED = @as(u32, 218103812);
pub const SIGNERSCORE_INBOX = @as(u32, 218103811);
pub const SIGNERSCORE_LOGO_STANDARD = @as(u32, 218103810);
pub const SIGNERSCORE_LOGO_PREMIUM = @as(u32, 218103809);
pub const SIGNERSCORE_MASK = @as(u32, 4278190080);
pub const SIGNERSCORE_SIGNED_MASK = @as(u32, 4026531840);
pub const DICUSTOMDEVPROP_MERGE_MULTISZ = @as(u32, 1);
pub const SCWMI_CLOBBER_SECURITY = @as(u32, 1);
pub const MAX_DEVICE_ID_LEN = @as(u32, 200);
pub const MAX_DEVNODE_ID_LEN = @as(u32, 200);
pub const MAX_GUID_STRING_LEN = @as(u32, 39);
pub const MAX_CLASS_NAME_LEN = @as(u32, 32);
pub const MAX_PROFILE_LEN = @as(u32, 80);
pub const MAX_CONFIG_VALUE = @as(u32, 9999);
pub const MAX_INSTANCE_VALUE = @as(u32, 9999);
pub const MAX_MEM_REGISTERS = @as(u32, 9);
pub const MAX_IO_PORTS = @as(u32, 20);
pub const MAX_IRQS = @as(u32, 7);
pub const MAX_DMA_CHANNELS = @as(u32, 7);
pub const DWORD_MAX = @as(u32, 4294967295);
pub const CONFIGMG_VERSION = @as(u32, 1024);
pub const CM_CDMASK_DEVINST = @as(u32, 1);
pub const CM_CDMASK_RESDES = @as(u32, 2);
pub const CM_CDMASK_FLAGS = @as(u32, 4);
pub const CM_CDMASK_DESCRIPTION = @as(u32, 8);
pub const CM_CDMASK_VALID = @as(u32, 15);
pub const CM_CDFLAGS_DRIVER = @as(u32, 1);
pub const CM_CDFLAGS_ROOT_OWNED = @as(u32, 2);
pub const CM_CDFLAGS_RESERVED = @as(u32, 4);
pub const IO_ALIAS_10_BIT_DECODE = @as(u32, 4);
pub const IO_ALIAS_12_BIT_DECODE = @as(u32, 16);
pub const IO_ALIAS_16_BIT_DECODE = @as(u32, 0);
pub const IO_ALIAS_POSITIVE_DECODE = @as(u32, 255);
pub const IOA_Local = @as(u32, 255);
pub const CM_RESDES_WIDTH_DEFAULT = @as(u32, 0);
pub const CM_RESDES_WIDTH_32 = @as(u32, 1);
pub const CM_RESDES_WIDTH_64 = @as(u32, 2);
pub const CM_RESDES_WIDTH_BITS = @as(u32, 3);
pub const PCD_MAX_MEMORY = @as(u32, 2);
pub const PCD_MAX_IO = @as(u32, 2);
pub const CM_HWPI_NOT_DOCKABLE = @as(u32, 0);
pub const CM_HWPI_UNDOCKED = @as(u32, 1);
pub const CM_HWPI_DOCKED = @as(u32, 2);
pub const ResType_All = @as(u32, 0);
pub const ResType_None = @as(u32, 0);
pub const ResType_Mem = @as(u32, 1);
pub const ResType_IO = @as(u32, 2);
pub const ResType_DMA = @as(u32, 3);
pub const ResType_IRQ = @as(u32, 4);
pub const ResType_DoNotUse = @as(u32, 5);
pub const ResType_BusNumber = @as(u32, 6);
pub const ResType_MemLarge = @as(u32, 7);
pub const ResType_MAX = @as(u32, 7);
pub const ResType_Ignored_Bit = @as(u32, 32768);
pub const ResType_ClassSpecific = @as(u32, 65535);
pub const ResType_Reserved = @as(u32, 32768);
pub const ResType_DevicePrivate = @as(u32, 32769);
pub const ResType_PcCardConfig = @as(u32, 32770);
pub const ResType_MfCardConfig = @as(u32, 32771);
pub const ResType_Connection = @as(u32, 32772);
pub const CM_ADD_RANGE_ADDIFCONFLICT = @as(u32, 0);
pub const CM_ADD_RANGE_DONOTADDIFCONFLICT = @as(u32, 1);
pub const CM_ADD_RANGE_BITS = @as(u32, 1);
pub const BASIC_LOG_CONF = @as(u32, 0);
pub const FILTERED_LOG_CONF = @as(u32, 1);
pub const ALLOC_LOG_CONF = @as(u32, 2);
pub const BOOT_LOG_CONF = @as(u32, 3);
pub const FORCED_LOG_CONF = @as(u32, 4);
pub const OVERRIDE_LOG_CONF = @as(u32, 5);
pub const NUM_LOG_CONF = @as(u32, 6);
pub const LOG_CONF_BITS = @as(u32, 7);
pub const PRIORITY_EQUAL_FIRST = @as(u32, 8);
pub const PRIORITY_EQUAL_LAST = @as(u32, 0);
pub const PRIORITY_BIT = @as(u32, 8);
pub const RegDisposition_OpenAlways = @as(u32, 0);
pub const RegDisposition_OpenExisting = @as(u32, 1);
pub const RegDisposition_Bits = @as(u32, 1);
pub const CM_ADD_ID_HARDWARE = @as(u32, 0);
pub const CM_ADD_ID_COMPATIBLE = @as(u32, 1);
pub const CM_ADD_ID_BITS = @as(u32, 1);
pub const CM_CREATE_DEVNODE_NORMAL = @as(u32, 0);
pub const CM_CREATE_DEVNODE_NO_WAIT_INSTALL = @as(u32, 1);
pub const CM_CREATE_DEVNODE_PHANTOM = @as(u32, 2);
pub const CM_CREATE_DEVNODE_GENERATE_ID = @as(u32, 4);
pub const CM_CREATE_DEVNODE_DO_NOT_INSTALL = @as(u32, 8);
pub const CM_CREATE_DEVNODE_BITS = @as(u32, 15);
pub const CM_CREATE_DEVINST_NORMAL = @as(u32, 0);
pub const CM_CREATE_DEVINST_NO_WAIT_INSTALL = @as(u32, 1);
pub const CM_CREATE_DEVINST_PHANTOM = @as(u32, 2);
pub const CM_CREATE_DEVINST_GENERATE_ID = @as(u32, 4);
pub const CM_CREATE_DEVINST_DO_NOT_INSTALL = @as(u32, 8);
pub const CM_CREATE_DEVINST_BITS = @as(u32, 15);
pub const CM_DELETE_CLASS_ONLY = @as(u32, 0);
pub const CM_DELETE_CLASS_SUBKEYS = @as(u32, 1);
pub const CM_DELETE_CLASS_INTERFACE = @as(u32, 2);
pub const CM_DELETE_CLASS_BITS = @as(u32, 3);
pub const CM_ENUMERATE_CLASSES_INSTALLER = @as(u32, 0);
pub const CM_ENUMERATE_CLASSES_INTERFACE = @as(u32, 1);
pub const CM_ENUMERATE_CLASSES_BITS = @as(u32, 1);
pub const CM_DETECT_NEW_PROFILE = @as(u32, 1);
pub const CM_DETECT_CRASHED = @as(u32, 2);
pub const CM_DETECT_HWPROF_FIRST_BOOT = @as(u32, 4);
pub const CM_DETECT_RUN = @as(u32, 2147483648);
pub const CM_DETECT_BITS = @as(u32, 2147483655);
pub const CM_DISABLE_POLITE = @as(u32, 0);
pub const CM_DISABLE_ABSOLUTE = @as(u32, 1);
pub const CM_DISABLE_HARDWARE = @as(u32, 2);
pub const CM_DISABLE_UI_NOT_OK = @as(u32, 4);
pub const CM_DISABLE_PERSIST = @as(u32, 8);
pub const CM_DISABLE_BITS = @as(u32, 15);
pub const CM_GETIDLIST_FILTER_NONE = @as(u32, 0);
pub const CM_GETIDLIST_FILTER_ENUMERATOR = @as(u32, 1);
pub const CM_GETIDLIST_FILTER_SERVICE = @as(u32, 2);
pub const CM_GETIDLIST_FILTER_EJECTRELATIONS = @as(u32, 4);
pub const CM_GETIDLIST_FILTER_REMOVALRELATIONS = @as(u32, 8);
pub const CM_GETIDLIST_FILTER_POWERRELATIONS = @as(u32, 16);
pub const CM_GETIDLIST_FILTER_BUSRELATIONS = @as(u32, 32);
pub const CM_GETIDLIST_DONOTGENERATE = @as(u32, 268435520);
pub const CM_GETIDLIST_FILTER_BITS = @as(u32, 268435583);
pub const CM_GETIDLIST_FILTER_TRANSPORTRELATIONS = @as(u32, 128);
pub const CM_GETIDLIST_FILTER_PRESENT = @as(u32, 256);
pub const CM_GETIDLIST_FILTER_CLASS = @as(u32, 512);
pub const CM_GET_DEVICE_INTERFACE_LIST_PRESENT = @as(u32, 0);
pub const CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES = @as(u32, 1);
pub const CM_GET_DEVICE_INTERFACE_LIST_BITS = @as(u32, 1);
pub const CM_DRP_DEVICEDESC = @as(u32, 1);
pub const CM_DRP_HARDWAREID = @as(u32, 2);
pub const CM_DRP_COMPATIBLEIDS = @as(u32, 3);
pub const CM_DRP_UNUSED0 = @as(u32, 4);
pub const CM_DRP_SERVICE = @as(u32, 5);
pub const CM_DRP_UNUSED1 = @as(u32, 6);
pub const CM_DRP_UNUSED2 = @as(u32, 7);
pub const CM_DRP_CLASS = @as(u32, 8);
pub const CM_DRP_CLASSGUID = @as(u32, 9);
pub const CM_DRP_DRIVER = @as(u32, 10);
pub const CM_DRP_CONFIGFLAGS = @as(u32, 11);
pub const CM_DRP_MFG = @as(u32, 12);
pub const CM_DRP_FRIENDLYNAME = @as(u32, 13);
pub const CM_DRP_LOCATION_INFORMATION = @as(u32, 14);
pub const CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME = @as(u32, 15);
pub const CM_DRP_CAPABILITIES = @as(u32, 16);
pub const CM_DRP_UI_NUMBER = @as(u32, 17);
pub const CM_DRP_UPPERFILTERS = @as(u32, 18);
pub const CM_CRP_UPPERFILTERS = @as(u32, 18);
pub const CM_DRP_LOWERFILTERS = @as(u32, 19);
pub const CM_CRP_LOWERFILTERS = @as(u32, 19);
pub const CM_DRP_BUSTYPEGUID = @as(u32, 20);
pub const CM_DRP_LEGACYBUSTYPE = @as(u32, 21);
pub const CM_DRP_BUSNUMBER = @as(u32, 22);
pub const CM_DRP_ENUMERATOR_NAME = @as(u32, 23);
pub const CM_DRP_SECURITY = @as(u32, 24);
pub const CM_CRP_SECURITY = @as(u32, 24);
pub const CM_DRP_SECURITY_SDS = @as(u32, 25);
pub const CM_CRP_SECURITY_SDS = @as(u32, 25);
pub const CM_DRP_DEVTYPE = @as(u32, 26);
pub const CM_CRP_DEVTYPE = @as(u32, 26);
pub const CM_DRP_EXCLUSIVE = @as(u32, 27);
pub const CM_CRP_EXCLUSIVE = @as(u32, 27);
pub const CM_DRP_CHARACTERISTICS = @as(u32, 28);
pub const CM_CRP_CHARACTERISTICS = @as(u32, 28);
pub const CM_DRP_ADDRESS = @as(u32, 29);
pub const CM_DRP_UI_NUMBER_DESC_FORMAT = @as(u32, 30);
pub const CM_DRP_DEVICE_POWER_DATA = @as(u32, 31);
pub const CM_DRP_REMOVAL_POLICY = @as(u32, 32);
pub const CM_DRP_REMOVAL_POLICY_HW_DEFAULT = @as(u32, 33);
pub const CM_DRP_REMOVAL_POLICY_OVERRIDE = @as(u32, 34);
pub const CM_DRP_INSTALL_STATE = @as(u32, 35);
pub const CM_DRP_LOCATION_PATHS = @as(u32, 36);
pub const CM_DRP_BASE_CONTAINERID = @as(u32, 37);
pub const CM_DRP_MIN = @as(u32, 1);
pub const CM_CRP_MIN = @as(u32, 1);
pub const CM_DRP_MAX = @as(u32, 37);
pub const CM_CRP_MAX = @as(u32, 37);
pub const CM_DEVCAP_LOCKSUPPORTED = @as(u32, 1);
pub const CM_DEVCAP_EJECTSUPPORTED = @as(u32, 2);
pub const CM_DEVCAP_REMOVABLE = @as(u32, 4);
pub const CM_DEVCAP_DOCKDEVICE = @as(u32, 8);
pub const CM_DEVCAP_UNIQUEID = @as(u32, 16);
pub const CM_DEVCAP_SILENTINSTALL = @as(u32, 32);
pub const CM_DEVCAP_RAWDEVICEOK = @as(u32, 64);
pub const CM_DEVCAP_SURPRISEREMOVALOK = @as(u32, 128);
pub const CM_DEVCAP_HARDWAREDISABLED = @as(u32, 256);
pub const CM_DEVCAP_NONDYNAMIC = @as(u32, 512);
pub const CM_DEVCAP_SECUREDEVICE = @as(u32, 1024);
pub const CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL = @as(u32, 1);
pub const CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL = @as(u32, 2);
pub const CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL = @as(u32, 3);
pub const CM_INSTALL_STATE_INSTALLED = @as(u32, 0);
pub const CM_INSTALL_STATE_NEEDS_REINSTALL = @as(u32, 1);
pub const CM_INSTALL_STATE_FAILED_INSTALL = @as(u32, 2);
pub const CM_INSTALL_STATE_FINISH_INSTALL = @as(u32, 3);
pub const CM_LOCATE_DEVNODE_NORMAL = @as(u32, 0);
pub const CM_LOCATE_DEVNODE_PHANTOM = @as(u32, 1);
pub const CM_LOCATE_DEVNODE_CANCELREMOVE = @as(u32, 2);
pub const CM_LOCATE_DEVNODE_NOVALIDATION = @as(u32, 4);
pub const CM_LOCATE_DEVNODE_BITS = @as(u32, 7);
pub const CM_LOCATE_DEVINST_NORMAL = @as(u32, 0);
pub const CM_LOCATE_DEVINST_PHANTOM = @as(u32, 1);
pub const CM_LOCATE_DEVINST_CANCELREMOVE = @as(u32, 2);
pub const CM_LOCATE_DEVINST_NOVALIDATION = @as(u32, 4);
pub const CM_LOCATE_DEVINST_BITS = @as(u32, 7);
pub const CM_OPEN_CLASS_KEY_INSTALLER = @as(u32, 0);
pub const CM_OPEN_CLASS_KEY_INTERFACE = @as(u32, 1);
pub const CM_OPEN_CLASS_KEY_BITS = @as(u32, 1);
pub const CM_REMOVE_UI_OK = @as(u32, 0);
pub const CM_REMOVE_UI_NOT_OK = @as(u32, 1);
pub const CM_REMOVE_NO_RESTART = @as(u32, 2);
pub const CM_REMOVE_DISABLE = @as(u32, 4);
pub const CM_REMOVE_BITS = @as(u32, 7);
pub const CM_QUERY_REMOVE_UI_OK = @as(u32, 0);
pub const CM_QUERY_REMOVE_UI_NOT_OK = @as(u32, 1);
pub const CM_REENUMERATE_NORMAL = @as(u32, 0);
pub const CM_REENUMERATE_SYNCHRONOUS = @as(u32, 1);
pub const CM_REENUMERATE_RETRY_INSTALLATION = @as(u32, 2);
pub const CM_REENUMERATE_ASYNCHRONOUS = @as(u32, 4);
pub const CM_REENUMERATE_BITS = @as(u32, 7);
pub const CM_REGISTER_DEVICE_DRIVER_STATIC = @as(u32, 0);
pub const CM_REGISTER_DEVICE_DRIVER_DISABLEABLE = @as(u32, 1);
pub const CM_REGISTER_DEVICE_DRIVER_REMOVABLE = @as(u32, 2);
pub const CM_REGISTER_DEVICE_DRIVER_BITS = @as(u32, 3);
pub const CM_REGISTRY_HARDWARE = @as(u32, 0);
pub const CM_REGISTRY_SOFTWARE = @as(u32, 1);
pub const CM_REGISTRY_USER = @as(u32, 256);
pub const CM_REGISTRY_CONFIG = @as(u32, 512);
pub const CM_REGISTRY_BITS = @as(u32, 769);
pub const CM_SET_DEVNODE_PROBLEM_NORMAL = @as(u32, 0);
pub const CM_SET_DEVNODE_PROBLEM_OVERRIDE = @as(u32, 1);
pub const CM_SET_DEVNODE_PROBLEM_BITS = @as(u32, 1);
pub const CM_SET_DEVINST_PROBLEM_NORMAL = @as(u32, 0);
pub const CM_SET_DEVINST_PROBLEM_OVERRIDE = @as(u32, 1);
pub const CM_SET_DEVINST_PROBLEM_BITS = @as(u32, 1);
pub const CM_SET_HW_PROF_FLAGS_UI_NOT_OK = @as(u32, 1);
pub const CM_SET_HW_PROF_FLAGS_BITS = @as(u32, 1);
pub const CM_SETUP_DEVNODE_READY = @as(u32, 0);
pub const CM_SETUP_DEVINST_READY = @as(u32, 0);
pub const CM_SETUP_DOWNLOAD = @as(u32, 1);
pub const CM_SETUP_WRITE_LOG_CONFS = @as(u32, 2);
pub const CM_SETUP_PROP_CHANGE = @as(u32, 3);
pub const CM_SETUP_DEVNODE_RESET = @as(u32, 4);
pub const CM_SETUP_DEVINST_RESET = @as(u32, 4);
pub const CM_SETUP_DEVNODE_CONFIG = @as(u32, 5);
pub const CM_SETUP_DEVINST_CONFIG = @as(u32, 5);
pub const CM_SETUP_DEVNODE_CONFIG_CLASS = @as(u32, 6);
pub const CM_SETUP_DEVINST_CONFIG_CLASS = @as(u32, 6);
pub const CM_SETUP_DEVNODE_CONFIG_EXTENSIONS = @as(u32, 7);
pub const CM_SETUP_DEVINST_CONFIG_EXTENSIONS = @as(u32, 7);
pub const CM_SETUP_DEVNODE_CONFIG_RESET = @as(u32, 8);
pub const CM_SETUP_DEVINST_CONFIG_RESET = @as(u32, 8);
pub const CM_SETUP_BITS = @as(u32, 15);
pub const CM_QUERY_ARBITRATOR_RAW = @as(u32, 0);
pub const CM_QUERY_ARBITRATOR_TRANSLATED = @as(u32, 1);
pub const CM_QUERY_ARBITRATOR_BITS = @as(u32, 1);
pub const CM_CUSTOMDEVPROP_MERGE_MULTISZ = @as(u32, 1);
pub const CM_CUSTOMDEVPROP_BITS = @as(u32, 1);
pub const CM_NAME_ATTRIBUTE_NAME_RETRIEVED_FROM_DEVICE = @as(u32, 1);
pub const CM_NAME_ATTRIBUTE_USER_ASSIGNED_NAME = @as(u32, 2);
pub const CM_CLASS_PROPERTY_INSTALLER = @as(u32, 0);
pub const CM_CLASS_PROPERTY_INTERFACE = @as(u32, 1);
pub const CM_CLASS_PROPERTY_BITS = @as(u32, 1);
pub const CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES = @as(u32, 1);
pub const CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES = @as(u32, 2);
pub const CM_GLOBAL_STATE_CAN_DO_UI = @as(u32, 1);
pub const CM_GLOBAL_STATE_ON_BIG_STACK = @as(u32, 2);
pub const CM_GLOBAL_STATE_SERVICES_AVAILABLE = @as(u32, 4);
pub const CM_GLOBAL_STATE_SHUTTING_DOWN = @as(u32, 8);
pub const CM_GLOBAL_STATE_DETECTION_PENDING = @as(u32, 16);
pub const CM_GLOBAL_STATE_REBOOT_REQUIRED = @as(u32, 32);
pub const INSTALLFLAG_FORCE = @as(u32, 1);
pub const INSTALLFLAG_READONLY = @as(u32, 2);
pub const INSTALLFLAG_NONINTERACTIVE = @as(u32, 4);
pub const INSTALLFLAG_BITS = @as(u32, 7);
pub const DIIDFLAG_SHOWSEARCHUI = @as(u32, 1);
pub const DIIDFLAG_NOFINISHINSTALLUI = @as(u32, 2);
pub const DIIDFLAG_INSTALLNULLDRIVER = @as(u32, 4);
pub const DIIDFLAG_INSTALLCOPYINFDRIVERS = @as(u32, 8);
pub const DIIDFLAG_BITS = @as(u32, 15);
pub const DIIRFLAG_INF_ALREADY_COPIED = @as(u32, 1);
pub const DIIRFLAG_FORCE_INF = @as(u32, 2);
pub const DIIRFLAG_HW_USING_THE_INF = @as(u32, 4);
pub const DIIRFLAG_HOTPATCH = @as(u32, 8);
pub const DIIRFLAG_NOBACKUP = @as(u32, 16);
pub const DIIRFLAG_PRE_CONFIGURE_INF = @as(u32, 32);
pub const DIIRFLAG_INSTALL_AS_SET = @as(u32, 64);
pub const DIURFLAG_NO_REMOVE_INF = @as(u32, 1);
pub const DIURFLAG_RESERVED = @as(u32, 2);
pub const ROLLBACK_FLAG_NO_UI = @as(u32, 1);
pub const ROLLBACK_BITS = @as(u32, 1);
pub const MAX_KEY_LEN = @as(u32, 100);
pub const MAX_PRIORITYSTR_LEN = @as(u32, 16);
pub const MAX_INF_FLAG = @as(u32, 20);
pub const MAX_INFSTR_STRKEY_LEN = @as(u32, 32);
pub const GUID_HWPROFILE_QUERY_CHANGE = Guid.initString("cb3a4001-46f0-11d0-b08f-00609713053f");
pub const GUID_HWPROFILE_CHANGE_CANCELLED = Guid.initString("cb3a4002-46f0-11d0-b08f-00609713053f");
pub const GUID_HWPROFILE_CHANGE_COMPLETE = Guid.initString("cb3a4003-46f0-11d0-b08f-00609713053f");
pub const GUID_DEVICE_INTERFACE_ARRIVAL = Guid.initString("cb3a4004-46f0-11d0-b08f-00609713053f");
pub const GUID_DEVICE_INTERFACE_REMOVAL = Guid.initString("cb3a4005-46f0-11d0-b08f-00609713053f");
pub const GUID_TARGET_DEVICE_QUERY_REMOVE = Guid.initString("cb3a4006-46f0-11d0-b08f-00609713053f");
pub const GUID_TARGET_DEVICE_REMOVE_CANCELLED = Guid.initString("cb3a4007-46f0-11d0-b08f-00609713053f");
pub const GUID_TARGET_DEVICE_REMOVE_COMPLETE = Guid.initString("cb3a4008-46f0-11d0-b08f-00609713053f");
pub const GUID_PNP_CUSTOM_NOTIFICATION = Guid.initString("aca73f8e-8d23-11d1-ac7d-0000f87571d0");
pub const GUID_PNP_POWER_NOTIFICATION = Guid.initString("c2cf0660-eb7a-11d1-bd7f-0000f87571d0");
pub const GUID_PNP_POWER_SETTING_CHANGE = Guid.initString("29c69b3e-c79a-43bf-bbde-a932fa1bea7e");
pub const GUID_TARGET_DEVICE_TRANSPORT_RELATIONS_CHANGED = Guid.initString("fcf528f6-a82f-47b1-ad3a-8050594cad28");
pub const GUID_KERNEL_SOFT_RESTART_PREPARE = Guid.initString("de373def-a85c-4f76-8cbf-f96bea8bd10f");
pub const GUID_KERNEL_SOFT_RESTART_CANCEL = Guid.initString("31d737e7-8c0b-468a-956e-9f433ec358fb");
pub const GUID_RECOVERY_PCI_PREPARE_SHUTDOWN = Guid.initString("90d889de-8704-44cf-8115-ed8528d2b2da");
pub const GUID_RECOVERY_NVMED_PREPARE_SHUTDOWN = Guid.initString("4b9770ea-bde7-400b-a9b9-4f684f54cc2a");
pub const GUID_KERNEL_SOFT_RESTART_FINALIZE = Guid.initString("20e91abd-350a-4d4f-8577-99c81507473a");
pub const GUID_BUS_INTERFACE_STANDARD = Guid.initString("496b8280-6f25-11d0-beaf-08002be2092f");
pub const GUID_PCI_BUS_INTERFACE_STANDARD = Guid.initString("496b8281-6f25-11d0-beaf-08002be2092f");
pub const GUID_PCI_BUS_INTERFACE_STANDARD2 = Guid.initString("de94e966-fdff-4c9c-9998-6747b150e74c");
pub const GUID_ARBITER_INTERFACE_STANDARD = Guid.initString("e644f185-8c0e-11d0-becf-08002be2092f");
pub const GUID_TRANSLATOR_INTERFACE_STANDARD = Guid.initString("6c154a92-aacf-11d0-8d2a-00a0c906b244");
pub const GUID_ACPI_INTERFACE_STANDARD = Guid.initString("b091a08a-ba97-11d0-bd14-00aa00b7b32a");
pub const GUID_INT_ROUTE_INTERFACE_STANDARD = Guid.initString("70941bf4-0073-11d1-a09e-00c04fc340b1");
pub const GUID_PCMCIA_BUS_INTERFACE_STANDARD = Guid.initString("76173af0-c504-11d1-947f-00c04fb960ee");
pub const GUID_ACPI_REGS_INTERFACE_STANDARD = Guid.initString("06141966-7245-6369-462e-4e656c736f6e");
pub const GUID_LEGACY_DEVICE_DETECTION_STANDARD = Guid.initString("50feb0de-596a-11d2-a5b8-0000f81a4619");
pub const GUID_PCI_DEVICE_PRESENT_INTERFACE = Guid.initString("d1b82c26-bf49-45ef-b216-71cbd7889b57");
pub const GUID_MF_ENUMERATION_INTERFACE = Guid.initString("aeb895f0-5586-11d1-8d84-00a0c906b244");
pub const GUID_REENUMERATE_SELF_INTERFACE_STANDARD = Guid.initString("2aeb0243-6a6e-486b-82fc-d815f6b97006");
pub const GUID_AGP_TARGET_BUS_INTERFACE_STANDARD = Guid.initString("b15cfce8-06d1-4d37-9d4c-bedde0c2a6ff");
pub const GUID_ACPI_CMOS_INTERFACE_STANDARD = Guid.initString("3a8d0384-6505-40ca-bc39-56c15f8c5fed");
pub const GUID_ACPI_PORT_RANGES_INTERFACE_STANDARD = Guid.initString("f14f609b-cbbd-4957-a674-bc00213f1c97");
pub const GUID_ACPI_INTERFACE_STANDARD2 = Guid.initString("e8695f63-1831-4870-a8cf-9c2f03f9dcb5");
pub const GUID_PNP_LOCATION_INTERFACE = Guid.initString("70211b0e-0afb-47db-afc1-410bf842497a");
pub const GUID_PCI_EXPRESS_LINK_QUIESCENT_INTERFACE = Guid.initString("146cd41c-dae3-4437-8aff-2af3f038099b");
pub const GUID_PCI_EXPRESS_ROOT_PORT_INTERFACE = Guid.initString("83a7734a-84c7-4161-9a98-6000ed0c4a33");
pub const GUID_MSIX_TABLE_CONFIG_INTERFACE = Guid.initString("1a6a460b-194f-455d-b34b-b84c5b05712b");
pub const GUID_D3COLD_SUPPORT_INTERFACE = Guid.initString("b38290e5-3cd0-4f9d-9937-f5fe2b44d47a");
pub const GUID_PROCESSOR_PCC_INTERFACE_STANDARD = Guid.initString("37b17e9a-c21c-4296-972d-11c4b32b28f0");
pub const GUID_PCI_VIRTUALIZATION_INTERFACE = Guid.initString("64897b47-3a4a-4d75-bc74-89dd6c078293");
pub const GUID_PCC_INTERFACE_STANDARD = Guid.initString("3ee8ba63-0f59-4a24-8a45-35808bdd1249");
pub const GUID_PCC_INTERFACE_INTERNAL = Guid.initString("7cce62ce-c189-4814-a6a7-12112089e938");
pub const GUID_THERMAL_COOLING_INTERFACE = Guid.initString("ecbe47a8-c498-4bb9-bd70-e867e0940d22");
pub const GUID_DMA_CACHE_COHERENCY_INTERFACE = Guid.initString("b520f7fa-8a5a-4e40-a3f6-6be1e162d935");
pub const GUID_DEVICE_RESET_INTERFACE_STANDARD = Guid.initString("649fdf26-3bc0-4813-ad24-7e0c1eda3fa3");
pub const GUID_IOMMU_BUS_INTERFACE = Guid.initString("1efee0b2-d278-4ae4-bddc-1b34dd648043");
pub const GUID_PCI_SECURITY_INTERFACE = Guid.initString("6e7f1451-199e-4acc-ba2d-762b4edf4674");
pub const GUID_SCM_BUS_INTERFACE = Guid.initString("25944783-ce79-4232-815e-4a30014e8eb4");
pub const GUID_SECURE_DRIVER_INTERFACE = Guid.initString("370f67e1-4ff5-4a94-9a35-06c5d9cc30e2");
pub const GUID_SDEV_IDENTIFIER_INTERFACE = Guid.initString("49d67af8-916c-4ee8-9df1-889f17d21e91");
pub const GUID_SCM_BUS_NVD_INTERFACE = Guid.initString("8de064ff-b630-42e4-88ea-6f24c8641175");
pub const GUID_SCM_BUS_LD_INTERFACE = Guid.initString("9b89307d-d76b-4f48-b186-54041ae92e8d");
pub const GUID_SCM_PHYSICAL_NVDIMM_INTERFACE = Guid.initString("0079c21b-917e-405e-a9ce-0732b5bbcebd");
pub const GUID_PNP_EXTENDED_ADDRESS_INTERFACE = Guid.initString("b8e992ec-a797-4dc4-8846-84d041707446");
pub const GUID_D3COLD_AUX_POWER_AND_TIMING_INTERFACE = Guid.initString("0044d8aa-f664-4588-9ffc-2afeaf5950b9");
pub const GUID_PCI_FPGA_CONTROL_INTERFACE = Guid.initString("2df3f7a8-b9b3-4063-9215-b5d14a0b266e");
pub const GUID_PCI_PTM_CONTROL_INTERFACE = Guid.initString("348a5ebb-ba24-44b7-9916-285687735117");
pub const GUID_BUS_RESOURCE_UPDATE_INTERFACE = Guid.initString("27d0102d-bfb2-4164-81dd-dbb82f968b48");
pub const GUID_NPEM_CONTROL_INTERFACE = Guid.initString("4d95573d-b774-488a-b120-4f284a9eff51");
pub const GUID_PCI_ATS_INTERFACE = Guid.initString("010a7fe8-96f5-4943-bedf-95e651b93412");
pub const GUID_BUS_TYPE_INTERNAL = Guid.initString("1530ea73-086b-11d1-a09f-00c04fc340b1");
pub const GUID_BUS_TYPE_PCMCIA = Guid.initString("09343630-af9f-11d0-92e9-0000f81e1b30");
pub const GUID_BUS_TYPE_PCI = Guid.initString("c8ebdfb0-b510-11d0-80e5-00a0c92542e3");
pub const GUID_BUS_TYPE_ISAPNP = Guid.initString("e676f854-d87d-11d0-92b2-00a0c9055fc5");
pub const GUID_BUS_TYPE_EISA = Guid.initString("ddc35509-f3fc-11d0-a537-0000f8753ed1");
pub const GUID_BUS_TYPE_MCA = Guid.initString("1c75997a-dc33-11d0-92b2-00a0c9055fc5");
pub const GUID_BUS_TYPE_SERENUM = Guid.initString("77114a87-8944-11d1-bd90-00a0c906be2d");
pub const GUID_BUS_TYPE_USB = Guid.initString("9d7debbc-c85d-11d1-9eb4-006008c3a19a");
pub const GUID_BUS_TYPE_LPTENUM = Guid.initString("c4ca1000-2ddc-11d5-a17a-00c04f60524d");
pub const GUID_BUS_TYPE_USBPRINT = Guid.initString("441ee000-4342-11d5-a184-00c04f60524d");
pub const GUID_BUS_TYPE_DOT4PRT = Guid.initString("441ee001-4342-11d5-a184-00c04f60524d");
pub const GUID_BUS_TYPE_1394 = Guid.initString("f74e73eb-9ac5-45eb-be4d-772cc71ddfb3");
pub const GUID_BUS_TYPE_HID = Guid.initString("eeaf37d0-1963-47c4-aa48-72476db7cf49");
pub const GUID_BUS_TYPE_AVC = Guid.initString("c06ff265-ae09-48f0-812c-16753d7cba83");
pub const GUID_BUS_TYPE_IRDA = Guid.initString("7ae17dc1-c944-44d6-881f-4c2e61053bc1");
pub const GUID_BUS_TYPE_SD = Guid.initString("e700cc04-4036-4e89-9579-89ebf45f00cd");
pub const GUID_BUS_TYPE_ACPI = Guid.initString("d7b46895-001a-4942-891f-a7d46610a843");
pub const GUID_BUS_TYPE_SW_DEVICE = Guid.initString("06d10322-7de0-4cef-8e25-197d0e7442e2");
pub const GUID_BUS_TYPE_SCM = Guid.initString("375a5912-804c-45aa-bdc2-fdd25a1d9512");
pub const GUID_POWER_DEVICE_ENABLE = Guid.initString("827c0a6f-feb0-11d0-bd26-00aa00b7b32a");
pub const GUID_POWER_DEVICE_TIMEOUTS = Guid.initString("a45da735-feb0-11d0-bd26-00aa00b7b32a");
pub const GUID_POWER_DEVICE_WAKE_ENABLE = Guid.initString("a9546a82-feb0-11d0-bd26-00aa00b7b32a");
pub const GUID_WUDF_DEVICE_HOST_PROBLEM = Guid.initString("c43d25bd-9346-40ee-a2d2-d70c15f8b75b");
pub const GUID_PARTITION_UNIT_INTERFACE_STANDARD = Guid.initString("52363f5b-d891-429b-8195-aec5fef6853c");
pub const GUID_QUERY_CRASHDUMP_FUNCTIONS = Guid.initString("9cc6b8ff-32e2-4834-b1de-b32ef8880a4b");

//--------------------------------------------------------------------------------
// Section: Types (172)
//--------------------------------------------------------------------------------
pub const SP_COPY_STYLE = enum(u32) {
    DELETESOURCE = 1,
    REPLACEONLY = 2,
    NEWER_OR_SAME = 4,
    NEWER_ONLY = 65536,
    NOOVERWRITE = 8,
    NODECOMP = 16,
    LANGUAGEAWARE = 32,
    SOURCE_ABSOLUTE = 64,
    SOURCEPATH_ABSOLUTE = 128,
    FORCE_IN_USE = 512,
    IN_USE_NEEDS_REBOOT = 256,
    NOSKIP = 1024,
    FORCE_NOOVERWRITE = 4096,
    FORCE_NEWER = 8192,
    WARNIFSKIP = 16384,
    NOBROWSE = 32768,
    // NEWER = 4, this enum value conflicts with NEWER_OR_SAME
    RESERVED = 131072,
    OEMINF_CATALOG_ONLY = 262144,
    REPLACE_BOOT_FILE = 524288,
    NOPRUNE = 1048576,
    OEM_F6_INF = 2097152,
    ALREADYDECOMP = 4194304,
    WINDOWS_SIGNED = 16777216,
    PNPLOCKED = 33554432,
    IN_USE_TRY_RENAME = 67108864,
    INBOX_INF = 134217728,
    HARDLINK = 268435456,
    _,
    pub fn initFlags(o: struct {
        DELETESOURCE: u1 = 0,
        REPLACEONLY: u1 = 0,
        NEWER_OR_SAME: u1 = 0,
        NEWER_ONLY: u1 = 0,
        NOOVERWRITE: u1 = 0,
        NODECOMP: u1 = 0,
        LANGUAGEAWARE: u1 = 0,
        SOURCE_ABSOLUTE: u1 = 0,
        SOURCEPATH_ABSOLUTE: u1 = 0,
        FORCE_IN_USE: u1 = 0,
        IN_USE_NEEDS_REBOOT: u1 = 0,
        NOSKIP: u1 = 0,
        FORCE_NOOVERWRITE: u1 = 0,
        FORCE_NEWER: u1 = 0,
        WARNIFSKIP: u1 = 0,
        NOBROWSE: u1 = 0,
        RESERVED: u1 = 0,
        OEMINF_CATALOG_ONLY: u1 = 0,
        REPLACE_BOOT_FILE: u1 = 0,
        NOPRUNE: u1 = 0,
        OEM_F6_INF: u1 = 0,
        ALREADYDECOMP: u1 = 0,
        WINDOWS_SIGNED: u1 = 0,
        PNPLOCKED: u1 = 0,
        IN_USE_TRY_RENAME: u1 = 0,
        INBOX_INF: u1 = 0,
        HARDLINK: u1 = 0,
    }) SP_COPY_STYLE {
        return @as(SP_COPY_STYLE, @enumFromInt((if (o.DELETESOURCE == 1) @intFromEnum(SP_COPY_STYLE.DELETESOURCE) else 0) | (if (o.REPLACEONLY == 1) @intFromEnum(SP_COPY_STYLE.REPLACEONLY) else 0) | (if (o.NEWER_OR_SAME == 1) @intFromEnum(SP_COPY_STYLE.NEWER_OR_SAME) else 0) | (if (o.NEWER_ONLY == 1) @intFromEnum(SP_COPY_STYLE.NEWER_ONLY) else 0) | (if (o.NOOVERWRITE == 1) @intFromEnum(SP_COPY_STYLE.NOOVERWRITE) else 0) | (if (o.NODECOMP == 1) @intFromEnum(SP_COPY_STYLE.NODECOMP) else 0) | (if (o.LANGUAGEAWARE == 1) @intFromEnum(SP_COPY_STYLE.LANGUAGEAWARE) else 0) | (if (o.SOURCE_ABSOLUTE == 1) @intFromEnum(SP_COPY_STYLE.SOURCE_ABSOLUTE) else 0) | (if (o.SOURCEPATH_ABSOLUTE == 1) @intFromEnum(SP_COPY_STYLE.SOURCEPATH_ABSOLUTE) else 0) | (if (o.FORCE_IN_USE == 1) @intFromEnum(SP_COPY_STYLE.FORCE_IN_USE) else 0) | (if (o.IN_USE_NEEDS_REBOOT == 1) @intFromEnum(SP_COPY_STYLE.IN_USE_NEEDS_REBOOT) else 0) | (if (o.NOSKIP == 1) @intFromEnum(SP_COPY_STYLE.NOSKIP) else 0) | (if (o.FORCE_NOOVERWRITE == 1) @intFromEnum(SP_COPY_STYLE.FORCE_NOOVERWRITE) else 0) | (if (o.FORCE_NEWER == 1) @intFromEnum(SP_COPY_STYLE.FORCE_NEWER) else 0) | (if (o.WARNIFSKIP == 1) @intFromEnum(SP_COPY_STYLE.WARNIFSKIP) else 0) | (if (o.NOBROWSE == 1) @intFromEnum(SP_COPY_STYLE.NOBROWSE) else 0) | (if (o.RESERVED == 1) @intFromEnum(SP_COPY_STYLE.RESERVED) else 0) | (if (o.OEMINF_CATALOG_ONLY == 1) @intFromEnum(SP_COPY_STYLE.OEMINF_CATALOG_ONLY) else 0) | (if (o.REPLACE_BOOT_FILE == 1) @intFromEnum(SP_COPY_STYLE.REPLACE_BOOT_FILE) else 0) | (if (o.NOPRUNE == 1) @intFromEnum(SP_COPY_STYLE.NOPRUNE) else 0) | (if (o.OEM_F6_INF == 1) @intFromEnum(SP_COPY_STYLE.OEM_F6_INF) else 0) | (if (o.ALREADYDECOMP == 1) @intFromEnum(SP_COPY_STYLE.ALREADYDECOMP) else 0) | (if (o.WINDOWS_SIGNED == 1) @intFromEnum(SP_COPY_STYLE.WINDOWS_SIGNED) else 0) | (if (o.PNPLOCKED == 1) @intFromEnum(SP_COPY_STYLE.PNPLOCKED) else 0) | (if (o.IN_USE_TRY_RENAME == 1) @intFromEnum(SP_COPY_STYLE.IN_USE_TRY_RENAME) else 0) | (if (o.INBOX_INF == 1) @intFromEnum(SP_COPY_STYLE.INBOX_INF) else 0) | (if (o.HARDLINK == 1) @intFromEnum(SP_COPY_STYLE.HARDLINK) else 0)));
    }
};
pub const SP_COPY_DELETESOURCE = SP_COPY_STYLE.DELETESOURCE;
pub const SP_COPY_REPLACEONLY = SP_COPY_STYLE.REPLACEONLY;
pub const SP_COPY_NEWER_OR_SAME = SP_COPY_STYLE.NEWER_OR_SAME;
pub const SP_COPY_NEWER_ONLY = SP_COPY_STYLE.NEWER_ONLY;
pub const SP_COPY_NOOVERWRITE = SP_COPY_STYLE.NOOVERWRITE;
pub const SP_COPY_NODECOMP = SP_COPY_STYLE.NODECOMP;
pub const SP_COPY_LANGUAGEAWARE = SP_COPY_STYLE.LANGUAGEAWARE;
pub const SP_COPY_SOURCE_ABSOLUTE = SP_COPY_STYLE.SOURCE_ABSOLUTE;
pub const SP_COPY_SOURCEPATH_ABSOLUTE = SP_COPY_STYLE.SOURCEPATH_ABSOLUTE;
pub const SP_COPY_FORCE_IN_USE = SP_COPY_STYLE.FORCE_IN_USE;
pub const SP_COPY_IN_USE_NEEDS_REBOOT = SP_COPY_STYLE.IN_USE_NEEDS_REBOOT;
pub const SP_COPY_NOSKIP = SP_COPY_STYLE.NOSKIP;
pub const SP_COPY_FORCE_NOOVERWRITE = SP_COPY_STYLE.FORCE_NOOVERWRITE;
pub const SP_COPY_FORCE_NEWER = SP_COPY_STYLE.FORCE_NEWER;
pub const SP_COPY_WARNIFSKIP = SP_COPY_STYLE.WARNIFSKIP;
pub const SP_COPY_NOBROWSE = SP_COPY_STYLE.NOBROWSE;
pub const SP_COPY_NEWER = SP_COPY_STYLE.NEWER_OR_SAME;
pub const SP_COPY_RESERVED = SP_COPY_STYLE.RESERVED;
pub const SP_COPY_OEMINF_CATALOG_ONLY = SP_COPY_STYLE.OEMINF_CATALOG_ONLY;
pub const SP_COPY_REPLACE_BOOT_FILE = SP_COPY_STYLE.REPLACE_BOOT_FILE;
pub const SP_COPY_NOPRUNE = SP_COPY_STYLE.NOPRUNE;
pub const SP_COPY_OEM_F6_INF = SP_COPY_STYLE.OEM_F6_INF;
pub const SP_COPY_ALREADYDECOMP = SP_COPY_STYLE.ALREADYDECOMP;
pub const SP_COPY_WINDOWS_SIGNED = SP_COPY_STYLE.WINDOWS_SIGNED;
pub const SP_COPY_PNPLOCKED = SP_COPY_STYLE.PNPLOCKED;
pub const SP_COPY_IN_USE_TRY_RENAME = SP_COPY_STYLE.IN_USE_TRY_RENAME;
pub const SP_COPY_INBOX_INF = SP_COPY_STYLE.INBOX_INF;
pub const SP_COPY_HARDLINK = SP_COPY_STYLE.HARDLINK;

pub const SETUP_FILE_OPERATION = enum(u32) {
    DELETE = 2,
    COPY = 0,
};
pub const FILEOP_DELETE = SETUP_FILE_OPERATION.DELETE;
pub const FILEOP_COPY = SETUP_FILE_OPERATION.COPY;

pub const OEM_SOURCE_MEDIA_TYPE = enum(u32) {
    NONE = 0,
    PATH = 1,
    URL = 2,
};
pub const SPOST_NONE = OEM_SOURCE_MEDIA_TYPE.NONE;
pub const SPOST_PATH = OEM_SOURCE_MEDIA_TYPE.PATH;
pub const SPOST_URL = OEM_SOURCE_MEDIA_TYPE.URL;

pub const SETUP_DI_BUILD_DRIVER_DRIVER_TYPE = enum(u32) {
    LASSDRIVER = 1,
    OMPATDRIVER = 2,
};
pub const SPDIT_CLASSDRIVER = SETUP_DI_BUILD_DRIVER_DRIVER_TYPE.LASSDRIVER;
pub const SPDIT_COMPATDRIVER = SETUP_DI_BUILD_DRIVER_DRIVER_TYPE.OMPATDRIVER;

pub const SP_INF_STYLE = enum(u32) {
    NONE = 0,
    OLDNT = 1,
    WIN4 = 2,
};
pub const INF_STYLE_NONE = SP_INF_STYLE.NONE;
pub const INF_STYLE_OLDNT = SP_INF_STYLE.OLDNT;
pub const INF_STYLE_WIN4 = SP_INF_STYLE.WIN4;

pub const CONFIGRET = enum(u32) {
    CR_SUCCESS = 0,
    CR_DEFAULT = 1,
    CR_OUT_OF_MEMORY = 2,
    CR_INVALID_POINTER = 3,
    CR_INVALID_FLAG = 4,
    CR_INVALID_DEVNODE = 5,
    // CR_INVALID_DEVINST = 5, this enum value conflicts with CR_INVALID_DEVNODE
    CR_INVALID_RES_DES = 6,
    CR_INVALID_LOG_CONF = 7,
    CR_INVALID_ARBITRATOR = 8,
    CR_INVALID_NODELIST = 9,
    CR_DEVNODE_HAS_REQS = 10,
    // CR_DEVINST_HAS_REQS = 10, this enum value conflicts with CR_DEVNODE_HAS_REQS
    CR_INVALID_RESOURCEID = 11,
    CR_DLVXD_NOT_FOUND = 12,
    CR_NO_SUCH_DEVNODE = 13,
    // CR_NO_SUCH_DEVINST = 13, this enum value conflicts with CR_NO_SUCH_DEVNODE
    CR_NO_MORE_LOG_CONF = 14,
    CR_NO_MORE_RES_DES = 15,
    CR_ALREADY_SUCH_DEVNODE = 16,
    // CR_ALREADY_SUCH_DEVINST = 16, this enum value conflicts with CR_ALREADY_SUCH_DEVNODE
    CR_INVALID_RANGE_LIST = 17,
    CR_INVALID_RANGE = 18,
    CR_FAILURE = 19,
    CR_NO_SUCH_LOGICAL_DEV = 20,
    CR_CREATE_BLOCKED = 21,
    CR_NOT_SYSTEM_VM = 22,
    CR_REMOVE_VETOED = 23,
    CR_APM_VETOED = 24,
    CR_INVALID_LOAD_TYPE = 25,
    CR_BUFFER_SMALL = 26,
    CR_NO_ARBITRATOR = 27,
    CR_NO_REGISTRY_HANDLE = 28,
    CR_REGISTRY_ERROR = 29,
    CR_INVALID_DEVICE_ID = 30,
    CR_INVALID_DATA = 31,
    CR_INVALID_API = 32,
    CR_DEVLOADER_NOT_READY = 33,
    CR_NEED_RESTART = 34,
    CR_NO_MORE_HW_PROFILES = 35,
    CR_DEVICE_NOT_THERE = 36,
    CR_NO_SUCH_VALUE = 37,
    CR_WRONG_TYPE = 38,
    CR_INVALID_PRIORITY = 39,
    CR_NOT_DISABLEABLE = 40,
    CR_FREE_RESOURCES = 41,
    CR_QUERY_VETOED = 42,
    CR_CANT_SHARE_IRQ = 43,
    CR_NO_DEPENDENT = 44,
    CR_SAME_RESOURCES = 45,
    CR_NO_SUCH_REGISTRY_KEY = 46,
    CR_INVALID_MACHINENAME = 47,
    CR_REMOTE_COMM_FAILURE = 48,
    CR_MACHINE_UNAVAILABLE = 49,
    CR_NO_CM_SERVICES = 50,
    CR_ACCESS_DENIED = 51,
    CR_CALL_NOT_IMPLEMENTED = 52,
    CR_INVALID_PROPERTY = 53,
    CR_DEVICE_INTERFACE_ACTIVE = 54,
    CR_NO_SUCH_DEVICE_INTERFACE = 55,
    CR_INVALID_REFERENCE_STRING = 56,
    CR_INVALID_CONFLICT_LIST = 57,
    CR_INVALID_INDEX = 58,
    CR_INVALID_STRUCTURE_SIZE = 59,
    NUM_CR_RESULTS = 60,
};
pub const CR_SUCCESS = CONFIGRET.CR_SUCCESS;
pub const CR_DEFAULT = CONFIGRET.CR_DEFAULT;
pub const CR_OUT_OF_MEMORY = CONFIGRET.CR_OUT_OF_MEMORY;
pub const CR_INVALID_POINTER = CONFIGRET.CR_INVALID_POINTER;
pub const CR_INVALID_FLAG = CONFIGRET.CR_INVALID_FLAG;
pub const CR_INVALID_DEVNODE = CONFIGRET.CR_INVALID_DEVNODE;
pub const CR_INVALID_DEVINST = CONFIGRET.CR_INVALID_DEVNODE;
pub const CR_INVALID_RES_DES = CONFIGRET.CR_INVALID_RES_DES;
pub const CR_INVALID_LOG_CONF = CONFIGRET.CR_INVALID_LOG_CONF;
pub const CR_INVALID_ARBITRATOR = CONFIGRET.CR_INVALID_ARBITRATOR;
pub const CR_INVALID_NODELIST = CONFIGRET.CR_INVALID_NODELIST;
pub const CR_DEVNODE_HAS_REQS = CONFIGRET.CR_DEVNODE_HAS_REQS;
pub const CR_DEVINST_HAS_REQS = CONFIGRET.CR_DEVNODE_HAS_REQS;
pub const CR_INVALID_RESOURCEID = CONFIGRET.CR_INVALID_RESOURCEID;
pub const CR_DLVXD_NOT_FOUND = CONFIGRET.CR_DLVXD_NOT_FOUND;
pub const CR_NO_SUCH_DEVNODE = CONFIGRET.CR_NO_SUCH_DEVNODE;
pub const CR_NO_SUCH_DEVINST = CONFIGRET.CR_NO_SUCH_DEVNODE;
pub const CR_NO_MORE_LOG_CONF = CONFIGRET.CR_NO_MORE_LOG_CONF;
pub const CR_NO_MORE_RES_DES = CONFIGRET.CR_NO_MORE_RES_DES;
pub const CR_ALREADY_SUCH_DEVNODE = CONFIGRET.CR_ALREADY_SUCH_DEVNODE;
pub const CR_ALREADY_SUCH_DEVINST = CONFIGRET.CR_ALREADY_SUCH_DEVNODE;
pub const CR_INVALID_RANGE_LIST = CONFIGRET.CR_INVALID_RANGE_LIST;
pub const CR_INVALID_RANGE = CONFIGRET.CR_INVALID_RANGE;
pub const CR_FAILURE = CONFIGRET.CR_FAILURE;
pub const CR_NO_SUCH_LOGICAL_DEV = CONFIGRET.CR_NO_SUCH_LOGICAL_DEV;
pub const CR_CREATE_BLOCKED = CONFIGRET.CR_CREATE_BLOCKED;
pub const CR_NOT_SYSTEM_VM = CONFIGRET.CR_NOT_SYSTEM_VM;
pub const CR_REMOVE_VETOED = CONFIGRET.CR_REMOVE_VETOED;
pub const CR_APM_VETOED = CONFIGRET.CR_APM_VETOED;
pub const CR_INVALID_LOAD_TYPE = CONFIGRET.CR_INVALID_LOAD_TYPE;
pub const CR_BUFFER_SMALL = CONFIGRET.CR_BUFFER_SMALL;
pub const CR_NO_ARBITRATOR = CONFIGRET.CR_NO_ARBITRATOR;
pub const CR_NO_REGISTRY_HANDLE = CONFIGRET.CR_NO_REGISTRY_HANDLE;
pub const CR_REGISTRY_ERROR = CONFIGRET.CR_REGISTRY_ERROR;
pub const CR_INVALID_DEVICE_ID = CONFIGRET.CR_INVALID_DEVICE_ID;
pub const CR_INVALID_DATA = CONFIGRET.CR_INVALID_DATA;
pub const CR_INVALID_API = CONFIGRET.CR_INVALID_API;
pub const CR_DEVLOADER_NOT_READY = CONFIGRET.CR_DEVLOADER_NOT_READY;
pub const CR_NEED_RESTART = CONFIGRET.CR_NEED_RESTART;
pub const CR_NO_MORE_HW_PROFILES = CONFIGRET.CR_NO_MORE_HW_PROFILES;
pub const CR_DEVICE_NOT_THERE = CONFIGRET.CR_DEVICE_NOT_THERE;
pub const CR_NO_SUCH_VALUE = CONFIGRET.CR_NO_SUCH_VALUE;
pub const CR_WRONG_TYPE = CONFIGRET.CR_WRONG_TYPE;
pub const CR_INVALID_PRIORITY = CONFIGRET.CR_INVALID_PRIORITY;
pub const CR_NOT_DISABLEABLE = CONFIGRET.CR_NOT_DISABLEABLE;
pub const CR_FREE_RESOURCES = CONFIGRET.CR_FREE_RESOURCES;
pub const CR_QUERY_VETOED = CONFIGRET.CR_QUERY_VETOED;
pub const CR_CANT_SHARE_IRQ = CONFIGRET.CR_CANT_SHARE_IRQ;
pub const CR_NO_DEPENDENT = CONFIGRET.CR_NO_DEPENDENT;
pub const CR_SAME_RESOURCES = CONFIGRET.CR_SAME_RESOURCES;
pub const CR_NO_SUCH_REGISTRY_KEY = CONFIGRET.CR_NO_SUCH_REGISTRY_KEY;
pub const CR_INVALID_MACHINENAME = CONFIGRET.CR_INVALID_MACHINENAME;
pub const CR_REMOTE_COMM_FAILURE = CONFIGRET.CR_REMOTE_COMM_FAILURE;
pub const CR_MACHINE_UNAVAILABLE = CONFIGRET.CR_MACHINE_UNAVAILABLE;
pub const CR_NO_CM_SERVICES = CONFIGRET.CR_NO_CM_SERVICES;
pub const CR_ACCESS_DENIED = CONFIGRET.CR_ACCESS_DENIED;
pub const CR_CALL_NOT_IMPLEMENTED = CONFIGRET.CR_CALL_NOT_IMPLEMENTED;
pub const CR_INVALID_PROPERTY = CONFIGRET.CR_INVALID_PROPERTY;
pub const CR_DEVICE_INTERFACE_ACTIVE = CONFIGRET.CR_DEVICE_INTERFACE_ACTIVE;
pub const CR_NO_SUCH_DEVICE_INTERFACE = CONFIGRET.CR_NO_SUCH_DEVICE_INTERFACE;
pub const CR_INVALID_REFERENCE_STRING = CONFIGRET.CR_INVALID_REFERENCE_STRING;
pub const CR_INVALID_CONFLICT_LIST = CONFIGRET.CR_INVALID_CONFLICT_LIST;
pub const CR_INVALID_INDEX = CONFIGRET.CR_INVALID_INDEX;
pub const CR_INVALID_STRUCTURE_SIZE = CONFIGRET.CR_INVALID_STRUCTURE_SIZE;
pub const NUM_CR_RESULTS = CONFIGRET.NUM_CR_RESULTS;

pub const HCMNOTIFICATION = *opaque {};

pub const PSP_FILE_CALLBACK_A = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        Context: ?*anyopaque,
        Notification: u32,
        Param1: usize,
        Param2: usize,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        Context: ?*anyopaque,
        Notification: u32,
        Param1: usize,
        Param2: usize,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const PSP_FILE_CALLBACK_W = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        Context: ?*anyopaque,
        Notification: u32,
        Param1: usize,
        Param2: usize,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        Context: ?*anyopaque,
        Notification: u32,
        Param1: usize,
        Param2: usize,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const SP_SELECTDEVICE_PARAMS_A = extern struct {
    ClassInstallHeader: SP_CLASSINSTALL_HEADER,
    Title: [60]CHAR,
    Instructions: [256]CHAR,
    ListLabel: [30]CHAR,
    SubTitle: [256]CHAR,
    Reserved: [2]u8,
};

pub const PDETECT_PROGRESS_NOTIFY = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        ProgressNotifyParam: ?*anyopaque,
        DetectComplete: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        ProgressNotifyParam: ?*anyopaque,
        DetectComplete: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const SP_TROUBLESHOOTER_PARAMS_A = extern struct {
    ClassInstallHeader: SP_CLASSINSTALL_HEADER,
    ChmFile: [260]CHAR,
    HtmlTroubleShooter: [260]CHAR,
};

pub const SP_POWERMESSAGEWAKE_PARAMS_A = extern struct {
    ClassInstallHeader: SP_CLASSINSTALL_HEADER,
    PowerMessageWake: [512]CHAR,
};

pub const PSP_DETSIG_CMPPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        DeviceInfoSet: ?*anyopaque,
        NewDeviceData: ?*SP_DEVINFO_DATA,
        ExistingDeviceData: ?*SP_DEVINFO_DATA,
        CompareContext: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        DeviceInfoSet: ?*anyopaque,
        NewDeviceData: ?*SP_DEVINFO_DATA,
        ExistingDeviceData: ?*SP_DEVINFO_DATA,
        CompareContext: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const SetupFileLogInfo = enum(i32) {
    SourceFilename = 0,
    Checksum = 1,
    DiskTagfile = 2,
    DiskDescription = 3,
    OtherInfo = 4,
    Max = 5,
};
pub const SetupFileLogSourceFilename = SetupFileLogInfo.SourceFilename;
pub const SetupFileLogChecksum = SetupFileLogInfo.Checksum;
pub const SetupFileLogDiskTagfile = SetupFileLogInfo.DiskTagfile;
pub const SetupFileLogDiskDescription = SetupFileLogInfo.DiskDescription;
pub const SetupFileLogOtherInfo = SetupFileLogInfo.OtherInfo;
pub const SetupFileLogMax = SetupFileLogInfo.Max;

pub const PNP_VETO_TYPE = enum(i32) {
    TypeUnknown = 0,
    LegacyDevice = 1,
    PendingClose = 2,
    WindowsApp = 3,
    WindowsService = 4,
    OutstandingOpen = 5,
    Device = 6,
    Driver = 7,
    IllegalDeviceRequest = 8,
    InsufficientPower = 9,
    NonDisableable = 10,
    LegacyDriver = 11,
    InsufficientRights = 12,
    AlreadyRemoved = 13,
};
pub const PNP_VetoTypeUnknown = PNP_VETO_TYPE.TypeUnknown;
pub const PNP_VetoLegacyDevice = PNP_VETO_TYPE.LegacyDevice;
pub const PNP_VetoPendingClose = PNP_VETO_TYPE.PendingClose;
pub const PNP_VetoWindowsApp = PNP_VETO_TYPE.WindowsApp;
pub const PNP_VetoWindowsService = PNP_VETO_TYPE.WindowsService;
pub const PNP_VetoOutstandingOpen = PNP_VETO_TYPE.OutstandingOpen;
pub const PNP_VetoDevice = PNP_VETO_TYPE.Device;
pub const PNP_VetoDriver = PNP_VETO_TYPE.Driver;
pub const PNP_VetoIllegalDeviceRequest = PNP_VETO_TYPE.IllegalDeviceRequest;
pub const PNP_VetoInsufficientPower = PNP_VETO_TYPE.InsufficientPower;
pub const PNP_VetoNonDisableable = PNP_VETO_TYPE.NonDisableable;
pub const PNP_VetoLegacyDriver = PNP_VETO_TYPE.LegacyDriver;
pub const PNP_VetoInsufficientRights = PNP_VETO_TYPE.InsufficientRights;
pub const PNP_VetoAlreadyRemoved = PNP_VETO_TYPE.AlreadyRemoved;

pub const CONFLICT_DETAILS_A = extern struct {
    CD_ulSize: u32,
    CD_ulMask: u32,
    CD_dnDevInst: u32,
    CD_rdResDes: usize,
    CD_ulFlags: u32,
    CD_szDescription: [260]CHAR,
};

pub const CONFLICT_DETAILS_W = extern struct {
    CD_ulSize: u32,
    CD_ulMask: u32,
    CD_dnDevInst: u32,
    CD_rdResDes: usize,
    CD_ulFlags: u32,
    CD_szDescription: [260]u16,
};

pub const MEM_RANGE = extern struct {
    MR_Align: u64 align(1),
    MR_nBytes: u32 align(1),
    MR_Min: u64 align(1),
    MR_Max: u64 align(1),
    MR_Flags: u32 align(1),
    MR_Reserved: u32 align(1),
};

pub const MEM_DES = extern struct {
    MD_Count: u32 align(1),
    MD_Type: u32 align(1),
    MD_Alloc_Base: u64 align(1),
    MD_Alloc_End: u64 align(1),
    MD_Flags: u32 align(1),
    MD_Reserved: u32 align(1),
};

pub const MEM_RESOURCE = extern struct {
    MEM_Header: MEM_DES,
    MEM_Data: [1]MEM_RANGE,
};

pub const Mem_Large_Range_s = extern struct {
    MLR_Align: u64 align(1),
    MLR_nBytes: u64 align(1),
    MLR_Min: u64 align(1),
    MLR_Max: u64 align(1),
    MLR_Flags: u32 align(1),
    MLR_Reserved: u32 align(1),
};

pub const Mem_Large_Des_s = extern struct {
    MLD_Count: u32 align(1),
    MLD_Type: u32 align(1),
    MLD_Alloc_Base: u64 align(1),
    MLD_Alloc_End: u64 align(1),
    MLD_Flags: u32 align(1),
    MLD_Reserved: u32 align(1),
};

pub const Mem_Large_Resource_s = extern struct {
    MEM_LARGE_Header: Mem_Large_Des_s,
    MEM_LARGE_Data: [1]Mem_Large_Range_s,
};

pub const IO_RANGE = extern struct {
    IOR_Align: u64 align(1),
    IOR_nPorts: u32 align(1),
    IOR_Min: u64 align(1),
    IOR_Max: u64 align(1),
    IOR_RangeFlags: u32 align(1),
    IOR_Alias: u64 align(1),
};

pub const IO_DES = extern struct {
    IOD_Count: u32 align(1),
    IOD_Type: u32 align(1),
    IOD_Alloc_Base: u64 align(1),
    IOD_Alloc_End: u64 align(1),
    IOD_DesFlags: u32 align(1),
};

pub const IO_RESOURCE = extern struct {
    IO_Header: IO_DES,
    IO_Data: [1]IO_RANGE,
};

pub const DMA_RANGE = extern struct {
    DR_Min: u32 align(1),
    DR_Max: u32 align(1),
    DR_Flags: u32 align(1),
};

pub const DMA_DES = extern struct {
    DD_Count: u32 align(1),
    DD_Type: u32 align(1),
    DD_Flags: u32 align(1),
    DD_Alloc_Chan: u32 align(1),
};

pub const DMA_RESOURCE = extern struct {
    DMA_Header: DMA_DES,
    DMA_Data: [1]DMA_RANGE,
};

pub const IRQ_RANGE = extern struct {
    IRQR_Min: u32 align(1),
    IRQR_Max: u32 align(1),
    IRQR_Flags: u32 align(1),
};

pub const IRQ_DES_32 = extern struct {
    IRQD_Count: u32 align(1),
    IRQD_Type: u32 align(1),
    IRQD_Flags: u32 align(1),
    IRQD_Alloc_Num: u32 align(1),
    IRQD_Affinity: u32 align(1),
};

pub const IRQ_DES_64 = extern struct {
    IRQD_Count: u32 align(1),
    IRQD_Type: u32 align(1),
    IRQD_Flags: u32 align(1),
    IRQD_Alloc_Num: u32 align(1),
    IRQD_Affinity: u64 align(1),
};

pub const IRQ_RESOURCE_32 = extern struct {
    IRQ_Header: IRQ_DES_32,
    IRQ_Data: [1]IRQ_RANGE,
};

pub const IRQ_RESOURCE_64 = extern struct {
    IRQ_Header: IRQ_DES_64,
    IRQ_Data: [1]IRQ_RANGE,
};

pub const DevPrivate_Range_s = extern struct {
    PR_Data1: u32 align(1),
    PR_Data2: u32 align(1),
    PR_Data3: u32 align(1),
};

pub const DevPrivate_Des_s = extern struct {
    PD_Count: u32 align(1),
    PD_Type: u32 align(1),
    PD_Data1: u32 align(1),
    PD_Data2: u32 align(1),
    PD_Data3: u32 align(1),
    PD_Flags: u32 align(1),
};

pub const DevPrivate_Resource_s = extern struct {
    PRV_Header: DevPrivate_Des_s,
    PRV_Data: [1]DevPrivate_Range_s,
};

pub const CS_DES = extern struct {
    CSD_SignatureLength: u32 align(1),
    CSD_LegacyDataOffset: u32 align(1),
    CSD_LegacyDataSize: u32 align(1),
    CSD_Flags: u32 align(1),
    CSD_ClassGuid: Guid align(1),
    CSD_Signature: [1]u8 align(1),
};

pub const CS_RESOURCE = extern struct {
    CS_Header: CS_DES,
};

pub const PCCARD_DES = extern struct {
    PCD_Count: u32 align(1),
    PCD_Type: u32 align(1),
    PCD_Flags: u32 align(1),
    PCD_ConfigIndex: u8 align(1),
    PCD_Reserved: [3]u8 align(1),
    PCD_MemoryCardBase1: u32 align(1),
    PCD_MemoryCardBase2: u32 align(1),
    PCD_MemoryCardBase: [2]u32 align(1),
    PCD_MemoryFlags: [2]u16 align(1),
    PCD_IoFlags: [2]u8 align(1),
};

pub const PCCARD_RESOURCE = extern struct {
    PcCard_Header: PCCARD_DES,
};

pub const MFCARD_DES = extern struct {
    PMF_Count: u32 align(1),
    PMF_Type: u32 align(1),
    PMF_Flags: u32 align(1),
    PMF_ConfigOptions: u8 align(1),
    PMF_IoResourceIndex: u8 align(1),
    PMF_Reserved: [2]u8 align(1),
    PMF_ConfigRegisterBase: u32 align(1),
};

pub const MFCARD_RESOURCE = extern struct {
    MfCard_Header: MFCARD_DES,
};

pub const BUSNUMBER_RANGE = extern struct {
    BUSR_Min: u32 align(1),
    BUSR_Max: u32 align(1),
    BUSR_nBusNumbers: u32 align(1),
    BUSR_Flags: u32 align(1),
};

pub const BUSNUMBER_DES = extern struct {
    BUSD_Count: u32 align(1),
    BUSD_Type: u32 align(1),
    BUSD_Flags: u32 align(1),
    BUSD_Alloc_Base: u32 align(1),
    BUSD_Alloc_End: u32 align(1),
};

pub const BUSNUMBER_RESOURCE = extern struct {
    BusNumber_Header: BUSNUMBER_DES,
    BusNumber_Data: [1]BUSNUMBER_RANGE,
};

pub const Connection_Des_s = extern struct {
    COND_Type: u32 align(1),
    COND_Flags: u32 align(1),
    COND_Class: u8 align(1),
    COND_ClassType: u8 align(1),
    COND_Reserved1: u8 align(1),
    COND_Reserved2: u8 align(1),
    COND_Id: LARGE_INTEGER align(1),
};

pub const Connection_Resource_s = extern struct {
    Connection_Header: Connection_Des_s,
};

pub const HWProfileInfo_sA = extern struct {
    HWPI_ulHWProfile: u32 align(1),
    HWPI_szFriendlyName: [80]CHAR align(1),
    HWPI_dwFlags: u32 align(1),
};

pub const HWProfileInfo_sW = extern struct {
    HWPI_ulHWProfile: u32 align(1),
    HWPI_szFriendlyName: [80]u16 align(1),
    HWPI_dwFlags: u32 align(1),
};

pub const CM_NOTIFY_FILTER_TYPE = enum(i32) {
    DEVICEINTERFACE = 0,
    DEVICEHANDLE = 1,
    DEVICEINSTANCE = 2,
    MAX = 3,
};
pub const CM_NOTIFY_FILTER_TYPE_DEVICEINTERFACE = CM_NOTIFY_FILTER_TYPE.DEVICEINTERFACE;
pub const CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE = CM_NOTIFY_FILTER_TYPE.DEVICEHANDLE;
pub const CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE = CM_NOTIFY_FILTER_TYPE.DEVICEINSTANCE;
pub const CM_NOTIFY_FILTER_TYPE_MAX = CM_NOTIFY_FILTER_TYPE.MAX;

pub const CM_NOTIFY_FILTER = extern struct {
    cbSize: u32,
    Flags: u32,
    FilterType: CM_NOTIFY_FILTER_TYPE,
    Reserved: u32,
    u: extern union {
        DeviceInterface: extern struct {
            ClassGuid: Guid,
        },
        DeviceHandle: extern struct {
            hTarget: ?HANDLE,
        },
        DeviceInstance: extern struct {
            InstanceId: [200]u16,
        },
    },
};

pub const CM_NOTIFY_ACTION = enum(i32) {
    DEVICEINTERFACEARRIVAL = 0,
    DEVICEINTERFACEREMOVAL = 1,
    DEVICEQUERYREMOVE = 2,
    DEVICEQUERYREMOVEFAILED = 3,
    DEVICEREMOVEPENDING = 4,
    DEVICEREMOVECOMPLETE = 5,
    DEVICECUSTOMEVENT = 6,
    DEVICEINSTANCEENUMERATED = 7,
    DEVICEINSTANCESTARTED = 8,
    DEVICEINSTANCEREMOVED = 9,
    MAX = 10,
};
pub const CM_NOTIFY_ACTION_DEVICEINTERFACEARRIVAL = CM_NOTIFY_ACTION.DEVICEINTERFACEARRIVAL;
pub const CM_NOTIFY_ACTION_DEVICEINTERFACEREMOVAL = CM_NOTIFY_ACTION.DEVICEINTERFACEREMOVAL;
pub const CM_NOTIFY_ACTION_DEVICEQUERYREMOVE = CM_NOTIFY_ACTION.DEVICEQUERYREMOVE;
pub const CM_NOTIFY_ACTION_DEVICEQUERYREMOVEFAILED = CM_NOTIFY_ACTION.DEVICEQUERYREMOVEFAILED;
pub const CM_NOTIFY_ACTION_DEVICEREMOVEPENDING = CM_NOTIFY_ACTION.DEVICEREMOVEPENDING;
pub const CM_NOTIFY_ACTION_DEVICEREMOVECOMPLETE = CM_NOTIFY_ACTION.DEVICEREMOVECOMPLETE;
pub const CM_NOTIFY_ACTION_DEVICECUSTOMEVENT = CM_NOTIFY_ACTION.DEVICECUSTOMEVENT;
pub const CM_NOTIFY_ACTION_DEVICEINSTANCEENUMERATED = CM_NOTIFY_ACTION.DEVICEINSTANCEENUMERATED;
pub const CM_NOTIFY_ACTION_DEVICEINSTANCESTARTED = CM_NOTIFY_ACTION.DEVICEINSTANCESTARTED;
pub const CM_NOTIFY_ACTION_DEVICEINSTANCEREMOVED = CM_NOTIFY_ACTION.DEVICEINSTANCEREMOVED;
pub const CM_NOTIFY_ACTION_MAX = CM_NOTIFY_ACTION.MAX;

pub const CM_NOTIFY_EVENT_DATA = extern struct {
    FilterType: CM_NOTIFY_FILTER_TYPE,
    Reserved: u32,
    u: extern union {
        DeviceInterface: extern struct {
            ClassGuid: Guid,
            SymbolicLink: [1]u16,
        },
        DeviceHandle: extern struct {
            EventGuid: Guid,
            NameOffset: i32,
            DataSize: u32,
            Data: [1]u8,
        },
        DeviceInstance: extern struct {
            InstanceId: [1]u16,
        },
    },
};

pub const PCM_NOTIFY_CALLBACK = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hNotify: ?HCMNOTIFICATION,
        Context: ?*anyopaque,
        Action: CM_NOTIFY_ACTION,
        // TODO: what to do with BytesParamIndex 4?
        EventData: ?*CM_NOTIFY_EVENT_DATA,
        EventDataSize: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        hNotify: ?HCMNOTIFICATION,
        Context: ?*anyopaque,
        Action: CM_NOTIFY_ACTION,
        // TODO: what to do with BytesParamIndex 4?
        EventData: ?*CM_NOTIFY_EVENT_DATA,
        EventDataSize: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const INFCONTEXT = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        Inf: ?*anyopaque,
        CurrentInf: ?*anyopaque,
        Section: u32,
        Line: u32,
    },
    .X86 => extern struct {
        Inf: ?*anyopaque align(1),
        CurrentInf: ?*anyopaque align(1),
        Section: u32 align(1),
        Line: u32 align(1),
    },
};
pub const SP_INF_INFORMATION = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        InfStyle: SP_INF_STYLE,
        InfCount: u32,
        VersionData: [1]u8,
    },
    .X86 => extern struct {
        InfStyle: SP_INF_STYLE align(1),
        InfCount: u32 align(1),
        VersionData: [1]u8 align(1),
    },
};
pub const SP_ALTPLATFORM_INFO_V3 = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        Platform: u32,
        MajorVersion: u32,
        MinorVersion: u32,
        ProcessorArchitecture: u16,
        Anonymous: extern union {
            Reserved: u16,
            Flags: u16,
        },
        FirstValidatedMajorVersion: u32,
        FirstValidatedMinorVersion: u32,
        ProductType: u8,
        SuiteMask: u16,
        BuildNumber: u32,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        Platform: u32 align(1),
        MajorVersion: u32 align(1),
        MinorVersion: u32 align(1),
        ProcessorArchitecture: u16 align(1),
        Anonymous: extern union {
            Reserved: u16 align(1),
            Flags: u16 align(1),
        } align(1),
        FirstValidatedMajorVersion: u32 align(1),
        FirstValidatedMinorVersion: u32 align(1),
        ProductType: u8 align(1),
        SuiteMask: u16 align(1),
        BuildNumber: u32 align(1),
    },
};
pub const SP_ALTPLATFORM_INFO_V2 = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        Platform: VER_PLATFORM,
        MajorVersion: u32,
        MinorVersion: u32,
        ProcessorArchitecture: u16,
        Anonymous: extern union {
            Reserved: u16,
            Flags: u16,
        },
        FirstValidatedMajorVersion: u32,
        FirstValidatedMinorVersion: u32,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        Platform: VER_PLATFORM align(1),
        MajorVersion: u32 align(1),
        MinorVersion: u32 align(1),
        ProcessorArchitecture: u16 align(1),
        Anonymous: extern union {
            Reserved: u16 align(1),
            Flags: u16 align(1),
        } align(1),
        FirstValidatedMajorVersion: u32 align(1),
        FirstValidatedMinorVersion: u32 align(1),
    },
};
pub const SP_ALTPLATFORM_INFO_V1 = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        Platform: VER_PLATFORM,
        MajorVersion: u32,
        MinorVersion: u32,
        ProcessorArchitecture: u16,
        Reserved: u16,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        Platform: VER_PLATFORM align(1),
        MajorVersion: u32 align(1),
        MinorVersion: u32 align(1),
        ProcessorArchitecture: u16 align(1),
        Reserved: u16 align(1),
    },
};
pub const SP_ORIGINAL_FILE_INFO_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        OriginalInfName: [260]CHAR,
        OriginalCatalogName: [260]CHAR,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        OriginalInfName: [260]CHAR align(1),
        OriginalCatalogName: [260]CHAR align(1),
    },
};
pub const SP_ORIGINAL_FILE_INFO_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        OriginalInfName: [260]u16,
        OriginalCatalogName: [260]u16,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        OriginalInfName: [260]u16 align(1),
        OriginalCatalogName: [260]u16 align(1),
    },
};
pub const FILEPATHS_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        Target: ?[*:0]const u8,
        Source: ?[*:0]const u8,
        Win32Error: u32,
        Flags: u32,
    },
    .X86 => extern struct {
        Target: ?[*:0]const u8 align(1),
        Source: ?[*:0]const u8 align(1),
        Win32Error: u32 align(1),
        Flags: u32 align(1),
    },
};
pub const FILEPATHS_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        Target: ?[*:0]const u16,
        Source: ?[*:0]const u16,
        Win32Error: u32,
        Flags: u32,
    },
    .X86 => extern struct {
        Target: ?[*:0]const u16 align(1),
        Source: ?[*:0]const u16 align(1),
        Win32Error: u32 align(1),
        Flags: u32 align(1),
    },
};
pub const FILEPATHS_SIGNERINFO_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        Target: ?[*:0]const u8,
        Source: ?[*:0]const u8,
        Win32Error: u32,
        Flags: u32,
        DigitalSigner: ?[*:0]const u8,
        Version: ?[*:0]const u8,
        CatalogFile: ?[*:0]const u8,
    },
    .X86 => extern struct {
        Target: ?[*:0]const u8 align(1),
        Source: ?[*:0]const u8 align(1),
        Win32Error: u32 align(1),
        Flags: u32 align(1),
        DigitalSigner: ?[*:0]const u8 align(1),
        Version: ?[*:0]const u8 align(1),
        CatalogFile: ?[*:0]const u8 align(1),
    },
};
pub const FILEPATHS_SIGNERINFO_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        Target: ?[*:0]const u16,
        Source: ?[*:0]const u16,
        Win32Error: u32,
        Flags: u32,
        DigitalSigner: ?[*:0]const u16,
        Version: ?[*:0]const u16,
        CatalogFile: ?[*:0]const u16,
    },
    .X86 => extern struct {
        Target: ?[*:0]const u16 align(1),
        Source: ?[*:0]const u16 align(1),
        Win32Error: u32 align(1),
        Flags: u32 align(1),
        DigitalSigner: ?[*:0]const u16 align(1),
        Version: ?[*:0]const u16 align(1),
        CatalogFile: ?[*:0]const u16 align(1),
    },
};
pub const SOURCE_MEDIA_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        Reserved: ?[*:0]const u8,
        Tagfile: ?[*:0]const u8,
        Description: ?[*:0]const u8,
        SourcePath: ?[*:0]const u8,
        SourceFile: ?[*:0]const u8,
        Flags: u32,
    },
    .X86 => extern struct {
        Reserved: ?[*:0]const u8 align(1),
        Tagfile: ?[*:0]const u8 align(1),
        Description: ?[*:0]const u8 align(1),
        SourcePath: ?[*:0]const u8 align(1),
        SourceFile: ?[*:0]const u8 align(1),
        Flags: u32 align(1),
    },
};
pub const SOURCE_MEDIA_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        Reserved: ?[*:0]const u16,
        Tagfile: ?[*:0]const u16,
        Description: ?[*:0]const u16,
        SourcePath: ?[*:0]const u16,
        SourceFile: ?[*:0]const u16,
        Flags: u32,
    },
    .X86 => extern struct {
        Reserved: ?[*:0]const u16 align(1),
        Tagfile: ?[*:0]const u16 align(1),
        Description: ?[*:0]const u16 align(1),
        SourcePath: ?[*:0]const u16 align(1),
        SourceFile: ?[*:0]const u16 align(1),
        Flags: u32 align(1),
    },
};
pub const CABINET_INFO_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        CabinetPath: ?[*:0]const u8,
        CabinetFile: ?[*:0]const u8,
        DiskName: ?[*:0]const u8,
        SetId: u16,
        CabinetNumber: u16,
    },
    .X86 => extern struct {
        CabinetPath: ?[*:0]const u8 align(1),
        CabinetFile: ?[*:0]const u8 align(1),
        DiskName: ?[*:0]const u8 align(1),
        SetId: u16 align(1),
        CabinetNumber: u16 align(1),
    },
};
pub const CABINET_INFO_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        CabinetPath: ?[*:0]const u16,
        CabinetFile: ?[*:0]const u16,
        DiskName: ?[*:0]const u16,
        SetId: u16,
        CabinetNumber: u16,
    },
    .X86 => extern struct {
        CabinetPath: ?[*:0]const u16 align(1),
        CabinetFile: ?[*:0]const u16 align(1),
        DiskName: ?[*:0]const u16 align(1),
        SetId: u16 align(1),
        CabinetNumber: u16 align(1),
    },
};
pub const FILE_IN_CABINET_INFO_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        NameInCabinet: ?[*:0]const u8,
        FileSize: u32,
        Win32Error: u32,
        DosDate: u16,
        DosTime: u16,
        DosAttribs: u16,
        FullTargetName: [260]CHAR,
    },
    .X86 => extern struct {
        NameInCabinet: ?[*:0]const u8 align(1),
        FileSize: u32 align(1),
        Win32Error: u32 align(1),
        DosDate: u16 align(1),
        DosTime: u16 align(1),
        DosAttribs: u16 align(1),
        FullTargetName: [260]CHAR align(1),
    },
};
pub const FILE_IN_CABINET_INFO_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        NameInCabinet: ?[*:0]const u16,
        FileSize: u32,
        Win32Error: u32,
        DosDate: u16,
        DosTime: u16,
        DosAttribs: u16,
        FullTargetName: [260]u16,
    },
    .X86 => extern struct {
        NameInCabinet: ?[*:0]const u16 align(1),
        FileSize: u32 align(1),
        Win32Error: u32 align(1),
        DosDate: u16 align(1),
        DosTime: u16 align(1),
        DosAttribs: u16 align(1),
        FullTargetName: [260]u16 align(1),
    },
};
pub const SP_REGISTER_CONTROL_STATUSA = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        FileName: ?[*:0]const u8,
        Win32Error: u32,
        FailureCode: u32,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        FileName: ?[*:0]const u8 align(1),
        Win32Error: u32 align(1),
        FailureCode: u32 align(1),
    },
};
pub const SP_REGISTER_CONTROL_STATUSW = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        FileName: ?[*:0]const u16,
        Win32Error: u32,
        FailureCode: u32,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        FileName: ?[*:0]const u16 align(1),
        Win32Error: u32 align(1),
        FailureCode: u32 align(1),
    },
};
pub const SP_FILE_COPY_PARAMS_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        QueueHandle: ?*anyopaque,
        SourceRootPath: ?[*:0]const u8,
        SourcePath: ?[*:0]const u8,
        SourceFilename: ?[*:0]const u8,
        SourceDescription: ?[*:0]const u8,
        SourceTagfile: ?[*:0]const u8,
        TargetDirectory: ?[*:0]const u8,
        TargetFilename: ?[*:0]const u8,
        CopyStyle: u32,
        LayoutInf: ?*anyopaque,
        SecurityDescriptor: ?[*:0]const u8,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        QueueHandle: ?*anyopaque align(1),
        SourceRootPath: ?[*:0]const u8 align(1),
        SourcePath: ?[*:0]const u8 align(1),
        SourceFilename: ?[*:0]const u8 align(1),
        SourceDescription: ?[*:0]const u8 align(1),
        SourceTagfile: ?[*:0]const u8 align(1),
        TargetDirectory: ?[*:0]const u8 align(1),
        TargetFilename: ?[*:0]const u8 align(1),
        CopyStyle: u32 align(1),
        LayoutInf: ?*anyopaque align(1),
        SecurityDescriptor: ?[*:0]const u8 align(1),
    },
};
pub const SP_FILE_COPY_PARAMS_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        QueueHandle: ?*anyopaque,
        SourceRootPath: ?[*:0]const u16,
        SourcePath: ?[*:0]const u16,
        SourceFilename: ?[*:0]const u16,
        SourceDescription: ?[*:0]const u16,
        SourceTagfile: ?[*:0]const u16,
        TargetDirectory: ?[*:0]const u16,
        TargetFilename: ?[*:0]const u16,
        CopyStyle: u32,
        LayoutInf: ?*anyopaque,
        SecurityDescriptor: ?[*:0]const u16,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        QueueHandle: ?*anyopaque align(1),
        SourceRootPath: ?[*:0]const u16 align(1),
        SourcePath: ?[*:0]const u16 align(1),
        SourceFilename: ?[*:0]const u16 align(1),
        SourceDescription: ?[*:0]const u16 align(1),
        SourceTagfile: ?[*:0]const u16 align(1),
        TargetDirectory: ?[*:0]const u16 align(1),
        TargetFilename: ?[*:0]const u16 align(1),
        CopyStyle: u32 align(1),
        LayoutInf: ?*anyopaque align(1),
        SecurityDescriptor: ?[*:0]const u16 align(1),
    },
};
pub const SP_DEVINFO_DATA = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        ClassGuid: Guid,
        DevInst: u32,
        Reserved: usize,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        ClassGuid: Guid align(1),
        DevInst: u32 align(1),
        Reserved: usize align(1),
    },
};
pub const SP_DEVICE_INTERFACE_DATA = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        InterfaceClassGuid: Guid,
        Flags: u32,
        Reserved: usize,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        InterfaceClassGuid: Guid align(1),
        Flags: u32 align(1),
        Reserved: usize align(1),
    },
};
pub const SP_DEVICE_INTERFACE_DETAIL_DATA_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        DevicePath: [1]CHAR,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        DevicePath: [1]CHAR align(1),
    },
};
pub const SP_DEVICE_INTERFACE_DETAIL_DATA_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        DevicePath: [1]u16,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        DevicePath: [1]u16 align(1),
    },
};
pub const SP_DEVINFO_LIST_DETAIL_DATA_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        ClassGuid: Guid,
        RemoteMachineHandle: ?HANDLE,
        RemoteMachineName: [263]CHAR,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        ClassGuid: Guid align(1),
        RemoteMachineHandle: ?HANDLE align(1),
        RemoteMachineName: [263]CHAR align(1),
    },
};
pub const SP_DEVINFO_LIST_DETAIL_DATA_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        ClassGuid: Guid,
        RemoteMachineHandle: ?HANDLE,
        RemoteMachineName: [263]u16,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        ClassGuid: Guid align(1),
        RemoteMachineHandle: ?HANDLE align(1),
        RemoteMachineName: [263]u16 align(1),
    },
};
pub const SP_DEVINSTALL_PARAMS_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        Flags: u32,
        FlagsEx: u32,
        hwndParent: ?HWND,
        InstallMsgHandler: ?PSP_FILE_CALLBACK_A,
        InstallMsgHandlerContext: ?*anyopaque,
        FileQueue: ?*anyopaque,
        ClassInstallReserved: usize,
        Reserved: u32,
        DriverPath: [260]CHAR,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        Flags: u32 align(1),
        FlagsEx: u32 align(1),
        hwndParent: ?HWND align(1),
        InstallMsgHandler: ?PSP_FILE_CALLBACK_A align(1),
        InstallMsgHandlerContext: ?*anyopaque align(1),
        FileQueue: ?*anyopaque align(1),
        ClassInstallReserved: usize align(1),
        Reserved: u32 align(1),
        DriverPath: [260]CHAR align(1),
    },
};
pub const SP_DEVINSTALL_PARAMS_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        Flags: u32,
        FlagsEx: u32,
        hwndParent: ?HWND,
        InstallMsgHandler: ?PSP_FILE_CALLBACK_A,
        InstallMsgHandlerContext: ?*anyopaque,
        FileQueue: ?*anyopaque,
        ClassInstallReserved: usize,
        Reserved: u32,
        DriverPath: [260]u16,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        Flags: u32 align(1),
        FlagsEx: u32 align(1),
        hwndParent: ?HWND align(1),
        InstallMsgHandler: ?PSP_FILE_CALLBACK_A align(1),
        InstallMsgHandlerContext: ?*anyopaque align(1),
        FileQueue: ?*anyopaque align(1),
        ClassInstallReserved: usize align(1),
        Reserved: u32 align(1),
        DriverPath: [260]u16 align(1),
    },
};
pub const SP_CLASSINSTALL_HEADER = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        InstallFunction: u32,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        InstallFunction: u32 align(1),
    },
};
pub const SP_ENABLECLASS_PARAMS = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER,
        ClassGuid: Guid,
        EnableMessage: u32,
    },
    .X86 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER align(1),
        ClassGuid: Guid align(1),
        EnableMessage: u32 align(1),
    },
};
pub const SP_PROPCHANGE_PARAMS = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER,
        StateChange: u32,
        Scope: u32,
        HwProfile: u32,
    },
    .X86 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER align(1),
        StateChange: u32 align(1),
        Scope: u32 align(1),
        HwProfile: u32 align(1),
    },
};
pub const SP_REMOVEDEVICE_PARAMS = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER,
        Scope: u32,
        HwProfile: u32,
    },
    .X86 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER align(1),
        Scope: u32 align(1),
        HwProfile: u32 align(1),
    },
};
pub const SP_UNREMOVEDEVICE_PARAMS = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER,
        Scope: u32,
        HwProfile: u32,
    },
    .X86 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER align(1),
        Scope: u32 align(1),
        HwProfile: u32 align(1),
    },
};
pub const SP_SELECTDEVICE_PARAMS_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER,
        Title: [60]u16,
        Instructions: [256]u16,
        ListLabel: [30]u16,
        SubTitle: [256]u16,
    },
    .X86 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER align(1),
        Title: [60]u16 align(1),
        Instructions: [256]u16 align(1),
        ListLabel: [30]u16 align(1),
        SubTitle: [256]u16 align(1),
    },
};
pub const SP_DETECTDEVICE_PARAMS = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER,
        DetectProgressNotify: ?PDETECT_PROGRESS_NOTIFY,
        ProgressNotifyParam: ?*anyopaque,
    },
    .X86 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER align(1),
        DetectProgressNotify: ?PDETECT_PROGRESS_NOTIFY align(1),
        ProgressNotifyParam: ?*anyopaque align(1),
    },
};
pub const SP_INSTALLWIZARD_DATA = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER,
        Flags: u32,
        DynamicPages: [20]?HPROPSHEETPAGE,
        NumDynamicPages: u32,
        DynamicPageFlags: u32,
        PrivateFlags: u32,
        PrivateData: LPARAM,
        hwndWizardDlg: ?HWND,
    },
    .X86 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER align(1),
        Flags: u32 align(1),
        DynamicPages: [20]?HPROPSHEETPAGE align(1),
        NumDynamicPages: u32 align(1),
        DynamicPageFlags: u32 align(1),
        PrivateFlags: u32 align(1),
        PrivateData: LPARAM align(1),
        hwndWizardDlg: ?HWND align(1),
    },
};
pub const SP_NEWDEVICEWIZARD_DATA = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER,
        Flags: u32,
        DynamicPages: [20]?HPROPSHEETPAGE,
        NumDynamicPages: u32,
        hwndWizardDlg: ?HWND,
    },
    .X86 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER align(1),
        Flags: u32 align(1),
        DynamicPages: [20]?HPROPSHEETPAGE align(1),
        NumDynamicPages: u32 align(1),
        hwndWizardDlg: ?HWND align(1),
    },
};
pub const SP_TROUBLESHOOTER_PARAMS_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER,
        ChmFile: [260]u16,
        HtmlTroubleShooter: [260]u16,
    },
    .X86 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER align(1),
        ChmFile: [260]u16 align(1),
        HtmlTroubleShooter: [260]u16 align(1),
    },
};
pub const SP_POWERMESSAGEWAKE_PARAMS_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER,
        PowerMessageWake: [512]u16,
    },
    .X86 => extern struct {
        ClassInstallHeader: SP_CLASSINSTALL_HEADER align(1),
        PowerMessageWake: [512]u16 align(1),
    },
};
pub const SP_DRVINFO_DATA_V2_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        DriverType: u32,
        Reserved: usize,
        Description: [256]CHAR,
        MfgName: [256]CHAR,
        ProviderName: [256]CHAR,
        DriverDate: FILETIME,
        DriverVersion: u64,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        DriverType: u32 align(1),
        Reserved: usize align(1),
        Description: [256]CHAR align(1),
        MfgName: [256]CHAR align(1),
        ProviderName: [256]CHAR align(1),
        DriverDate: FILETIME align(1),
        DriverVersion: u64 align(1),
    },
};
pub const SP_DRVINFO_DATA_V2_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        DriverType: u32,
        Reserved: usize,
        Description: [256]u16,
        MfgName: [256]u16,
        ProviderName: [256]u16,
        DriverDate: FILETIME,
        DriverVersion: u64,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        DriverType: u32 align(1),
        Reserved: usize align(1),
        Description: [256]u16 align(1),
        MfgName: [256]u16 align(1),
        ProviderName: [256]u16 align(1),
        DriverDate: FILETIME align(1),
        DriverVersion: u64 align(1),
    },
};
pub const SP_DRVINFO_DATA_V1_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        DriverType: u32,
        Reserved: usize,
        Description: [256]CHAR,
        MfgName: [256]CHAR,
        ProviderName: [256]CHAR,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        DriverType: u32 align(1),
        Reserved: usize align(1),
        Description: [256]CHAR align(1),
        MfgName: [256]CHAR align(1),
        ProviderName: [256]CHAR align(1),
    },
};
pub const SP_DRVINFO_DATA_V1_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        DriverType: u32,
        Reserved: usize,
        Description: [256]u16,
        MfgName: [256]u16,
        ProviderName: [256]u16,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        DriverType: u32 align(1),
        Reserved: usize align(1),
        Description: [256]u16 align(1),
        MfgName: [256]u16 align(1),
        ProviderName: [256]u16 align(1),
    },
};
pub const SP_DRVINFO_DETAIL_DATA_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        InfDate: FILETIME,
        CompatIDsOffset: u32,
        CompatIDsLength: u32,
        Reserved: usize,
        SectionName: [256]CHAR,
        InfFileName: [260]CHAR,
        DrvDescription: [256]CHAR,
        HardwareID: [1]CHAR,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        InfDate: FILETIME align(1),
        CompatIDsOffset: u32 align(1),
        CompatIDsLength: u32 align(1),
        Reserved: usize align(1),
        SectionName: [256]CHAR align(1),
        InfFileName: [260]CHAR align(1),
        DrvDescription: [256]CHAR align(1),
        HardwareID: [1]CHAR align(1),
    },
};
pub const SP_DRVINFO_DETAIL_DATA_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        InfDate: FILETIME,
        CompatIDsOffset: u32,
        CompatIDsLength: u32,
        Reserved: usize,
        SectionName: [256]u16,
        InfFileName: [260]u16,
        DrvDescription: [256]u16,
        HardwareID: [1]u16,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        InfDate: FILETIME align(1),
        CompatIDsOffset: u32 align(1),
        CompatIDsLength: u32 align(1),
        Reserved: usize align(1),
        SectionName: [256]u16 align(1),
        InfFileName: [260]u16 align(1),
        DrvDescription: [256]u16 align(1),
        HardwareID: [1]u16 align(1),
    },
};
pub const SP_DRVINSTALL_PARAMS = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        Rank: u32,
        Flags: u32,
        PrivateData: usize,
        Reserved: u32,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        Rank: u32 align(1),
        Flags: u32 align(1),
        PrivateData: usize align(1),
        Reserved: u32 align(1),
    },
};
pub const COINSTALLER_CONTEXT_DATA = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        PostProcessing: BOOL,
        InstallResult: u32,
        PrivateData: ?*anyopaque,
    },
    .X86 => extern struct {
        PostProcessing: BOOL align(1),
        InstallResult: u32 align(1),
        PrivateData: ?*anyopaque align(1),
    },
};
pub const SP_CLASSIMAGELIST_DATA = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        ImageList: ?HIMAGELIST,
        Reserved: usize,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        ImageList: ?HIMAGELIST align(1),
        Reserved: usize align(1),
    },
};
pub const SP_PROPSHEETPAGE_REQUEST = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        PageRequested: u32,
        DeviceInfoSet: ?*anyopaque,
        DeviceInfoData: ?*SP_DEVINFO_DATA,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        PageRequested: u32 align(1),
        DeviceInfoSet: ?*anyopaque align(1),
        DeviceInfoData: ?*SP_DEVINFO_DATA align(1),
    },
};
pub const SP_BACKUP_QUEUE_PARAMS_V2_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        FullInfPath: [260]CHAR,
        FilenameOffset: i32,
        ReinstallInstance: [260]CHAR,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        FullInfPath: [260]CHAR align(1),
        FilenameOffset: i32 align(1),
        ReinstallInstance: [260]CHAR align(1),
    },
};
pub const SP_BACKUP_QUEUE_PARAMS_V2_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        FullInfPath: [260]u16,
        FilenameOffset: i32,
        ReinstallInstance: [260]u16,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        FullInfPath: [260]u16 align(1),
        FilenameOffset: i32 align(1),
        ReinstallInstance: [260]u16 align(1),
    },
};
pub const SP_BACKUP_QUEUE_PARAMS_V1_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        FullInfPath: [260]CHAR,
        FilenameOffset: i32,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        FullInfPath: [260]CHAR align(1),
        FilenameOffset: i32 align(1),
    },
};
pub const SP_BACKUP_QUEUE_PARAMS_V1_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        FullInfPath: [260]u16,
        FilenameOffset: i32,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        FullInfPath: [260]u16 align(1),
        FilenameOffset: i32 align(1),
    },
};
pub const SP_INF_SIGNER_INFO_V1_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        CatalogFile: [260]CHAR,
        DigitalSigner: [260]CHAR,
        DigitalSignerVersion: [260]CHAR,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        CatalogFile: [260]CHAR align(1),
        DigitalSigner: [260]CHAR align(1),
        DigitalSignerVersion: [260]CHAR align(1),
    },
};
pub const SP_INF_SIGNER_INFO_V1_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        CatalogFile: [260]u16,
        DigitalSigner: [260]u16,
        DigitalSignerVersion: [260]u16,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        CatalogFile: [260]u16 align(1),
        DigitalSigner: [260]u16 align(1),
        DigitalSignerVersion: [260]u16 align(1),
    },
};
pub const SP_INF_SIGNER_INFO_V2_A = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        CatalogFile: [260]CHAR,
        DigitalSigner: [260]CHAR,
        DigitalSignerVersion: [260]CHAR,
        SignerScore: u32,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        CatalogFile: [260]CHAR align(1),
        DigitalSigner: [260]CHAR align(1),
        DigitalSignerVersion: [260]CHAR align(1),
        SignerScore: u32 align(1),
    },
};
pub const SP_INF_SIGNER_INFO_V2_W = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cbSize: u32,
        CatalogFile: [260]u16,
        DigitalSigner: [260]u16,
        DigitalSignerVersion: [260]u16,
        SignerScore: u32,
    },
    .X86 => extern struct {
        cbSize: u32 align(1),
        CatalogFile: [260]u16 align(1),
        DigitalSigner: [260]u16 align(1),
        DigitalSignerVersion: [260]u16 align(1),
        SignerScore: u32 align(1),
    },
};

//--------------------------------------------------------------------------------
// Section: Functions (575)
//--------------------------------------------------------------------------------
// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetInfInformationA(
    InfSpec: ?*const anyopaque,
    SearchControl: u32,
    // TODO: what to do with BytesParamIndex 3?
    ReturnBuffer: ?*SP_INF_INFORMATION,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetInfInformationW(
    InfSpec: ?*const anyopaque,
    SearchControl: u32,
    // TODO: what to do with BytesParamIndex 3?
    ReturnBuffer: ?*SP_INF_INFORMATION,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueryInfFileInformationA(
    InfInformation: ?*SP_INF_INFORMATION,
    InfIndex: u32,
    ReturnBuffer: ?[*:0]u8,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueryInfFileInformationW(
    InfInformation: ?*SP_INF_INFORMATION,
    InfIndex: u32,
    ReturnBuffer: ?[*:0]u16,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueryInfOriginalFileInformationA(
    InfInformation: ?*SP_INF_INFORMATION,
    InfIndex: u32,
    AlternatePlatformInfo: ?*SP_ALTPLATFORM_INFO_V2,
    OriginalFileInfo: ?*SP_ORIGINAL_FILE_INFO_A,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueryInfOriginalFileInformationW(
    InfInformation: ?*SP_INF_INFORMATION,
    InfIndex: u32,
    AlternatePlatformInfo: ?*SP_ALTPLATFORM_INFO_V2,
    OriginalFileInfo: ?*SP_ORIGINAL_FILE_INFO_W,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueryInfVersionInformationA(
    InfInformation: ?*SP_INF_INFORMATION,
    InfIndex: u32,
    Key: ?[*:0]const u8,
    ReturnBuffer: ?[*:0]u8,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueryInfVersionInformationW(
    InfInformation: ?*SP_INF_INFORMATION,
    InfIndex: u32,
    Key: ?[*:0]const u16,
    ReturnBuffer: ?[*:0]u16,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupGetInfDriverStoreLocationA(
    FileName: ?[*:0]const u8,
    AlternatePlatformInfo: ?*SP_ALTPLATFORM_INFO_V2,
    LocaleName: ?[*:0]const u8,
    ReturnBuffer: [*:0]u8,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupGetInfDriverStoreLocationW(
    FileName: ?[*:0]const u16,
    AlternatePlatformInfo: ?*SP_ALTPLATFORM_INFO_V2,
    LocaleName: ?[*:0]const u16,
    ReturnBuffer: [*:0]u16,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupGetInfPublishedNameA(
    DriverStoreLocation: ?[*:0]const u8,
    ReturnBuffer: [*:0]u8,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupGetInfPublishedNameW(
    DriverStoreLocation: ?[*:0]const u16,
    ReturnBuffer: [*:0]u16,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetInfFileListA(
    DirectoryPath: ?[*:0]const u8,
    InfStyle: u32,
    ReturnBuffer: ?[*:0]u8,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetInfFileListW(
    DirectoryPath: ?[*:0]const u16,
    InfStyle: u32,
    ReturnBuffer: [*:0]u16,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupOpenInfFileW(
    FileName: ?[*:0]const u16,
    InfClass: ?[*:0]const u16,
    InfStyle: u32,
    ErrorLine: ?*u32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupOpenInfFileA(
    FileName: ?[*:0]const u8,
    InfClass: ?[*:0]const u8,
    InfStyle: u32,
    ErrorLine: ?*u32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupOpenMasterInf() callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupOpenAppendInfFileW(
    FileName: ?[*:0]const u16,
    InfHandle: ?*anyopaque,
    ErrorLine: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupOpenAppendInfFileA(
    FileName: ?[*:0]const u8,
    InfHandle: ?*anyopaque,
    ErrorLine: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupCloseInfFile(
    InfHandle: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupFindFirstLineA(
    InfHandle: ?*anyopaque,
    Section: ?[*:0]const u8,
    Key: ?[*:0]const u8,
    Context: ?*INFCONTEXT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupFindFirstLineW(
    InfHandle: ?*anyopaque,
    Section: ?[*:0]const u16,
    Key: ?[*:0]const u16,
    Context: ?*INFCONTEXT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupFindNextLine(
    ContextIn: ?*INFCONTEXT,
    ContextOut: ?*INFCONTEXT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupFindNextMatchLineA(
    ContextIn: ?*INFCONTEXT,
    Key: ?[*:0]const u8,
    ContextOut: ?*INFCONTEXT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupFindNextMatchLineW(
    ContextIn: ?*INFCONTEXT,
    Key: ?[*:0]const u16,
    ContextOut: ?*INFCONTEXT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetLineByIndexA(
    InfHandle: ?*anyopaque,
    Section: ?[*:0]const u8,
    Index: u32,
    Context: ?*INFCONTEXT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetLineByIndexW(
    InfHandle: ?*anyopaque,
    Section: ?[*:0]const u16,
    Index: u32,
    Context: ?*INFCONTEXT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetLineCountA(
    InfHandle: ?*anyopaque,
    Section: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetLineCountW(
    InfHandle: ?*anyopaque,
    Section: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetLineTextA(
    Context: ?*INFCONTEXT,
    InfHandle: ?*anyopaque,
    Section: ?[*:0]const u8,
    Key: ?[*:0]const u8,
    ReturnBuffer: ?[*:0]u8,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetLineTextW(
    Context: ?*INFCONTEXT,
    InfHandle: ?*anyopaque,
    Section: ?[*:0]const u16,
    Key: ?[*:0]const u16,
    ReturnBuffer: ?[*:0]u16,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetFieldCount(
    Context: ?*INFCONTEXT,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetStringFieldA(
    Context: ?*INFCONTEXT,
    FieldIndex: u32,
    ReturnBuffer: ?[*:0]u8,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetStringFieldW(
    Context: ?*INFCONTEXT,
    FieldIndex: u32,
    ReturnBuffer: ?[*:0]u16,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetIntField(
    Context: ?*INFCONTEXT,
    FieldIndex: u32,
    IntegerValue: ?*i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetMultiSzFieldA(
    Context: ?*INFCONTEXT,
    FieldIndex: u32,
    ReturnBuffer: ?[*:0]u8,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetMultiSzFieldW(
    Context: ?*INFCONTEXT,
    FieldIndex: u32,
    ReturnBuffer: ?[*:0]u16,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetBinaryField(
    Context: ?*INFCONTEXT,
    FieldIndex: u32,
    // TODO: what to do with BytesParamIndex 3?
    ReturnBuffer: ?*u8,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetFileCompressionInfoA(
    SourceFileName: ?[*:0]const u8,
    ActualSourceFileName: ?*?PSTR,
    SourceFileSize: ?*u32,
    TargetFileSize: ?*u32,
    CompressionType: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetFileCompressionInfoW(
    SourceFileName: ?[*:0]const u16,
    ActualSourceFileName: ?*?PWSTR,
    SourceFileSize: ?*u32,
    TargetFileSize: ?*u32,
    CompressionType: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetFileCompressionInfoExA(
    SourceFileName: ?[*:0]const u8,
    ActualSourceFileNameBuffer: ?[*:0]u8,
    ActualSourceFileNameBufferLen: u32,
    RequiredBufferLen: ?*u32,
    SourceFileSize: ?*u32,
    TargetFileSize: ?*u32,
    CompressionType: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetFileCompressionInfoExW(
    SourceFileName: ?[*:0]const u16,
    ActualSourceFileNameBuffer: ?[*:0]u16,
    ActualSourceFileNameBufferLen: u32,
    RequiredBufferLen: ?*u32,
    SourceFileSize: ?*u32,
    TargetFileSize: ?*u32,
    CompressionType: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDecompressOrCopyFileA(
    SourceFileName: ?[*:0]const u8,
    TargetFileName: ?[*:0]const u8,
    CompressionType: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDecompressOrCopyFileW(
    SourceFileName: ?[*:0]const u16,
    TargetFileName: ?[*:0]const u16,
    CompressionType: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetSourceFileLocationA(
    InfHandle: ?*anyopaque,
    InfContext: ?*INFCONTEXT,
    FileName: ?[*:0]const u8,
    SourceId: ?*u32,
    ReturnBuffer: ?[*:0]u8,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetSourceFileLocationW(
    InfHandle: ?*anyopaque,
    InfContext: ?*INFCONTEXT,
    FileName: ?[*:0]const u16,
    SourceId: ?*u32,
    ReturnBuffer: ?[*:0]u16,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetSourceFileSizeA(
    InfHandle: ?*anyopaque,
    InfContext: ?*INFCONTEXT,
    FileName: ?[*:0]const u8,
    Section: ?[*:0]const u8,
    FileSize: ?*u32,
    RoundingFactor: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetSourceFileSizeW(
    InfHandle: ?*anyopaque,
    InfContext: ?*INFCONTEXT,
    FileName: ?[*:0]const u16,
    Section: ?[*:0]const u16,
    FileSize: ?*u32,
    RoundingFactor: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetTargetPathA(
    InfHandle: ?*anyopaque,
    InfContext: ?*INFCONTEXT,
    Section: ?[*:0]const u8,
    ReturnBuffer: ?[*:0]u8,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetTargetPathW(
    InfHandle: ?*anyopaque,
    InfContext: ?*INFCONTEXT,
    Section: ?[*:0]const u16,
    ReturnBuffer: ?[*:0]u16,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupSetSourceListA(
    Flags: u32,
    SourceList: [*]?PSTR,
    SourceCount: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupSetSourceListW(
    Flags: u32,
    SourceList: [*]?PWSTR,
    SourceCount: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupCancelTemporarySourceList() callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupAddToSourceListA(
    Flags: u32,
    Source: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupAddToSourceListW(
    Flags: u32,
    Source: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupRemoveFromSourceListA(
    Flags: u32,
    Source: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupRemoveFromSourceListW(
    Flags: u32,
    Source: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQuerySourceListA(
    Flags: u32,
    List: ?*?*?PSTR,
    Count: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQuerySourceListW(
    Flags: u32,
    List: ?*?*?PWSTR,
    Count: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupFreeSourceListA(
    List: [*]?*?PSTR,
    Count: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupFreeSourceListW(
    List: [*]?*?PWSTR,
    Count: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupPromptForDiskA(
    hwndParent: ?HWND,
    DialogTitle: ?[*:0]const u8,
    DiskName: ?[*:0]const u8,
    PathToSource: ?[*:0]const u8,
    FileSought: ?[*:0]const u8,
    TagFile: ?[*:0]const u8,
    DiskPromptStyle: u32,
    PathBuffer: ?[*:0]u8,
    PathBufferSize: u32,
    PathRequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupPromptForDiskW(
    hwndParent: ?HWND,
    DialogTitle: ?[*:0]const u16,
    DiskName: ?[*:0]const u16,
    PathToSource: ?[*:0]const u16,
    FileSought: ?[*:0]const u16,
    TagFile: ?[*:0]const u16,
    DiskPromptStyle: u32,
    PathBuffer: ?[*:0]u16,
    PathBufferSize: u32,
    PathRequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupCopyErrorA(
    hwndParent: ?HWND,
    DialogTitle: ?[*:0]const u8,
    DiskName: ?[*:0]const u8,
    PathToSource: ?[*:0]const u8,
    SourceFile: ?[*:0]const u8,
    TargetPathFile: ?[*:0]const u8,
    Win32ErrorCode: u32,
    Style: u32,
    PathBuffer: ?[*:0]u8,
    PathBufferSize: u32,
    PathRequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupCopyErrorW(
    hwndParent: ?HWND,
    DialogTitle: ?[*:0]const u16,
    DiskName: ?[*:0]const u16,
    PathToSource: ?[*:0]const u16,
    SourceFile: ?[*:0]const u16,
    TargetPathFile: ?[*:0]const u16,
    Win32ErrorCode: u32,
    Style: u32,
    PathBuffer: ?[*:0]u16,
    PathBufferSize: u32,
    PathRequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupRenameErrorA(
    hwndParent: ?HWND,
    DialogTitle: ?[*:0]const u8,
    SourceFile: ?[*:0]const u8,
    TargetFile: ?[*:0]const u8,
    Win32ErrorCode: u32,
    Style: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupRenameErrorW(
    hwndParent: ?HWND,
    DialogTitle: ?[*:0]const u16,
    SourceFile: ?[*:0]const u16,
    TargetFile: ?[*:0]const u16,
    Win32ErrorCode: u32,
    Style: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDeleteErrorA(
    hwndParent: ?HWND,
    DialogTitle: ?[*:0]const u8,
    File: ?[*:0]const u8,
    Win32ErrorCode: u32,
    Style: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDeleteErrorW(
    hwndParent: ?HWND,
    DialogTitle: ?[*:0]const u16,
    File: ?[*:0]const u16,
    Win32ErrorCode: u32,
    Style: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupBackupErrorA(
    hwndParent: ?HWND,
    DialogTitle: ?[*:0]const u8,
    SourceFile: ?[*:0]const u8,
    TargetFile: ?[*:0]const u8,
    Win32ErrorCode: u32,
    Style: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupBackupErrorW(
    hwndParent: ?HWND,
    DialogTitle: ?[*:0]const u16,
    SourceFile: ?[*:0]const u16,
    TargetFile: ?[*:0]const u16,
    Win32ErrorCode: u32,
    Style: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupSetDirectoryIdA(
    InfHandle: ?*anyopaque,
    Id: u32,
    Directory: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupSetDirectoryIdW(
    InfHandle: ?*anyopaque,
    Id: u32,
    Directory: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupSetDirectoryIdExA(
    InfHandle: ?*anyopaque,
    Id: u32,
    Directory: ?[*:0]const u8,
    Flags: u32,
    Reserved1: u32,
    Reserved2: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupSetDirectoryIdExW(
    InfHandle: ?*anyopaque,
    Id: u32,
    Directory: ?[*:0]const u16,
    Flags: u32,
    Reserved1: u32,
    Reserved2: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetSourceInfoA(
    InfHandle: ?*anyopaque,
    SourceId: u32,
    InfoDesired: u32,
    ReturnBuffer: ?[*:0]u8,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetSourceInfoW(
    InfHandle: ?*anyopaque,
    SourceId: u32,
    InfoDesired: u32,
    ReturnBuffer: ?[*:0]u16,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInstallFileA(
    InfHandle: ?*anyopaque,
    InfContext: ?*INFCONTEXT,
    SourceFile: ?[*:0]const u8,
    SourcePathRoot: ?[*:0]const u8,
    DestinationName: ?[*:0]const u8,
    CopyStyle: SP_COPY_STYLE,
    CopyMsgHandler: ?PSP_FILE_CALLBACK_A,
    Context: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInstallFileW(
    InfHandle: ?*anyopaque,
    InfContext: ?*INFCONTEXT,
    SourceFile: ?[*:0]const u16,
    SourcePathRoot: ?[*:0]const u16,
    DestinationName: ?[*:0]const u16,
    CopyStyle: SP_COPY_STYLE,
    CopyMsgHandler: ?PSP_FILE_CALLBACK_W,
    Context: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInstallFileExA(
    InfHandle: ?*anyopaque,
    InfContext: ?*INFCONTEXT,
    SourceFile: ?[*:0]const u8,
    SourcePathRoot: ?[*:0]const u8,
    DestinationName: ?[*:0]const u8,
    CopyStyle: SP_COPY_STYLE,
    CopyMsgHandler: ?PSP_FILE_CALLBACK_A,
    Context: ?*anyopaque,
    FileWasInUse: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInstallFileExW(
    InfHandle: ?*anyopaque,
    InfContext: ?*INFCONTEXT,
    SourceFile: ?[*:0]const u16,
    SourcePathRoot: ?[*:0]const u16,
    DestinationName: ?[*:0]const u16,
    CopyStyle: SP_COPY_STYLE,
    CopyMsgHandler: ?PSP_FILE_CALLBACK_W,
    Context: ?*anyopaque,
    FileWasInUse: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupOpenFileQueue() callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupCloseFileQueue(
    QueueHandle: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupSetFileQueueAlternatePlatformA(
    QueueHandle: ?*anyopaque,
    AlternatePlatformInfo: ?*SP_ALTPLATFORM_INFO_V2,
    AlternateDefaultCatalogFile: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupSetFileQueueAlternatePlatformW(
    QueueHandle: ?*anyopaque,
    AlternatePlatformInfo: ?*SP_ALTPLATFORM_INFO_V2,
    AlternateDefaultCatalogFile: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupSetPlatformPathOverrideA(
    Override: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupSetPlatformPathOverrideW(
    Override: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueCopyA(
    QueueHandle: ?*anyopaque,
    SourceRootPath: ?[*:0]const u8,
    SourcePath: ?[*:0]const u8,
    SourceFilename: ?[*:0]const u8,
    SourceDescription: ?[*:0]const u8,
    SourceTagfile: ?[*:0]const u8,
    TargetDirectory: ?[*:0]const u8,
    TargetFilename: ?[*:0]const u8,
    CopyStyle: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueCopyW(
    QueueHandle: ?*anyopaque,
    SourceRootPath: ?[*:0]const u16,
    SourcePath: ?[*:0]const u16,
    SourceFilename: ?[*:0]const u16,
    SourceDescription: ?[*:0]const u16,
    SourceTagfile: ?[*:0]const u16,
    TargetDirectory: ?[*:0]const u16,
    TargetFilename: ?[*:0]const u16,
    CopyStyle: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueCopyIndirectA(
    CopyParams: ?*SP_FILE_COPY_PARAMS_A,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueCopyIndirectW(
    CopyParams: ?*SP_FILE_COPY_PARAMS_W,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueDefaultCopyA(
    QueueHandle: ?*anyopaque,
    InfHandle: ?*anyopaque,
    SourceRootPath: ?[*:0]const u8,
    SourceFilename: ?[*:0]const u8,
    TargetFilename: ?[*:0]const u8,
    CopyStyle: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueDefaultCopyW(
    QueueHandle: ?*anyopaque,
    InfHandle: ?*anyopaque,
    SourceRootPath: ?[*:0]const u16,
    SourceFilename: ?[*:0]const u16,
    TargetFilename: ?[*:0]const u16,
    CopyStyle: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueCopySectionA(
    QueueHandle: ?*anyopaque,
    SourceRootPath: ?[*:0]const u8,
    InfHandle: ?*anyopaque,
    ListInfHandle: ?*anyopaque,
    Section: ?[*:0]const u8,
    CopyStyle: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueCopySectionW(
    QueueHandle: ?*anyopaque,
    SourceRootPath: ?[*:0]const u16,
    InfHandle: ?*anyopaque,
    ListInfHandle: ?*anyopaque,
    Section: ?[*:0]const u16,
    CopyStyle: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueDeleteA(
    QueueHandle: ?*anyopaque,
    PathPart1: ?[*:0]const u8,
    PathPart2: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueDeleteW(
    QueueHandle: ?*anyopaque,
    PathPart1: ?[*:0]const u16,
    PathPart2: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueDeleteSectionA(
    QueueHandle: ?*anyopaque,
    InfHandle: ?*anyopaque,
    ListInfHandle: ?*anyopaque,
    Section: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueDeleteSectionW(
    QueueHandle: ?*anyopaque,
    InfHandle: ?*anyopaque,
    ListInfHandle: ?*anyopaque,
    Section: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueRenameA(
    QueueHandle: ?*anyopaque,
    SourcePath: ?[*:0]const u8,
    SourceFilename: ?[*:0]const u8,
    TargetPath: ?[*:0]const u8,
    TargetFilename: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueRenameW(
    QueueHandle: ?*anyopaque,
    SourcePath: ?[*:0]const u16,
    SourceFilename: ?[*:0]const u16,
    TargetPath: ?[*:0]const u16,
    TargetFilename: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueRenameSectionA(
    QueueHandle: ?*anyopaque,
    InfHandle: ?*anyopaque,
    ListInfHandle: ?*anyopaque,
    Section: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueueRenameSectionW(
    QueueHandle: ?*anyopaque,
    InfHandle: ?*anyopaque,
    ListInfHandle: ?*anyopaque,
    Section: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupCommitFileQueueA(
    Owner: ?HWND,
    QueueHandle: ?*anyopaque,
    MsgHandler: ?PSP_FILE_CALLBACK_A,
    Context: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupCommitFileQueueW(
    Owner: ?HWND,
    QueueHandle: ?*anyopaque,
    MsgHandler: ?PSP_FILE_CALLBACK_W,
    Context: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupScanFileQueueA(
    FileQueue: ?*anyopaque,
    Flags: u32,
    Window: ?HWND,
    CallbackRoutine: ?PSP_FILE_CALLBACK_A,
    CallbackContext: ?*anyopaque,
    Result: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupScanFileQueueW(
    FileQueue: ?*anyopaque,
    Flags: u32,
    Window: ?HWND,
    CallbackRoutine: ?PSP_FILE_CALLBACK_W,
    CallbackContext: ?*anyopaque,
    Result: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetFileQueueCount(
    FileQueue: ?*anyopaque,
    SubQueueFileOp: u32,
    NumOperations: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetFileQueueFlags(
    FileQueue: ?*anyopaque,
    Flags: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupSetFileQueueFlags(
    FileQueue: ?*anyopaque,
    FlagMask: u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupCopyOEMInfA(
    SourceInfFileName: ?[*:0]const u8,
    OEMSourceMediaLocation: ?[*:0]const u8,
    OEMSourceMediaType: OEM_SOURCE_MEDIA_TYPE,
    CopyStyle: u32,
    DestinationInfFileName: ?[*:0]u8,
    DestinationInfFileNameSize: u32,
    RequiredSize: ?*u32,
    DestinationInfFileNameComponent: ?*?PSTR,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupCopyOEMInfW(
    SourceInfFileName: ?[*:0]const u16,
    OEMSourceMediaLocation: ?[*:0]const u16,
    OEMSourceMediaType: OEM_SOURCE_MEDIA_TYPE,
    CopyStyle: u32,
    DestinationInfFileName: ?[*:0]u16,
    DestinationInfFileNameSize: u32,
    RequiredSize: ?*u32,
    DestinationInfFileNameComponent: ?*?PWSTR,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupUninstallOEMInfA(
    InfFileName: ?[*:0]const u8,
    Flags: u32,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupUninstallOEMInfW(
    InfFileName: ?[*:0]const u16,
    Flags: u32,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupUninstallNewlyCopiedInfs(
    FileQueue: ?*anyopaque,
    Flags: u32,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupCreateDiskSpaceListA(
    Reserved1: ?*anyopaque,
    Reserved2: u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupCreateDiskSpaceListW(
    Reserved1: ?*anyopaque,
    Reserved2: u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDuplicateDiskSpaceListA(
    DiskSpace: ?*anyopaque,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDuplicateDiskSpaceListW(
    DiskSpace: ?*anyopaque,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDestroyDiskSpaceList(
    DiskSpace: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueryDrivesInDiskSpaceListA(
    DiskSpace: ?*anyopaque,
    ReturnBuffer: ?[*:0]u8,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueryDrivesInDiskSpaceListW(
    DiskSpace: ?*anyopaque,
    ReturnBuffer: ?[*:0]u16,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQuerySpaceRequiredOnDriveA(
    DiskSpace: ?*anyopaque,
    DriveSpec: ?[*:0]const u8,
    SpaceRequired: ?*i64,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQuerySpaceRequiredOnDriveW(
    DiskSpace: ?*anyopaque,
    DriveSpec: ?[*:0]const u16,
    SpaceRequired: ?*i64,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupAdjustDiskSpaceListA(
    DiskSpace: ?*anyopaque,
    DriveRoot: ?[*:0]const u8,
    Amount: i64,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupAdjustDiskSpaceListW(
    DiskSpace: ?*anyopaque,
    DriveRoot: ?[*:0]const u16,
    Amount: i64,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupAddToDiskSpaceListA(
    DiskSpace: ?*anyopaque,
    TargetFilespec: ?[*:0]const u8,
    FileSize: i64,
    Operation: SETUP_FILE_OPERATION,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupAddToDiskSpaceListW(
    DiskSpace: ?*anyopaque,
    TargetFilespec: ?[*:0]const u16,
    FileSize: i64,
    Operation: SETUP_FILE_OPERATION,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupAddSectionToDiskSpaceListA(
    DiskSpace: ?*anyopaque,
    InfHandle: ?*anyopaque,
    ListInfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u8,
    Operation: SETUP_FILE_OPERATION,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupAddSectionToDiskSpaceListW(
    DiskSpace: ?*anyopaque,
    InfHandle: ?*anyopaque,
    ListInfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u16,
    Operation: SETUP_FILE_OPERATION,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupAddInstallSectionToDiskSpaceListA(
    DiskSpace: ?*anyopaque,
    InfHandle: ?*anyopaque,
    LayoutInfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u8,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupAddInstallSectionToDiskSpaceListW(
    DiskSpace: ?*anyopaque,
    InfHandle: ?*anyopaque,
    LayoutInfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u16,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupRemoveFromDiskSpaceListA(
    DiskSpace: ?*anyopaque,
    TargetFilespec: ?[*:0]const u8,
    Operation: SETUP_FILE_OPERATION,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupRemoveFromDiskSpaceListW(
    DiskSpace: ?*anyopaque,
    TargetFilespec: ?[*:0]const u16,
    Operation: SETUP_FILE_OPERATION,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupRemoveSectionFromDiskSpaceListA(
    DiskSpace: ?*anyopaque,
    InfHandle: ?*anyopaque,
    ListInfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u8,
    Operation: SETUP_FILE_OPERATION,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupRemoveSectionFromDiskSpaceListW(
    DiskSpace: ?*anyopaque,
    InfHandle: ?*anyopaque,
    ListInfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u16,
    Operation: SETUP_FILE_OPERATION,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupRemoveInstallSectionFromDiskSpaceListA(
    DiskSpace: ?*anyopaque,
    InfHandle: ?*anyopaque,
    LayoutInfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u8,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupRemoveInstallSectionFromDiskSpaceListW(
    DiskSpace: ?*anyopaque,
    InfHandle: ?*anyopaque,
    LayoutInfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u16,
    Reserved1: ?*anyopaque,
    Reserved2: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupIterateCabinetA(
    CabinetFile: ?[*:0]const u8,
    Reserved: u32,
    MsgHandler: ?PSP_FILE_CALLBACK_A,
    Context: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupIterateCabinetW(
    CabinetFile: ?[*:0]const u16,
    Reserved: u32,
    MsgHandler: ?PSP_FILE_CALLBACK_W,
    Context: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupPromptReboot(
    FileQueue: ?*anyopaque,
    Owner: ?HWND,
    ScanOnly: BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInitDefaultQueueCallback(
    OwnerWindow: ?HWND,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInitDefaultQueueCallbackEx(
    OwnerWindow: ?HWND,
    AlternateProgressWindow: ?HWND,
    ProgressMessage: u32,
    Reserved1: u32,
    Reserved2: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupTermDefaultQueueCallback(
    Context: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDefaultQueueCallbackA(
    Context: ?*anyopaque,
    Notification: u32,
    Param1: usize,
    Param2: usize,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDefaultQueueCallbackW(
    Context: ?*anyopaque,
    Notification: u32,
    Param1: usize,
    Param2: usize,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInstallFromInfSectionA(
    Owner: ?HWND,
    InfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u8,
    Flags: u32,
    RelativeKeyRoot: ?HKEY,
    SourceRootPath: ?[*:0]const u8,
    CopyFlags: u32,
    MsgHandler: ?PSP_FILE_CALLBACK_A,
    Context: ?*anyopaque,
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInstallFromInfSectionW(
    Owner: ?HWND,
    InfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u16,
    Flags: u32,
    RelativeKeyRoot: ?HKEY,
    SourceRootPath: ?[*:0]const u16,
    CopyFlags: u32,
    MsgHandler: ?PSP_FILE_CALLBACK_W,
    Context: ?*anyopaque,
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInstallFilesFromInfSectionA(
    InfHandle: ?*anyopaque,
    LayoutInfHandle: ?*anyopaque,
    FileQueue: ?*anyopaque,
    SectionName: ?[*:0]const u8,
    SourceRootPath: ?[*:0]const u8,
    CopyFlags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInstallFilesFromInfSectionW(
    InfHandle: ?*anyopaque,
    LayoutInfHandle: ?*anyopaque,
    FileQueue: ?*anyopaque,
    SectionName: ?[*:0]const u16,
    SourceRootPath: ?[*:0]const u16,
    CopyFlags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInstallServicesFromInfSectionA(
    InfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u8,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInstallServicesFromInfSectionW(
    InfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u16,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInstallServicesFromInfSectionExA(
    InfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u8,
    Flags: u32,
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    Reserved1: ?*anyopaque,
    Reserved2: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInstallServicesFromInfSectionExW(
    InfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u16,
    Flags: u32,
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    Reserved1: ?*anyopaque,
    Reserved2: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn InstallHinfSectionA(
    Window: ?HWND,
    ModuleHandle: ?HINSTANCE,
    CommandLine: ?[*:0]const u8,
    ShowCommand: i32,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn InstallHinfSectionW(
    Window: ?HWND,
    ModuleHandle: ?HINSTANCE,
    CommandLine: ?[*:0]const u16,
    ShowCommand: i32,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInitializeFileLogA(
    LogFileName: ?[*:0]const u8,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupInitializeFileLogW(
    LogFileName: ?[*:0]const u16,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupTerminateFileLog(
    FileLogHandle: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupLogFileA(
    FileLogHandle: ?*anyopaque,
    LogSectionName: ?[*:0]const u8,
    SourceFilename: ?[*:0]const u8,
    TargetFilename: ?[*:0]const u8,
    Checksum: u32,
    DiskTagfile: ?[*:0]const u8,
    DiskDescription: ?[*:0]const u8,
    OtherInfo: ?[*:0]const u8,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupLogFileW(
    FileLogHandle: ?*anyopaque,
    LogSectionName: ?[*:0]const u16,
    SourceFilename: ?[*:0]const u16,
    TargetFilename: ?[*:0]const u16,
    Checksum: u32,
    DiskTagfile: ?[*:0]const u16,
    DiskDescription: ?[*:0]const u16,
    OtherInfo: ?[*:0]const u16,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupRemoveFileLogEntryA(
    FileLogHandle: ?*anyopaque,
    LogSectionName: ?[*:0]const u8,
    TargetFilename: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupRemoveFileLogEntryW(
    FileLogHandle: ?*anyopaque,
    LogSectionName: ?[*:0]const u16,
    TargetFilename: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueryFileLogA(
    FileLogHandle: ?*anyopaque,
    LogSectionName: ?[*:0]const u8,
    TargetFilename: ?[*:0]const u8,
    DesiredInfo: SetupFileLogInfo,
    DataOut: ?[*:0]u8,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupQueryFileLogW(
    FileLogHandle: ?*anyopaque,
    LogSectionName: ?[*:0]const u16,
    TargetFilename: ?[*:0]const u16,
    DesiredInfo: SetupFileLogInfo,
    DataOut: ?[*:0]u16,
    ReturnBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupOpenLog(
    Erase: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupLogErrorA(
    MessageString: ?[*:0]const u8,
    Severity: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupLogErrorW(
    MessageString: ?[*:0]const u16,
    Severity: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupCloseLog() callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupGetThreadLogToken() callconv(@import("std").os.windows.WINAPI) u64;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupSetThreadLogToken(
    LogToken: u64,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupWriteTextLog(
    LogToken: u64,
    Category: u32,
    Flags: u32,
    MessageStr: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupWriteTextLogError(
    LogToken: u64,
    Category: u32,
    LogFlags: u32,
    Error: u32,
    MessageStr: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupWriteTextLogInfLine(
    LogToken: u64,
    Flags: u32,
    InfHandle: ?*anyopaque,
    Context: ?*INFCONTEXT,
) callconv(@import("std").os.windows.WINAPI) void;

pub extern "setupapi" fn SetupGetBackupInformationA(
    QueueHandle: ?*anyopaque,
    BackupParams: ?*SP_BACKUP_QUEUE_PARAMS_V2_A,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "setupapi" fn SetupGetBackupInformationW(
    QueueHandle: ?*anyopaque,
    BackupParams: ?*SP_BACKUP_QUEUE_PARAMS_V2_W,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "setupapi" fn SetupPrepareQueueForRestoreA(
    QueueHandle: ?*anyopaque,
    BackupPath: ?[*:0]const u8,
    RestoreFlags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "setupapi" fn SetupPrepareQueueForRestoreW(
    QueueHandle: ?*anyopaque,
    BackupPath: ?[*:0]const u16,
    RestoreFlags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupSetNonInteractiveMode(
    NonInteractiveFlag: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupGetNonInteractiveMode() callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiCreateDeviceInfoList(
    ClassGuid: ?*const Guid,
    hwndParent: ?HWND,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiCreateDeviceInfoListExA(
    ClassGuid: ?*const Guid,
    hwndParent: ?HWND,
    MachineName: ?[*:0]const u8,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiCreateDeviceInfoListExW(
    ClassGuid: ?*const Guid,
    hwndParent: ?HWND,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDeviceInfoListClass(
    DeviceInfoSet: ?*anyopaque,
    ClassGuid: ?*Guid,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDeviceInfoListDetailA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoSetDetailData: ?*SP_DEVINFO_LIST_DETAIL_DATA_A,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDeviceInfoListDetailW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoSetDetailData: ?*SP_DEVINFO_LIST_DETAIL_DATA_W,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiCreateDeviceInfoA(
    DeviceInfoSet: ?*anyopaque,
    DeviceName: ?[*:0]const u8,
    ClassGuid: ?*const Guid,
    DeviceDescription: ?[*:0]const u8,
    hwndParent: ?HWND,
    CreationFlags: u32,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiCreateDeviceInfoW(
    DeviceInfoSet: ?*anyopaque,
    DeviceName: ?[*:0]const u16,
    ClassGuid: ?*const Guid,
    DeviceDescription: ?[*:0]const u16,
    hwndParent: ?HWND,
    CreationFlags: u32,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiOpenDeviceInfoA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInstanceId: ?[*:0]const u8,
    hwndParent: ?HWND,
    OpenFlags: u32,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiOpenDeviceInfoW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInstanceId: ?[*:0]const u16,
    hwndParent: ?HWND,
    OpenFlags: u32,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDeviceInstanceIdA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DeviceInstanceId: ?[*:0]u8,
    DeviceInstanceIdSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDeviceInstanceIdW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DeviceInstanceId: ?[*:0]u16,
    DeviceInstanceIdSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiDeleteDeviceInfo(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiEnumDeviceInfo(
    DeviceInfoSet: ?*anyopaque,
    MemberIndex: u32,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiDestroyDeviceInfoList(
    DeviceInfoSet: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiEnumDeviceInterfaces(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    InterfaceClassGuid: ?*const Guid,
    MemberIndex: u32,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiCreateDeviceInterfaceA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    InterfaceClassGuid: ?*const Guid,
    ReferenceString: ?[*:0]const u8,
    CreationFlags: u32,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiCreateDeviceInterfaceW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    InterfaceClassGuid: ?*const Guid,
    ReferenceString: ?[*:0]const u16,
    CreationFlags: u32,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiOpenDeviceInterfaceA(
    DeviceInfoSet: ?*anyopaque,
    DevicePath: ?[*:0]const u8,
    OpenFlags: u32,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiOpenDeviceInterfaceW(
    DeviceInfoSet: ?*anyopaque,
    DevicePath: ?[*:0]const u16,
    OpenFlags: u32,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDeviceInterfaceAlias(
    DeviceInfoSet: ?*anyopaque,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
    AliasInterfaceClassGuid: ?*const Guid,
    AliasDeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiDeleteDeviceInterfaceData(
    DeviceInfoSet: ?*anyopaque,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiRemoveDeviceInterface(
    DeviceInfoSet: ?*anyopaque,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDeviceInterfaceDetailA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
    // TODO: what to do with BytesParamIndex 3?
    DeviceInterfaceDetailData: ?*SP_DEVICE_INTERFACE_DETAIL_DATA_A,
    DeviceInterfaceDetailDataSize: u32,
    RequiredSize: ?*u32,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDeviceInterfaceDetailW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
    // TODO: what to do with BytesParamIndex 3?
    DeviceInterfaceDetailData: ?*SP_DEVICE_INTERFACE_DETAIL_DATA_W,
    DeviceInterfaceDetailDataSize: u32,
    RequiredSize: ?*u32,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiInstallDeviceInterfaces(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDiSetDeviceInterfaceDefault(
    DeviceInfoSet: ?*anyopaque,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
    Flags: u32,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiRegisterDeviceInfo(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    Flags: u32,
    CompareProc: ?PSP_DETSIG_CMPPROC,
    CompareContext: ?*anyopaque,
    DupDeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiBuildDriverInfoList(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverType: SETUP_DI_BUILD_DRIVER_DRIVER_TYPE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiCancelDriverInfoSearch(
    DeviceInfoSet: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiEnumDriverInfoA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverType: u32,
    MemberIndex: u32,
    DriverInfoData: ?*SP_DRVINFO_DATA_V2_A,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiEnumDriverInfoW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverType: u32,
    MemberIndex: u32,
    DriverInfoData: ?*SP_DRVINFO_DATA_V2_W,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetSelectedDriverA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverInfoData: ?*SP_DRVINFO_DATA_V2_A,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetSelectedDriverW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverInfoData: ?*SP_DRVINFO_DATA_V2_W,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiSetSelectedDriverA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverInfoData: ?*SP_DRVINFO_DATA_V2_A,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiSetSelectedDriverW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverInfoData: ?*SP_DRVINFO_DATA_V2_W,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDriverInfoDetailA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverInfoData: ?*SP_DRVINFO_DATA_V2_A,
    // TODO: what to do with BytesParamIndex 4?
    DriverInfoDetailData: ?*SP_DRVINFO_DETAIL_DATA_A,
    DriverInfoDetailDataSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDriverInfoDetailW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverInfoData: ?*SP_DRVINFO_DATA_V2_W,
    // TODO: what to do with BytesParamIndex 4?
    DriverInfoDetailData: ?*SP_DRVINFO_DETAIL_DATA_W,
    DriverInfoDetailDataSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiDestroyDriverInfoList(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverType: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassDevsA(
    ClassGuid: ?*const Guid,
    Enumerator: ?[*:0]const u8,
    hwndParent: ?HWND,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassDevsW(
    ClassGuid: ?*const Guid,
    Enumerator: ?[*:0]const u16,
    hwndParent: ?HWND,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassDevsExA(
    ClassGuid: ?*const Guid,
    Enumerator: ?[*:0]const u8,
    hwndParent: ?HWND,
    Flags: u32,
    DeviceInfoSet: ?*anyopaque,
    MachineName: ?[*:0]const u8,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassDevsExW(
    ClassGuid: ?*const Guid,
    Enumerator: ?[*:0]const u16,
    hwndParent: ?HWND,
    Flags: u32,
    DeviceInfoSet: ?*anyopaque,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetINFClassA(
    InfName: ?[*:0]const u8,
    ClassGuid: ?*Guid,
    ClassName: [*:0]u8,
    ClassNameSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetINFClassW(
    InfName: ?[*:0]const u16,
    ClassGuid: ?*Guid,
    ClassName: [*:0]u16,
    ClassNameSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiBuildClassInfoList(
    Flags: u32,
    ClassGuidList: ?[*]Guid,
    ClassGuidListSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiBuildClassInfoListExA(
    Flags: u32,
    ClassGuidList: ?[*]Guid,
    ClassGuidListSize: u32,
    RequiredSize: ?*u32,
    MachineName: ?[*:0]const u8,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiBuildClassInfoListExW(
    Flags: u32,
    ClassGuidList: ?[*]Guid,
    ClassGuidListSize: u32,
    RequiredSize: ?*u32,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassDescriptionA(
    ClassGuid: ?*const Guid,
    ClassDescription: [*:0]u8,
    ClassDescriptionSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassDescriptionW(
    ClassGuid: ?*const Guid,
    ClassDescription: [*:0]u16,
    ClassDescriptionSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassDescriptionExA(
    ClassGuid: ?*const Guid,
    ClassDescription: [*:0]u8,
    ClassDescriptionSize: u32,
    RequiredSize: ?*u32,
    MachineName: ?[*:0]const u8,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassDescriptionExW(
    ClassGuid: ?*const Guid,
    ClassDescription: [*:0]u16,
    ClassDescriptionSize: u32,
    RequiredSize: ?*u32,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiCallClassInstaller(
    InstallFunction: u32,
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiSelectDevice(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiSelectBestCompatDrv(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiInstallDevice(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiInstallDriverFiles(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiRegisterCoDeviceInstallers(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiRemoveDevice(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiUnremoveDevice(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "setupapi" fn SetupDiRestartDevices(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiChangeState(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiInstallClassA(
    hwndParent: ?HWND,
    InfFileName: ?[*:0]const u8,
    Flags: u32,
    FileQueue: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiInstallClassW(
    hwndParent: ?HWND,
    InfFileName: ?[*:0]const u16,
    Flags: u32,
    FileQueue: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiInstallClassExA(
    hwndParent: ?HWND,
    InfFileName: ?[*:0]const u8,
    Flags: u32,
    FileQueue: ?*anyopaque,
    InterfaceClassGuid: ?*const Guid,
    Reserved1: ?*anyopaque,
    Reserved2: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiInstallClassExW(
    hwndParent: ?HWND,
    InfFileName: ?[*:0]const u16,
    Flags: u32,
    FileQueue: ?*anyopaque,
    InterfaceClassGuid: ?*const Guid,
    Reserved1: ?*anyopaque,
    Reserved2: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiOpenClassRegKey(
    ClassGuid: ?*const Guid,
    samDesired: u32,
) callconv(@import("std").os.windows.WINAPI) ?HKEY;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiOpenClassRegKeyExA(
    ClassGuid: ?*const Guid,
    samDesired: u32,
    Flags: u32,
    MachineName: ?[*:0]const u8,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) ?HKEY;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiOpenClassRegKeyExW(
    ClassGuid: ?*const Guid,
    samDesired: u32,
    Flags: u32,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) ?HKEY;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiCreateDeviceInterfaceRegKeyA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
    Reserved: u32,
    samDesired: u32,
    InfHandle: ?*anyopaque,
    InfSectionName: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) ?HKEY;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiCreateDeviceInterfaceRegKeyW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
    Reserved: u32,
    samDesired: u32,
    InfHandle: ?*anyopaque,
    InfSectionName: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) ?HKEY;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiOpenDeviceInterfaceRegKey(
    DeviceInfoSet: ?*anyopaque,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
    Reserved: u32,
    samDesired: u32,
) callconv(@import("std").os.windows.WINAPI) ?HKEY;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiDeleteDeviceInterfaceRegKey(
    DeviceInfoSet: ?*anyopaque,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
    Reserved: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiCreateDevRegKeyA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    Scope: u32,
    HwProfile: u32,
    KeyType: u32,
    InfHandle: ?*anyopaque,
    InfSectionName: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) ?HKEY;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiCreateDevRegKeyW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    Scope: u32,
    HwProfile: u32,
    KeyType: u32,
    InfHandle: ?*anyopaque,
    InfSectionName: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) ?HKEY;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiOpenDevRegKey(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    Scope: u32,
    HwProfile: u32,
    KeyType: u32,
    samDesired: u32,
) callconv(@import("std").os.windows.WINAPI) ?HKEY;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiDeleteDevRegKey(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    Scope: u32,
    HwProfile: u32,
    KeyType: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetHwProfileList(
    HwProfileList: [*]u32,
    HwProfileListSize: u32,
    RequiredSize: ?*u32,
    CurrentlyActiveIndex: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetHwProfileListExA(
    HwProfileList: [*]u32,
    HwProfileListSize: u32,
    RequiredSize: ?*u32,
    CurrentlyActiveIndex: ?*u32,
    MachineName: ?[*:0]const u8,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetHwProfileListExW(
    HwProfileList: [*]u32,
    HwProfileListSize: u32,
    RequiredSize: ?*u32,
    CurrentlyActiveIndex: ?*u32,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupDiGetDevicePropertyKeys(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    PropertyKeyArray: ?[*]DEVPROPKEY,
    PropertyKeyCount: u32,
    RequiredPropertyKeyCount: ?*u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupDiGetDevicePropertyW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: ?*u32,
    // TODO: what to do with BytesParamIndex 5?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: u32,
    RequiredSize: ?*u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupDiSetDevicePropertyW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: u32,
    // TODO: what to do with BytesParamIndex 5?
    PropertyBuffer: ?*const u8,
    PropertyBufferSize: u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupDiGetDeviceInterfacePropertyKeys(
    DeviceInfoSet: ?*anyopaque,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
    PropertyKeyArray: ?[*]DEVPROPKEY,
    PropertyKeyCount: u32,
    RequiredPropertyKeyCount: ?*u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupDiGetDeviceInterfacePropertyW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: ?*u32,
    // TODO: what to do with BytesParamIndex 5?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: u32,
    RequiredSize: ?*u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupDiSetDeviceInterfacePropertyW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInterfaceData: ?*SP_DEVICE_INTERFACE_DATA,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: u32,
    // TODO: what to do with BytesParamIndex 5?
    PropertyBuffer: ?*const u8,
    PropertyBufferSize: u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupDiGetClassPropertyKeys(
    ClassGuid: ?*const Guid,
    PropertyKeyArray: ?[*]DEVPROPKEY,
    PropertyKeyCount: u32,
    RequiredPropertyKeyCount: ?*u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupDiGetClassPropertyKeysExW(
    ClassGuid: ?*const Guid,
    PropertyKeyArray: ?[*]DEVPROPKEY,
    PropertyKeyCount: u32,
    RequiredPropertyKeyCount: ?*u32,
    Flags: u32,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupDiGetClassPropertyW(
    ClassGuid: ?*const Guid,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: u32,
    RequiredSize: ?*u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupDiGetClassPropertyExW(
    ClassGuid: ?*const Guid,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: u32,
    RequiredSize: ?*u32,
    Flags: u32,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupDiSetClassPropertyW(
    ClassGuid: ?*const Guid,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*const u8,
    PropertyBufferSize: u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupDiSetClassPropertyExW(
    ClassGuid: ?*const Guid,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*const u8,
    PropertyBufferSize: u32,
    Flags: u32,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDeviceRegistryPropertyA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    Property: u32,
    PropertyRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 5?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDeviceRegistryPropertyW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    Property: u32,
    PropertyRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 5?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDiGetClassRegistryPropertyA(
    ClassGuid: ?*const Guid,
    Property: u32,
    PropertyRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: u32,
    RequiredSize: ?*u32,
    MachineName: ?[*:0]const u8,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDiGetClassRegistryPropertyW(
    ClassGuid: ?*const Guid,
    Property: u32,
    PropertyRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: u32,
    RequiredSize: ?*u32,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiSetDeviceRegistryPropertyA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    Property: u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*const u8,
    PropertyBufferSize: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiSetDeviceRegistryPropertyW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    Property: u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*const u8,
    PropertyBufferSize: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDiSetClassRegistryPropertyA(
    ClassGuid: ?*const Guid,
    Property: u32,
    // TODO: what to do with BytesParamIndex 3?
    PropertyBuffer: ?*const u8,
    PropertyBufferSize: u32,
    MachineName: ?[*:0]const u8,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDiSetClassRegistryPropertyW(
    ClassGuid: ?*const Guid,
    Property: u32,
    // TODO: what to do with BytesParamIndex 3?
    PropertyBuffer: ?*const u8,
    PropertyBufferSize: u32,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDeviceInstallParamsA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DeviceInstallParams: ?*SP_DEVINSTALL_PARAMS_A,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDeviceInstallParamsW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DeviceInstallParams: ?*SP_DEVINSTALL_PARAMS_W,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassInstallParamsA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    // TODO: what to do with BytesParamIndex 3?
    ClassInstallParams: ?*SP_CLASSINSTALL_HEADER,
    ClassInstallParamsSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassInstallParamsW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    // TODO: what to do with BytesParamIndex 3?
    ClassInstallParams: ?*SP_CLASSINSTALL_HEADER,
    ClassInstallParamsSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiSetDeviceInstallParamsA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DeviceInstallParams: ?*SP_DEVINSTALL_PARAMS_A,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiSetDeviceInstallParamsW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DeviceInstallParams: ?*SP_DEVINSTALL_PARAMS_W,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiSetClassInstallParamsA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    // TODO: what to do with BytesParamIndex 3?
    ClassInstallParams: ?*SP_CLASSINSTALL_HEADER,
    ClassInstallParamsSize: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiSetClassInstallParamsW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    // TODO: what to do with BytesParamIndex 3?
    ClassInstallParams: ?*SP_CLASSINSTALL_HEADER,
    ClassInstallParamsSize: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDriverInstallParamsA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverInfoData: ?*SP_DRVINFO_DATA_V2_A,
    DriverInstallParams: ?*SP_DRVINSTALL_PARAMS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetDriverInstallParamsW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverInfoData: ?*SP_DRVINFO_DATA_V2_W,
    DriverInstallParams: ?*SP_DRVINSTALL_PARAMS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiSetDriverInstallParamsA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverInfoData: ?*SP_DRVINFO_DATA_V2_A,
    DriverInstallParams: ?*SP_DRVINSTALL_PARAMS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiSetDriverInstallParamsW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverInfoData: ?*SP_DRVINFO_DATA_V2_W,
    DriverInstallParams: ?*SP_DRVINSTALL_PARAMS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiLoadClassIcon(
    ClassGuid: ?*const Guid,
    LargeIcon: ?*?HICON,
    MiniIconIndex: ?*i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "setupapi" fn SetupDiLoadDeviceIcon(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    cxIcon: u32,
    cyIcon: u32,
    Flags: u32,
    hIcon: ?*?HICON,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiDrawMiniIcon(
    hdc: ?HDC,
    rc: RECT,
    MiniIconIndex: i32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassBitmapIndex(
    ClassGuid: ?*const Guid,
    MiniIconIndex: ?*i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassImageList(
    ClassImageListData: ?*SP_CLASSIMAGELIST_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassImageListExA(
    ClassImageListData: ?*SP_CLASSIMAGELIST_DATA,
    MachineName: ?[*:0]const u8,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassImageListExW(
    ClassImageListData: ?*SP_CLASSIMAGELIST_DATA,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassImageIndex(
    ClassImageListData: ?*SP_CLASSIMAGELIST_DATA,
    ClassGuid: ?*const Guid,
    ImageIndex: ?*i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiDestroyClassImageList(
    ClassImageListData: ?*SP_CLASSIMAGELIST_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassDevPropertySheetsA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    PropertySheetHeader: ?*PROPSHEETHEADERA_V2,
    PropertySheetHeaderPageListSize: u32,
    RequiredSize: ?*u32,
    PropertySheetType: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetClassDevPropertySheetsW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    PropertySheetHeader: ?*PROPSHEETHEADERW_V2,
    PropertySheetHeaderPageListSize: u32,
    RequiredSize: ?*u32,
    PropertySheetType: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiAskForOEMDisk(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiSelectOEMDrv(
    hwndParent: ?HWND,
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiClassNameFromGuidA(
    ClassGuid: ?*const Guid,
    ClassName: [*:0]u8,
    ClassNameSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiClassNameFromGuidW(
    ClassGuid: ?*const Guid,
    ClassName: [*:0]u16,
    ClassNameSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiClassNameFromGuidExA(
    ClassGuid: ?*const Guid,
    ClassName: [*:0]u8,
    ClassNameSize: u32,
    RequiredSize: ?*u32,
    MachineName: ?[*:0]const u8,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiClassNameFromGuidExW(
    ClassGuid: ?*const Guid,
    ClassName: [*:0]u16,
    ClassNameSize: u32,
    RequiredSize: ?*u32,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiClassGuidsFromNameA(
    ClassName: ?[*:0]const u8,
    ClassGuidList: [*]Guid,
    ClassGuidListSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiClassGuidsFromNameW(
    ClassName: ?[*:0]const u16,
    ClassGuidList: [*]Guid,
    ClassGuidListSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiClassGuidsFromNameExA(
    ClassName: ?[*:0]const u8,
    ClassGuidList: [*]Guid,
    ClassGuidListSize: u32,
    RequiredSize: ?*u32,
    MachineName: ?[*:0]const u8,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiClassGuidsFromNameExW(
    ClassName: ?[*:0]const u16,
    ClassGuidList: [*]Guid,
    ClassGuidListSize: u32,
    RequiredSize: ?*u32,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetHwProfileFriendlyNameA(
    HwProfile: u32,
    FriendlyName: [*:0]u8,
    FriendlyNameSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetHwProfileFriendlyNameW(
    HwProfile: u32,
    FriendlyName: [*:0]u16,
    FriendlyNameSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetHwProfileFriendlyNameExA(
    HwProfile: u32,
    FriendlyName: [*:0]u8,
    FriendlyNameSize: u32,
    RequiredSize: ?*u32,
    MachineName: ?[*:0]const u8,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetHwProfileFriendlyNameExW(
    HwProfile: u32,
    FriendlyName: [*:0]u16,
    FriendlyNameSize: u32,
    RequiredSize: ?*u32,
    MachineName: ?[*:0]const u16,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "setupapi" fn SetupDiGetWizardPage(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    InstallWizardData: ?*SP_INSTALLWIZARD_DATA,
    PageType: u32,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) ?HPROPSHEETPAGE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetSelectedDevice(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiSetSelectedDevice(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "setupapi" fn SetupDiGetActualModelsSectionA(
    Context: ?*INFCONTEXT,
    AlternatePlatformInfo: ?*SP_ALTPLATFORM_INFO_V2,
    InfSectionWithExt: ?[*:0]u8,
    InfSectionWithExtSize: u32,
    RequiredSize: ?*u32,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "setupapi" fn SetupDiGetActualModelsSectionW(
    Context: ?*INFCONTEXT,
    AlternatePlatformInfo: ?*SP_ALTPLATFORM_INFO_V2,
    InfSectionWithExt: ?[*:0]u16,
    InfSectionWithExtSize: u32,
    RequiredSize: ?*u32,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetActualSectionToInstallA(
    InfHandle: ?*anyopaque,
    InfSectionName: ?[*:0]const u8,
    InfSectionWithExt: ?[*:0]u8,
    InfSectionWithExtSize: u32,
    RequiredSize: ?*u32,
    Extension: ?*?PSTR,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "setupapi" fn SetupDiGetActualSectionToInstallW(
    InfHandle: ?*anyopaque,
    InfSectionName: ?[*:0]const u16,
    InfSectionWithExt: ?[*:0]u16,
    InfSectionWithExtSize: u32,
    RequiredSize: ?*u32,
    Extension: ?*?PWSTR,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDiGetActualSectionToInstallExA(
    InfHandle: ?*anyopaque,
    InfSectionName: ?[*:0]const u8,
    AlternatePlatformInfo: ?*SP_ALTPLATFORM_INFO_V2,
    InfSectionWithExt: ?[*:0]u8,
    InfSectionWithExtSize: u32,
    RequiredSize: ?*u32,
    Extension: ?*?PSTR,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDiGetActualSectionToInstallExW(
    InfHandle: ?*anyopaque,
    InfSectionName: ?[*:0]const u16,
    AlternatePlatformInfo: ?*SP_ALTPLATFORM_INFO_V2,
    InfSectionWithExt: ?[*:0]u16,
    InfSectionWithExtSize: u32,
    RequiredSize: ?*u32,
    Extension: ?*?PWSTR,
    Reserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupEnumInfSectionsA(
    InfHandle: ?*anyopaque,
    Index: u32,
    Buffer: ?[*:0]u8,
    Size: u32,
    SizeNeeded: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupEnumInfSectionsW(
    InfHandle: ?*anyopaque,
    Index: u32,
    Buffer: ?[*:0]u16,
    Size: u32,
    SizeNeeded: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupVerifyInfFileA(
    InfName: ?[*:0]const u8,
    AltPlatformInfo: ?*SP_ALTPLATFORM_INFO_V2,
    InfSignerInfo: ?*SP_INF_SIGNER_INFO_V2_A,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupVerifyInfFileW(
    InfName: ?[*:0]const u16,
    AltPlatformInfo: ?*SP_ALTPLATFORM_INFO_V2,
    InfSignerInfo: ?*SP_INF_SIGNER_INFO_V2_W,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDiGetCustomDevicePropertyA(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    CustomPropertyName: ?[*:0]const u8,
    Flags: u32,
    PropertyRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 6?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "setupapi" fn SetupDiGetCustomDevicePropertyW(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    CustomPropertyName: ?[*:0]const u16,
    Flags: u32,
    PropertyRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 6?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: u32,
    RequiredSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "setupapi" fn SetupConfigureWmiFromInfSectionA(
    InfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u8,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windowsServer2003'
pub extern "setupapi" fn SetupConfigureWmiFromInfSectionW(
    InfHandle: ?*anyopaque,
    SectionName: ?[*:0]const u16,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Add_Empty_Log_Conf(
    plcLogConf: ?*usize,
    dnDevInst: u32,
    Priority: PRIORITY,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Add_Empty_Log_Conf_Ex(
    plcLogConf: ?*usize,
    dnDevInst: u32,
    Priority: PRIORITY,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Add_IDA(
    dnDevInst: u32,
    pszID: ?PSTR,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Add_IDW(
    dnDevInst: u32,
    pszID: ?PWSTR,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Add_ID_ExA(
    dnDevInst: u32,
    pszID: ?PSTR,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Add_ID_ExW(
    dnDevInst: u32,
    pszID: ?PWSTR,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Add_Range(
    ullStartValue: u64,
    ullEndValue: u64,
    rlh: usize,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Add_Res_Des(
    prdResDes: ?*usize,
    lcLogConf: usize,
    ResourceID: u32,
    // TODO: what to do with BytesParamIndex 4?
    ResourceData: ?*anyopaque,
    ResourceLen: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Add_Res_Des_Ex(
    prdResDes: ?*usize,
    lcLogConf: usize,
    ResourceID: u32,
    // TODO: what to do with BytesParamIndex 4?
    ResourceData: ?*anyopaque,
    ResourceLen: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Connect_MachineA(
    UNCServerName: ?[*:0]const u8,
    phMachine: ?*isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Connect_MachineW(
    UNCServerName: ?[*:0]const u16,
    phMachine: ?*isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Create_DevNodeA(
    pdnDevInst: ?*u32,
    pDeviceID: ?*i8,
    dnParent: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Create_DevNodeW(
    pdnDevInst: ?*u32,
    pDeviceID: ?*u16,
    dnParent: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Create_DevNode_ExA(
    pdnDevInst: ?*u32,
    pDeviceID: ?*i8,
    dnParent: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Create_DevNode_ExW(
    pdnDevInst: ?*u32,
    pDeviceID: ?*u16,
    dnParent: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Create_Range_List(
    prlh: ?*usize,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Delete_Class_Key(
    ClassGuid: ?*Guid,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Delete_Class_Key_Ex(
    ClassGuid: ?*Guid,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Delete_DevNode_Key(
    dnDevNode: u32,
    ulHardwareProfile: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Delete_DevNode_Key_Ex(
    dnDevNode: u32,
    ulHardwareProfile: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Delete_Range(
    ullStartValue: u64,
    ullEndValue: u64,
    rlh: usize,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Detect_Resource_Conflict(
    dnDevInst: u32,
    ResourceID: u32,
    // TODO: what to do with BytesParamIndex 3?
    ResourceData: ?*anyopaque,
    ResourceLen: u32,
    pbConflictDetected: ?*BOOL,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Detect_Resource_Conflict_Ex(
    dnDevInst: u32,
    ResourceID: u32,
    // TODO: what to do with BytesParamIndex 3?
    ResourceData: ?*anyopaque,
    ResourceLen: u32,
    pbConflictDetected: ?*BOOL,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Disable_DevNode(
    dnDevInst: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Disable_DevNode_Ex(
    dnDevInst: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Disconnect_Machine(
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Dup_Range_List(
    rlhOld: usize,
    rlhNew: usize,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Enable_DevNode(
    dnDevInst: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Enable_DevNode_Ex(
    dnDevInst: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Enumerate_Classes(
    ulClassIndex: u32,
    ClassGuid: ?*Guid,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Enumerate_Classes_Ex(
    ulClassIndex: u32,
    ClassGuid: ?*Guid,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Enumerate_EnumeratorsA(
    ulEnumIndex: u32,
    Buffer: [*:0]u8,
    pulLength: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Enumerate_EnumeratorsW(
    ulEnumIndex: u32,
    Buffer: [*:0]u16,
    pulLength: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Enumerate_Enumerators_ExA(
    ulEnumIndex: u32,
    Buffer: [*:0]u8,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Enumerate_Enumerators_ExW(
    ulEnumIndex: u32,
    Buffer: [*:0]u16,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Find_Range(
    pullStart: ?*u64,
    ullStart: u64,
    ulLength: u32,
    ullAlignment: u64,
    ullEnd: u64,
    rlh: usize,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_First_Range(
    rlh: usize,
    pullStart: ?*u64,
    pullEnd: ?*u64,
    preElement: ?*usize,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Free_Log_Conf(
    lcLogConfToBeFreed: usize,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Free_Log_Conf_Ex(
    lcLogConfToBeFreed: usize,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Free_Log_Conf_Handle(
    lcLogConf: usize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Free_Range_List(
    rlh: usize,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Free_Res_Des(
    prdResDes: ?*usize,
    rdResDes: usize,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Free_Res_Des_Ex(
    prdResDes: ?*usize,
    rdResDes: usize,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Free_Res_Des_Handle(
    rdResDes: usize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Child(
    pdnDevInst: ?*u32,
    dnDevInst: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Child_Ex(
    pdnDevInst: ?*u32,
    dnDevInst: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Class_NameA(
    ClassGuid: ?*Guid,
    Buffer: ?[*:0]u8,
    pulLength: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Class_NameW(
    ClassGuid: ?*Guid,
    Buffer: ?[*:0]u16,
    pulLength: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Class_Name_ExA(
    ClassGuid: ?*Guid,
    Buffer: ?[*:0]u8,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Class_Name_ExW(
    ClassGuid: ?*Guid,
    Buffer: ?[*:0]u16,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Class_Key_NameA(
    ClassGuid: ?*Guid,
    pszKeyName: ?[*:0]u8,
    pulLength: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Class_Key_NameW(
    ClassGuid: ?*Guid,
    pszKeyName: ?[*:0]u16,
    pulLength: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Class_Key_Name_ExA(
    ClassGuid: ?*Guid,
    pszKeyName: ?[*:0]u8,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Class_Key_Name_ExW(
    ClassGuid: ?*Guid,
    pszKeyName: ?[*:0]u16,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Depth(
    pulDepth: ?*u32,
    dnDevInst: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Depth_Ex(
    pulDepth: ?*u32,
    dnDevInst: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Device_IDA(
    dnDevInst: u32,
    Buffer: [*:0]u8,
    BufferLen: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_IDW(
    dnDevInst: u32,
    Buffer: [*:0]u16,
    BufferLen: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Device_ID_ExA(
    dnDevInst: u32,
    Buffer: [*:0]u8,
    BufferLen: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_ID_ExW(
    dnDevInst: u32,
    Buffer: [*:0]u16,
    BufferLen: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_ID_ListA(
    pszFilter: ?[*:0]const u8,
    Buffer: [*]u8,
    BufferLen: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_ID_ListW(
    pszFilter: ?[*:0]const u16,
    Buffer: [*]u16,
    BufferLen: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Device_ID_List_ExA(
    pszFilter: ?[*:0]const u8,
    Buffer: [*]u8,
    BufferLen: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_ID_List_ExW(
    pszFilter: ?[*:0]const u16,
    Buffer: [*]u16,
    BufferLen: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_ID_List_SizeA(
    pulLen: ?*u32,
    pszFilter: ?[*:0]const u8,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_ID_List_SizeW(
    pulLen: ?*u32,
    pszFilter: ?[*:0]const u16,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Device_ID_List_Size_ExA(
    pulLen: ?*u32,
    pszFilter: ?[*:0]const u8,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_ID_List_Size_ExW(
    pulLen: ?*u32,
    pszFilter: ?[*:0]const u16,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_ID_Size(
    pulLen: ?*u32,
    dnDevInst: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_ID_Size_Ex(
    pulLen: ?*u32,
    dnDevInst: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "cfgmgr32" fn CM_Get_DevNode_PropertyW(
    dnDevInst: u32,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "cfgmgr32" fn CM_Get_DevNode_Property_ExW(
    dnDevInst: u32,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "cfgmgr32" fn CM_Get_DevNode_Property_Keys(
    dnDevInst: u32,
    PropertyKeyArray: ?[*]DEVPROPKEY,
    PropertyKeyCount: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "cfgmgr32" fn CM_Get_DevNode_Property_Keys_Ex(
    dnDevInst: u32,
    PropertyKeyArray: ?[*]DEVPROPKEY,
    PropertyKeyCount: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_DevNode_Registry_PropertyA(
    dnDevInst: u32,
    ulProperty: u32,
    pulRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    Buffer: ?*anyopaque,
    pulLength: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_DevNode_Registry_PropertyW(
    dnDevInst: u32,
    ulProperty: u32,
    pulRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    Buffer: ?*anyopaque,
    pulLength: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_DevNode_Registry_Property_ExA(
    dnDevInst: u32,
    ulProperty: u32,
    pulRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    Buffer: ?*anyopaque,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_DevNode_Registry_Property_ExW(
    dnDevInst: u32,
    ulProperty: u32,
    pulRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    Buffer: ?*anyopaque,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_DevNode_Custom_PropertyA(
    dnDevInst: u32,
    pszCustomPropertyName: ?[*:0]const u8,
    pulRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    Buffer: ?*anyopaque,
    pulLength: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_DevNode_Custom_PropertyW(
    dnDevInst: u32,
    pszCustomPropertyName: ?[*:0]const u16,
    pulRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    Buffer: ?*anyopaque,
    pulLength: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_DevNode_Custom_Property_ExA(
    dnDevInst: u32,
    pszCustomPropertyName: ?[*:0]const u8,
    pulRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    Buffer: ?*anyopaque,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_DevNode_Custom_Property_ExW(
    dnDevInst: u32,
    pszCustomPropertyName: ?[*:0]const u16,
    pulRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    Buffer: ?*anyopaque,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_DevNode_Status(
    pulStatus: ?*u32,
    pulProblemNumber: ?*u32,
    dnDevInst: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_DevNode_Status_Ex(
    pulStatus: ?*u32,
    pulProblemNumber: ?*u32,
    dnDevInst: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_First_Log_Conf(
    plcLogConf: ?*usize,
    dnDevInst: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_First_Log_Conf_Ex(
    plcLogConf: ?*usize,
    dnDevInst: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Global_State(
    pulState: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Global_State_Ex(
    pulState: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Hardware_Profile_InfoA(
    ulIndex: u32,
    pHWProfileInfo: ?*HWProfileInfo_sA,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Hardware_Profile_Info_ExA(
    ulIndex: u32,
    pHWProfileInfo: ?*HWProfileInfo_sA,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Hardware_Profile_InfoW(
    ulIndex: u32,
    pHWProfileInfo: ?*HWProfileInfo_sW,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Hardware_Profile_Info_ExW(
    ulIndex: u32,
    pHWProfileInfo: ?*HWProfileInfo_sW,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_HW_Prof_FlagsA(
    pDeviceID: ?*i8,
    ulHardwareProfile: u32,
    pulValue: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_HW_Prof_FlagsW(
    pDeviceID: ?*u16,
    ulHardwareProfile: u32,
    pulValue: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_HW_Prof_Flags_ExA(
    pDeviceID: ?*i8,
    ulHardwareProfile: u32,
    pulValue: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_HW_Prof_Flags_ExW(
    pDeviceID: ?*u16,
    ulHardwareProfile: u32,
    pulValue: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Device_Interface_AliasA(
    pszDeviceInterface: ?[*:0]const u8,
    AliasInterfaceGuid: ?*Guid,
    pszAliasDeviceInterface: [*:0]u8,
    pulLength: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_Interface_AliasW(
    pszDeviceInterface: ?[*:0]const u16,
    AliasInterfaceGuid: ?*Guid,
    pszAliasDeviceInterface: [*:0]u16,
    pulLength: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Device_Interface_Alias_ExA(
    pszDeviceInterface: ?[*:0]const u8,
    AliasInterfaceGuid: ?*Guid,
    pszAliasDeviceInterface: [*:0]u8,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Device_Interface_Alias_ExW(
    pszDeviceInterface: ?[*:0]const u16,
    AliasInterfaceGuid: ?*Guid,
    pszAliasDeviceInterface: [*:0]u16,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_Interface_ListA(
    InterfaceClassGuid: ?*Guid,
    pDeviceID: ?*i8,
    Buffer: [*]u8,
    BufferLen: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_Interface_ListW(
    InterfaceClassGuid: ?*Guid,
    pDeviceID: ?*u16,
    Buffer: [*]u16,
    BufferLen: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Device_Interface_List_ExA(
    InterfaceClassGuid: ?*Guid,
    pDeviceID: ?*i8,
    Buffer: [*]u8,
    BufferLen: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Device_Interface_List_ExW(
    InterfaceClassGuid: ?*Guid,
    pDeviceID: ?*u16,
    Buffer: [*]u16,
    BufferLen: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_Interface_List_SizeA(
    pulLen: ?*u32,
    InterfaceClassGuid: ?*Guid,
    pDeviceID: ?*i8,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Device_Interface_List_SizeW(
    pulLen: ?*u32,
    InterfaceClassGuid: ?*Guid,
    pDeviceID: ?*u16,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Device_Interface_List_Size_ExA(
    pulLen: ?*u32,
    InterfaceClassGuid: ?*Guid,
    pDeviceID: ?*i8,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Device_Interface_List_Size_ExW(
    pulLen: ?*u32,
    InterfaceClassGuid: ?*Guid,
    pDeviceID: ?*u16,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "cfgmgr32" fn CM_Get_Device_Interface_PropertyW(
    pszDeviceInterface: ?[*:0]const u16,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "cfgmgr32" fn CM_Get_Device_Interface_Property_ExW(
    pszDeviceInterface: ?[*:0]const u16,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "cfgmgr32" fn CM_Get_Device_Interface_Property_KeysW(
    pszDeviceInterface: ?[*:0]const u16,
    PropertyKeyArray: ?[*]DEVPROPKEY,
    PropertyKeyCount: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "cfgmgr32" fn CM_Get_Device_Interface_Property_Keys_ExW(
    pszDeviceInterface: ?[*:0]const u16,
    PropertyKeyArray: ?[*]DEVPROPKEY,
    PropertyKeyCount: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Log_Conf_Priority(
    lcLogConf: usize,
    pPriority: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Log_Conf_Priority_Ex(
    lcLogConf: usize,
    pPriority: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Next_Log_Conf(
    plcLogConf: ?*usize,
    lcLogConf: usize,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Next_Log_Conf_Ex(
    plcLogConf: ?*usize,
    lcLogConf: usize,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Parent(
    pdnDevInst: ?*u32,
    dnDevInst: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Parent_Ex(
    pdnDevInst: ?*u32,
    dnDevInst: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Res_Des_Data(
    rdResDes: usize,
    // TODO: what to do with BytesParamIndex 2?
    Buffer: ?*anyopaque,
    BufferLen: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Res_Des_Data_Ex(
    rdResDes: usize,
    // TODO: what to do with BytesParamIndex 2?
    Buffer: ?*anyopaque,
    BufferLen: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Res_Des_Data_Size(
    pulSize: ?*u32,
    rdResDes: usize,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Res_Des_Data_Size_Ex(
    pulSize: ?*u32,
    rdResDes: usize,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Sibling(
    pdnDevInst: ?*u32,
    dnDevInst: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Sibling_Ex(
    pdnDevInst: ?*u32,
    dnDevInst: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Version() callconv(@import("std").os.windows.WINAPI) u16;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Version_Ex(
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) u16;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "cfgmgr32" fn CM_Is_Version_Available(
    wVersion: u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "cfgmgr32" fn CM_Is_Version_Available_Ex(
    wVersion: u16,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "cfgmgr32" fn CM_Intersect_Range_List(
    rlhOld1: usize,
    rlhOld2: usize,
    rlhNew: usize,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Invert_Range_List(
    rlhOld: usize,
    rlhNew: usize,
    ullMaxValue: u64,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Locate_DevNodeA(
    pdnDevInst: ?*u32,
    pDeviceID: ?*i8,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Locate_DevNodeW(
    pdnDevInst: ?*u32,
    pDeviceID: ?*u16,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Locate_DevNode_ExA(
    pdnDevInst: ?*u32,
    pDeviceID: ?*i8,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Locate_DevNode_ExW(
    pdnDevInst: ?*u32,
    pDeviceID: ?*u16,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Merge_Range_List(
    rlhOld1: usize,
    rlhOld2: usize,
    rlhNew: usize,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Modify_Res_Des(
    prdResDes: ?*usize,
    rdResDes: usize,
    ResourceID: u32,
    // TODO: what to do with BytesParamIndex 4?
    ResourceData: ?*anyopaque,
    ResourceLen: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Modify_Res_Des_Ex(
    prdResDes: ?*usize,
    rdResDes: usize,
    ResourceID: u32,
    // TODO: what to do with BytesParamIndex 4?
    ResourceData: ?*anyopaque,
    ResourceLen: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Move_DevNode(
    dnFromDevInst: u32,
    dnToDevInst: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Move_DevNode_Ex(
    dnFromDevInst: u32,
    dnToDevInst: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Next_Range(
    preElement: ?*usize,
    pullStart: ?*u64,
    pullEnd: ?*u64,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Next_Res_Des(
    prdResDes: ?*usize,
    rdResDes: usize,
    ForResource: u32,
    pResourceID: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Next_Res_Des_Ex(
    prdResDes: ?*usize,
    rdResDes: usize,
    ForResource: u32,
    pResourceID: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Open_Class_KeyA(
    ClassGuid: ?*Guid,
    pszClassName: ?[*:0]const u8,
    samDesired: u32,
    Disposition: u32,
    phkClass: ?*?HKEY,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Open_Class_KeyW(
    ClassGuid: ?*Guid,
    pszClassName: ?[*:0]const u16,
    samDesired: u32,
    Disposition: u32,
    phkClass: ?*?HKEY,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Open_Class_Key_ExA(
    ClassGuid: ?*Guid,
    pszClassName: ?[*:0]const u8,
    samDesired: u32,
    Disposition: u32,
    phkClass: ?*?HKEY,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Open_Class_Key_ExW(
    ClassGuid: ?*Guid,
    pszClassName: ?[*:0]const u16,
    samDesired: u32,
    Disposition: u32,
    phkClass: ?*?HKEY,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Open_DevNode_Key(
    dnDevNode: u32,
    samDesired: u32,
    ulHardwareProfile: u32,
    Disposition: u32,
    phkDevice: ?*?HKEY,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Open_DevNode_Key_Ex(
    dnDevNode: u32,
    samDesired: u32,
    ulHardwareProfile: u32,
    Disposition: u32,
    phkDevice: ?*?HKEY,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "cfgmgr32" fn CM_Open_Device_Interface_KeyA(
    pszDeviceInterface: ?[*:0]const u8,
    samDesired: u32,
    Disposition: u32,
    phkDeviceInterface: ?*?HKEY,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "cfgmgr32" fn CM_Open_Device_Interface_KeyW(
    pszDeviceInterface: ?[*:0]const u16,
    samDesired: u32,
    Disposition: u32,
    phkDeviceInterface: ?*?HKEY,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "cfgmgr32" fn CM_Open_Device_Interface_Key_ExA(
    pszDeviceInterface: ?[*:0]const u8,
    samDesired: u32,
    Disposition: u32,
    phkDeviceInterface: ?*?HKEY,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "cfgmgr32" fn CM_Open_Device_Interface_Key_ExW(
    pszDeviceInterface: ?[*:0]const u16,
    samDesired: u32,
    Disposition: u32,
    phkDeviceInterface: ?*?HKEY,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Delete_Device_Interface_KeyA(
    pszDeviceInterface: ?[*:0]const u8,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "cfgmgr32" fn CM_Delete_Device_Interface_KeyW(
    pszDeviceInterface: ?[*:0]const u16,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "cfgmgr32" fn CM_Delete_Device_Interface_Key_ExA(
    pszDeviceInterface: ?[*:0]const u8,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "cfgmgr32" fn CM_Delete_Device_Interface_Key_ExW(
    pszDeviceInterface: ?[*:0]const u16,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Query_Arbitrator_Free_Data(
    // TODO: what to do with BytesParamIndex 1?
    pData: ?*anyopaque,
    DataLen: u32,
    dnDevInst: u32,
    ResourceID: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Query_Arbitrator_Free_Data_Ex(
    // TODO: what to do with BytesParamIndex 1?
    pData: ?*anyopaque,
    DataLen: u32,
    dnDevInst: u32,
    ResourceID: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Query_Arbitrator_Free_Size(
    pulSize: ?*u32,
    dnDevInst: u32,
    ResourceID: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Query_Arbitrator_Free_Size_Ex(
    pulSize: ?*u32,
    dnDevInst: u32,
    ResourceID: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Query_Remove_SubTree(
    dnAncestor: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Query_Remove_SubTree_Ex(
    dnAncestor: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Query_And_Remove_SubTreeA(
    dnAncestor: u32,
    pVetoType: ?*PNP_VETO_TYPE,
    pszVetoName: ?[*:0]u8,
    ulNameLength: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Query_And_Remove_SubTreeW(
    dnAncestor: u32,
    pVetoType: ?*PNP_VETO_TYPE,
    pszVetoName: ?[*:0]u16,
    ulNameLength: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Query_And_Remove_SubTree_ExA(
    dnAncestor: u32,
    pVetoType: ?*PNP_VETO_TYPE,
    pszVetoName: ?[*:0]u8,
    ulNameLength: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Query_And_Remove_SubTree_ExW(
    dnAncestor: u32,
    pVetoType: ?*PNP_VETO_TYPE,
    pszVetoName: ?[*:0]u16,
    ulNameLength: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Request_Device_EjectA(
    dnDevInst: u32,
    pVetoType: ?*PNP_VETO_TYPE,
    pszVetoName: ?[*:0]u8,
    ulNameLength: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Request_Device_Eject_ExA(
    dnDevInst: u32,
    pVetoType: ?*PNP_VETO_TYPE,
    pszVetoName: ?[*:0]u8,
    ulNameLength: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Request_Device_EjectW(
    dnDevInst: u32,
    pVetoType: ?*PNP_VETO_TYPE,
    pszVetoName: ?[*:0]u16,
    ulNameLength: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Request_Device_Eject_ExW(
    dnDevInst: u32,
    pVetoType: ?*PNP_VETO_TYPE,
    pszVetoName: ?[*:0]u16,
    ulNameLength: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Reenumerate_DevNode(
    dnDevInst: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Reenumerate_DevNode_Ex(
    dnDevInst: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Register_Device_InterfaceA(
    dnDevInst: u32,
    InterfaceClassGuid: ?*Guid,
    pszReference: ?[*:0]const u8,
    pszDeviceInterface: [*:0]u8,
    pulLength: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Register_Device_InterfaceW(
    dnDevInst: u32,
    InterfaceClassGuid: ?*Guid,
    pszReference: ?[*:0]const u16,
    pszDeviceInterface: [*:0]u16,
    pulLength: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Register_Device_Interface_ExA(
    dnDevInst: u32,
    InterfaceClassGuid: ?*Guid,
    pszReference: ?[*:0]const u8,
    pszDeviceInterface: [*:0]u8,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Register_Device_Interface_ExW(
    dnDevInst: u32,
    InterfaceClassGuid: ?*Guid,
    pszReference: ?[*:0]const u16,
    pszDeviceInterface: [*:0]u16,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Set_DevNode_Problem_Ex(
    dnDevInst: u32,
    ulProblem: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Set_DevNode_Problem(
    dnDevInst: u32,
    ulProblem: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Unregister_Device_InterfaceA(
    pszDeviceInterface: ?[*:0]const u8,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Unregister_Device_InterfaceW(
    pszDeviceInterface: ?[*:0]const u16,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Unregister_Device_Interface_ExA(
    pszDeviceInterface: ?[*:0]const u8,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Unregister_Device_Interface_ExW(
    pszDeviceInterface: ?[*:0]const u16,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Register_Device_Driver(
    dnDevInst: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Register_Device_Driver_Ex(
    dnDevInst: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Remove_SubTree(
    dnAncestor: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Remove_SubTree_Ex(
    dnAncestor: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "cfgmgr32" fn CM_Set_DevNode_PropertyW(
    dnDevInst: u32,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*const u8,
    PropertyBufferSize: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "cfgmgr32" fn CM_Set_DevNode_Property_ExW(
    dnDevInst: u32,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*const u8,
    PropertyBufferSize: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Set_DevNode_Registry_PropertyA(
    dnDevInst: u32,
    ulProperty: u32,
    // TODO: what to do with BytesParamIndex 3?
    Buffer: ?*anyopaque,
    ulLength: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'Windows 2000'
pub extern "cfgmgr32" fn CM_Set_DevNode_Registry_PropertyW(
    dnDevInst: u32,
    ulProperty: u32,
    // TODO: what to do with BytesParamIndex 3?
    Buffer: ?*anyopaque,
    ulLength: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Set_DevNode_Registry_Property_ExA(
    dnDevInst: u32,
    ulProperty: u32,
    // TODO: what to do with BytesParamIndex 3?
    Buffer: ?*anyopaque,
    ulLength: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Set_DevNode_Registry_Property_ExW(
    dnDevInst: u32,
    ulProperty: u32,
    // TODO: what to do with BytesParamIndex 3?
    Buffer: ?*anyopaque,
    ulLength: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "cfgmgr32" fn CM_Set_Device_Interface_PropertyW(
    pszDeviceInterface: ?[*:0]const u16,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*const u8,
    PropertyBufferSize: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "cfgmgr32" fn CM_Set_Device_Interface_Property_ExW(
    pszDeviceInterface: ?[*:0]const u16,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*const u8,
    PropertyBufferSize: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Is_Dock_Station_Present(
    pbPresent: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Is_Dock_Station_Present_Ex(
    pbPresent: ?*BOOL,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Request_Eject_PC() callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Request_Eject_PC_Ex(
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Set_HW_Prof_FlagsA(
    pDeviceID: ?*i8,
    ulConfig: u32,
    ulValue: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Set_HW_Prof_FlagsW(
    pDeviceID: ?*u16,
    ulConfig: u32,
    ulValue: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Set_HW_Prof_Flags_ExA(
    pDeviceID: ?*i8,
    ulConfig: u32,
    ulValue: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Set_HW_Prof_Flags_ExW(
    pDeviceID: ?*u16,
    ulConfig: u32,
    ulValue: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Setup_DevNode(
    dnDevInst: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Setup_DevNode_Ex(
    dnDevInst: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Test_Range_Available(
    ullStartValue: u64,
    ullEndValue: u64,
    rlh: usize,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Uninstall_DevNode(
    dnDevInst: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Uninstall_DevNode_Ex(
    dnDevInst: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Run_Detection(
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Run_Detection_Ex(
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Set_HW_Prof(
    ulHardwareProfile: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Set_HW_Prof_Ex(
    ulHardwareProfile: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Query_Resource_Conflict_List(
    pclConflictList: ?*usize,
    dnDevInst: u32,
    ResourceID: u32,
    // TODO: what to do with BytesParamIndex 4?
    ResourceData: ?*anyopaque,
    ResourceLen: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Free_Resource_Conflict_Handle(
    clConflictList: usize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Resource_Conflict_Count(
    clConflictList: usize,
    pulCount: ?*u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Resource_Conflict_DetailsA(
    clConflictList: usize,
    ulIndex: u32,
    pConflictDetails: ?*CONFLICT_DETAILS_A,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Resource_Conflict_DetailsW(
    clConflictList: usize,
    ulIndex: u32,
    pConflictDetails: ?*CONFLICT_DETAILS_W,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "cfgmgr32" fn CM_Get_Class_PropertyW(
    ClassGUID: ?*const Guid,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "cfgmgr32" fn CM_Get_Class_Property_ExW(
    ClassGUID: ?*const Guid,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*u8,
    PropertyBufferSize: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "cfgmgr32" fn CM_Get_Class_Property_Keys(
    ClassGUID: ?*const Guid,
    PropertyKeyArray: ?[*]DEVPROPKEY,
    PropertyKeyCount: ?*u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "cfgmgr32" fn CM_Get_Class_Property_Keys_Ex(
    ClassGUID: ?*const Guid,
    PropertyKeyArray: ?[*]DEVPROPKEY,
    PropertyKeyCount: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "cfgmgr32" fn CM_Set_Class_PropertyW(
    ClassGUID: ?*const Guid,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*const u8,
    PropertyBufferSize: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "cfgmgr32" fn CM_Set_Class_Property_ExW(
    ClassGUID: ?*const Guid,
    PropertyKey: ?*const DEVPROPKEY,
    PropertyType: u32,
    // TODO: what to do with BytesParamIndex 4?
    PropertyBuffer: ?*const u8,
    PropertyBufferSize: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Get_Class_Registry_PropertyA(
    ClassGuid: ?*Guid,
    ulProperty: u32,
    pulRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    Buffer: ?*anyopaque,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Get_Class_Registry_PropertyW(
    ClassGuid: ?*Guid,
    ulProperty: u32,
    pulRegDataType: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    Buffer: ?*anyopaque,
    pulLength: ?*u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CM_Set_Class_Registry_PropertyA(
    ClassGuid: ?*Guid,
    ulProperty: u32,
    // TODO: what to do with BytesParamIndex 3?
    Buffer: ?*anyopaque,
    ulLength: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "cfgmgr32" fn CM_Set_Class_Registry_PropertyW(
    ClassGuid: ?*Guid,
    ulProperty: u32,
    // TODO: what to do with BytesParamIndex 3?
    Buffer: ?*anyopaque,
    ulLength: u32,
    ulFlags: u32,
    hMachine: isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

pub extern "cfgmgr32" fn CMP_WaitNoPendingInstallEvents(
    dwTimeout: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows8.0'
pub extern "cfgmgr32" fn CM_Register_Notification(
    pFilter: ?*CM_NOTIFY_FILTER,
    pContext: ?*anyopaque,
    pCallback: ?PCM_NOTIFY_CALLBACK,
    pNotifyContext: ?*isize,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows8.0'
pub extern "cfgmgr32" fn CM_Unregister_Notification(
    NotifyContext: ?HCMNOTIFICATION,
) callconv(@import("std").os.windows.WINAPI) CONFIGRET;

// TODO: this type is limited to platform 'windows6.1'
pub extern "cfgmgr32" fn CM_MapCrToWin32Err(
    CmReturnCode: CONFIGRET,
    DefaultErr: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "newdev" fn UpdateDriverForPlugAndPlayDevicesA(
    hwndParent: ?HWND,
    HardwareId: ?[*:0]const u8,
    FullInfPath: ?[*:0]const u8,
    InstallFlags: u32,
    bRebootRequired: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "newdev" fn UpdateDriverForPlugAndPlayDevicesW(
    hwndParent: ?HWND,
    HardwareId: ?[*:0]const u16,
    FullInfPath: ?[*:0]const u16,
    InstallFlags: u32,
    bRebootRequired: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "newdev" fn DiInstallDevice(
    hwndParent: ?HWND,
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    DriverInfoData: ?*SP_DRVINFO_DATA_V2_A,
    Flags: u32,
    NeedReboot: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "newdev" fn DiInstallDriverW(
    hwndParent: ?HWND,
    InfPath: ?[*:0]const u16,
    Flags: u32,
    NeedReboot: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "newdev" fn DiInstallDriverA(
    hwndParent: ?HWND,
    InfPath: ?[*:0]const u8,
    Flags: u32,
    NeedReboot: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.1'
pub extern "newdev" fn DiUninstallDevice(
    hwndParent: ?HWND,
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    Flags: u32,
    NeedReboot: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows10.0.10240'
pub extern "newdev" fn DiUninstallDriverW(
    hwndParent: ?HWND,
    InfPath: ?[*:0]const u16,
    Flags: u32,
    NeedReboot: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "newdev" fn DiUninstallDriverA(
    hwndParent: ?HWND,
    InfPath: ?[*:0]const u8,
    Flags: u32,
    NeedReboot: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "newdev" fn DiShowUpdateDevice(
    hwndParent: ?HWND,
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    Flags: u32,
    NeedReboot: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "newdev" fn DiRollbackDriver(
    DeviceInfoSet: ?*anyopaque,
    DeviceInfoData: ?*SP_DEVINFO_DATA,
    hwndParent: ?HWND,
    Flags: u32,
    NeedReboot: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "newdev" fn DiShowUpdateDriver(
    hwndParent: ?HWND,
    FilePath: ?[*:0]const u16,
    Flags: u32,
    NeedReboot: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

//--------------------------------------------------------------------------------
// Section: Unicode Aliases (206)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
    .ansi => struct {
        pub const SP_ORIGINAL_FILE_INFO_ = thismodule.SP_ORIGINAL_FILE_INFO_A;
        pub const PSP_FILE_CALLBACK_ = thismodule.PSP_FILE_CALLBACK_A;
        pub const FILEPATHS_ = thismodule.FILEPATHS_A;
        pub const FILEPATHS_SIGNERINFO_ = thismodule.FILEPATHS_SIGNERINFO_A;
        pub const SOURCE_MEDIA_ = thismodule.SOURCE_MEDIA_A;
        pub const CABINET_INFO_ = thismodule.CABINET_INFO_A;
        pub const FILE_IN_CABINET_INFO_ = thismodule.FILE_IN_CABINET_INFO_A;
        pub const SP_REGISTER_CONTROL_STATUS = thismodule.SP_REGISTER_CONTROL_STATUSA;
        pub const SP_FILE_COPY_PARAMS_ = thismodule.SP_FILE_COPY_PARAMS_A;
        pub const SP_DEVICE_INTERFACE_DETAIL_DATA_ = thismodule.SP_DEVICE_INTERFACE_DETAIL_DATA_A;
        pub const SP_DEVINFO_LIST_DETAIL_DATA_ = thismodule.SP_DEVINFO_LIST_DETAIL_DATA_A;
        pub const SP_DEVINSTALL_PARAMS_ = thismodule.SP_DEVINSTALL_PARAMS_A;
        pub const SP_SELECTDEVICE_PARAMS_ = thismodule.SP_SELECTDEVICE_PARAMS_A;
        pub const SP_TROUBLESHOOTER_PARAMS_ = thismodule.SP_TROUBLESHOOTER_PARAMS_A;
        pub const SP_POWERMESSAGEWAKE_PARAMS_ = thismodule.SP_POWERMESSAGEWAKE_PARAMS_A;
        pub const SP_DRVINFO_DATA_V2_ = thismodule.SP_DRVINFO_DATA_V2_A;
        pub const SP_DRVINFO_DATA_V1_ = thismodule.SP_DRVINFO_DATA_V1_A;
        pub const SP_DRVINFO_DETAIL_DATA_ = thismodule.SP_DRVINFO_DETAIL_DATA_A;
        pub const SP_BACKUP_QUEUE_PARAMS_V2_ = thismodule.SP_BACKUP_QUEUE_PARAMS_V2_A;
        pub const SP_BACKUP_QUEUE_PARAMS_V1_ = thismodule.SP_BACKUP_QUEUE_PARAMS_V1_A;
        pub const SP_INF_SIGNER_INFO_V1_ = thismodule.SP_INF_SIGNER_INFO_V1_A;
        pub const SP_INF_SIGNER_INFO_V2_ = thismodule.SP_INF_SIGNER_INFO_V2_A;
        pub const CONFLICT_DETAILS_ = thismodule.CONFLICT_DETAILS_A;
        pub const HWProfileInfo_s = thismodule.HWProfileInfo_sA;
        pub const SetupGetInfInformation = thismodule.SetupGetInfInformationA;
        pub const SetupQueryInfFileInformation = thismodule.SetupQueryInfFileInformationA;
        pub const SetupQueryInfOriginalFileInformation = thismodule.SetupQueryInfOriginalFileInformationA;
        pub const SetupQueryInfVersionInformation = thismodule.SetupQueryInfVersionInformationA;
        pub const SetupGetInfDriverStoreLocation = thismodule.SetupGetInfDriverStoreLocationA;
        pub const SetupGetInfPublishedName = thismodule.SetupGetInfPublishedNameA;
        pub const SetupGetInfFileList = thismodule.SetupGetInfFileListA;
        pub const SetupOpenInfFile = thismodule.SetupOpenInfFileA;
        pub const SetupOpenAppendInfFile = thismodule.SetupOpenAppendInfFileA;
        pub const SetupFindFirstLine = thismodule.SetupFindFirstLineA;
        pub const SetupFindNextMatchLine = thismodule.SetupFindNextMatchLineA;
        pub const SetupGetLineByIndex = thismodule.SetupGetLineByIndexA;
        pub const SetupGetLineCount = thismodule.SetupGetLineCountA;
        pub const SetupGetLineText = thismodule.SetupGetLineTextA;
        pub const SetupGetStringField = thismodule.SetupGetStringFieldA;
        pub const SetupGetMultiSzField = thismodule.SetupGetMultiSzFieldA;
        pub const SetupGetFileCompressionInfo = thismodule.SetupGetFileCompressionInfoA;
        pub const SetupGetFileCompressionInfoEx = thismodule.SetupGetFileCompressionInfoExA;
        pub const SetupDecompressOrCopyFile = thismodule.SetupDecompressOrCopyFileA;
        pub const SetupGetSourceFileLocation = thismodule.SetupGetSourceFileLocationA;
        pub const SetupGetSourceFileSize = thismodule.SetupGetSourceFileSizeA;
        pub const SetupGetTargetPath = thismodule.SetupGetTargetPathA;
        pub const SetupSetSourceList = thismodule.SetupSetSourceListA;
        pub const SetupAddToSourceList = thismodule.SetupAddToSourceListA;
        pub const SetupRemoveFromSourceList = thismodule.SetupRemoveFromSourceListA;
        pub const SetupQuerySourceList = thismodule.SetupQuerySourceListA;
        pub const SetupFreeSourceList = thismodule.SetupFreeSourceListA;
        pub const SetupPromptForDisk = thismodule.SetupPromptForDiskA;
        pub const SetupCopyError = thismodule.SetupCopyErrorA;
        pub const SetupRenameError = thismodule.SetupRenameErrorA;
        pub const SetupDeleteError = thismodule.SetupDeleteErrorA;
        pub const SetupBackupError = thismodule.SetupBackupErrorA;
        pub const SetupSetDirectoryId = thismodule.SetupSetDirectoryIdA;
        pub const SetupSetDirectoryIdEx = thismodule.SetupSetDirectoryIdExA;
        pub const SetupGetSourceInfo = thismodule.SetupGetSourceInfoA;
        pub const SetupInstallFile = thismodule.SetupInstallFileA;
        pub const SetupInstallFileEx = thismodule.SetupInstallFileExA;
        pub const SetupSetFileQueueAlternatePlatform = thismodule.SetupSetFileQueueAlternatePlatformA;
        pub const SetupSetPlatformPathOverride = thismodule.SetupSetPlatformPathOverrideA;
        pub const SetupQueueCopy = thismodule.SetupQueueCopyA;
        pub const SetupQueueCopyIndirect = thismodule.SetupQueueCopyIndirectA;
        pub const SetupQueueDefaultCopy = thismodule.SetupQueueDefaultCopyA;
        pub const SetupQueueCopySection = thismodule.SetupQueueCopySectionA;
        pub const SetupQueueDelete = thismodule.SetupQueueDeleteA;
        pub const SetupQueueDeleteSection = thismodule.SetupQueueDeleteSectionA;
        pub const SetupQueueRename = thismodule.SetupQueueRenameA;
        pub const SetupQueueRenameSection = thismodule.SetupQueueRenameSectionA;
        pub const SetupCommitFileQueue = thismodule.SetupCommitFileQueueA;
        pub const SetupScanFileQueue = thismodule.SetupScanFileQueueA;
        pub const SetupCopyOEMInf = thismodule.SetupCopyOEMInfA;
        pub const SetupUninstallOEMInf = thismodule.SetupUninstallOEMInfA;
        pub const SetupCreateDiskSpaceList = thismodule.SetupCreateDiskSpaceListA;
        pub const SetupDuplicateDiskSpaceList = thismodule.SetupDuplicateDiskSpaceListA;
        pub const SetupQueryDrivesInDiskSpaceList = thismodule.SetupQueryDrivesInDiskSpaceListA;
        pub const SetupQuerySpaceRequiredOnDrive = thismodule.SetupQuerySpaceRequiredOnDriveA;
        pub const SetupAdjustDiskSpaceList = thismodule.SetupAdjustDiskSpaceListA;
        pub const SetupAddToDiskSpaceList = thismodule.SetupAddToDiskSpaceListA;
        pub const SetupAddSectionToDiskSpaceList = thismodule.SetupAddSectionToDiskSpaceListA;
        pub const SetupAddInstallSectionToDiskSpaceList = thismodule.SetupAddInstallSectionToDiskSpaceListA;
        pub const SetupRemoveFromDiskSpaceList = thismodule.SetupRemoveFromDiskSpaceListA;
        pub const SetupRemoveSectionFromDiskSpaceList = thismodule.SetupRemoveSectionFromDiskSpaceListA;
        pub const SetupRemoveInstallSectionFromDiskSpaceList = thismodule.SetupRemoveInstallSectionFromDiskSpaceListA;
        pub const SetupIterateCabinet = thismodule.SetupIterateCabinetA;
        pub const SetupDefaultQueueCallback = thismodule.SetupDefaultQueueCallbackA;
        pub const SetupInstallFromInfSection = thismodule.SetupInstallFromInfSectionA;
        pub const SetupInstallFilesFromInfSection = thismodule.SetupInstallFilesFromInfSectionA;
        pub const SetupInstallServicesFromInfSection = thismodule.SetupInstallServicesFromInfSectionA;
        pub const SetupInstallServicesFromInfSectionEx = thismodule.SetupInstallServicesFromInfSectionExA;
        pub const InstallHinfSection = thismodule.InstallHinfSectionA;
        pub const SetupInitializeFileLog = thismodule.SetupInitializeFileLogA;
        pub const SetupLogFile = thismodule.SetupLogFileA;
        pub const SetupRemoveFileLogEntry = thismodule.SetupRemoveFileLogEntryA;
        pub const SetupQueryFileLog = thismodule.SetupQueryFileLogA;
        pub const SetupLogError = thismodule.SetupLogErrorA;
        pub const SetupGetBackupInformation = thismodule.SetupGetBackupInformationA;
        pub const SetupPrepareQueueForRestore = thismodule.SetupPrepareQueueForRestoreA;
        pub const SetupDiCreateDeviceInfoListEx = thismodule.SetupDiCreateDeviceInfoListExA;
        pub const SetupDiGetDeviceInfoListDetail = thismodule.SetupDiGetDeviceInfoListDetailA;
        pub const SetupDiCreateDeviceInfo = thismodule.SetupDiCreateDeviceInfoA;
        pub const SetupDiOpenDeviceInfo = thismodule.SetupDiOpenDeviceInfoA;
        pub const SetupDiGetDeviceInstanceId = thismodule.SetupDiGetDeviceInstanceIdA;
        pub const SetupDiCreateDeviceInterface = thismodule.SetupDiCreateDeviceInterfaceA;
        pub const SetupDiOpenDeviceInterface = thismodule.SetupDiOpenDeviceInterfaceA;
        pub const SetupDiGetDeviceInterfaceDetail = thismodule.SetupDiGetDeviceInterfaceDetailA;
        pub const SetupDiEnumDriverInfo = thismodule.SetupDiEnumDriverInfoA;
        pub const SetupDiGetSelectedDriver = thismodule.SetupDiGetSelectedDriverA;
        pub const SetupDiSetSelectedDriver = thismodule.SetupDiSetSelectedDriverA;
        pub const SetupDiGetDriverInfoDetail = thismodule.SetupDiGetDriverInfoDetailA;
        pub const SetupDiGetClassDevs = thismodule.SetupDiGetClassDevsA;
        pub const SetupDiGetClassDevsEx = thismodule.SetupDiGetClassDevsExA;
        pub const SetupDiGetINFClass = thismodule.SetupDiGetINFClassA;
        pub const SetupDiBuildClassInfoListEx = thismodule.SetupDiBuildClassInfoListExA;
        pub const SetupDiGetClassDescription = thismodule.SetupDiGetClassDescriptionA;
        pub const SetupDiGetClassDescriptionEx = thismodule.SetupDiGetClassDescriptionExA;
        pub const SetupDiInstallClass = thismodule.SetupDiInstallClassA;
        pub const SetupDiInstallClassEx = thismodule.SetupDiInstallClassExA;
        pub const SetupDiOpenClassRegKeyEx = thismodule.SetupDiOpenClassRegKeyExA;
        pub const SetupDiCreateDeviceInterfaceRegKey = thismodule.SetupDiCreateDeviceInterfaceRegKeyA;
        pub const SetupDiCreateDevRegKey = thismodule.SetupDiCreateDevRegKeyA;
        pub const SetupDiGetHwProfileListEx = thismodule.SetupDiGetHwProfileListExA;
        pub const SetupDiGetDeviceRegistryProperty = thismodule.SetupDiGetDeviceRegistryPropertyA;
        pub const SetupDiGetClassRegistryProperty = thismodule.SetupDiGetClassRegistryPropertyA;
        pub const SetupDiSetDeviceRegistryProperty = thismodule.SetupDiSetDeviceRegistryPropertyA;
        pub const SetupDiSetClassRegistryProperty = thismodule.SetupDiSetClassRegistryPropertyA;
        pub const SetupDiGetDeviceInstallParams = thismodule.SetupDiGetDeviceInstallParamsA;
        pub const SetupDiGetClassInstallParams = thismodule.SetupDiGetClassInstallParamsA;
        pub const SetupDiSetDeviceInstallParams = thismodule.SetupDiSetDeviceInstallParamsA;
        pub const SetupDiSetClassInstallParams = thismodule.SetupDiSetClassInstallParamsA;
        pub const SetupDiGetDriverInstallParams = thismodule.SetupDiGetDriverInstallParamsA;
        pub const SetupDiSetDriverInstallParams = thismodule.SetupDiSetDriverInstallParamsA;
        pub const SetupDiGetClassImageListEx = thismodule.SetupDiGetClassImageListExA;
        pub const SetupDiGetClassDevPropertySheets = thismodule.SetupDiGetClassDevPropertySheetsA;
        pub const SetupDiClassNameFromGuid = thismodule.SetupDiClassNameFromGuidA;
        pub const SetupDiClassNameFromGuidEx = thismodule.SetupDiClassNameFromGuidExA;
        pub const SetupDiClassGuidsFromName = thismodule.SetupDiClassGuidsFromNameA;
        pub const SetupDiClassGuidsFromNameEx = thismodule.SetupDiClassGuidsFromNameExA;
        pub const SetupDiGetHwProfileFriendlyName = thismodule.SetupDiGetHwProfileFriendlyNameA;
        pub const SetupDiGetHwProfileFriendlyNameEx = thismodule.SetupDiGetHwProfileFriendlyNameExA;
        pub const SetupDiGetActualModelsSection = thismodule.SetupDiGetActualModelsSectionA;
        pub const SetupDiGetActualSectionToInstall = thismodule.SetupDiGetActualSectionToInstallA;
        pub const SetupDiGetActualSectionToInstallEx = thismodule.SetupDiGetActualSectionToInstallExA;
        pub const SetupEnumInfSections = thismodule.SetupEnumInfSectionsA;
        pub const SetupVerifyInfFile = thismodule.SetupVerifyInfFileA;
        pub const SetupDiGetCustomDeviceProperty = thismodule.SetupDiGetCustomDevicePropertyA;
        pub const SetupConfigureWmiFromInfSection = thismodule.SetupConfigureWmiFromInfSectionA;
        pub const CM_Add_ID = thismodule.CM_Add_IDA;
        pub const CM_Add_ID_Ex = thismodule.CM_Add_ID_ExA;
        pub const CM_Connect_Machine = thismodule.CM_Connect_MachineA;
        pub const CM_Create_DevNode = thismodule.CM_Create_DevNodeA;
        pub const CM_Create_DevNode_Ex = thismodule.CM_Create_DevNode_ExA;
        pub const CM_Enumerate_Enumerators = thismodule.CM_Enumerate_EnumeratorsA;
        pub const CM_Enumerate_Enumerators_Ex = thismodule.CM_Enumerate_Enumerators_ExA;
        pub const CM_Get_Class_Name = thismodule.CM_Get_Class_NameA;
        pub const CM_Get_Class_Name_Ex = thismodule.CM_Get_Class_Name_ExA;
        pub const CM_Get_Class_Key_Name = thismodule.CM_Get_Class_Key_NameA;
        pub const CM_Get_Class_Key_Name_Ex = thismodule.CM_Get_Class_Key_Name_ExA;
        pub const CM_Get_Device_ID = thismodule.CM_Get_Device_IDA;
        pub const CM_Get_Device_ID_Ex = thismodule.CM_Get_Device_ID_ExA;
        pub const CM_Get_Device_ID_List = thismodule.CM_Get_Device_ID_ListA;
        pub const CM_Get_Device_ID_List_Ex = thismodule.CM_Get_Device_ID_List_ExA;
        pub const CM_Get_Device_ID_List_Size = thismodule.CM_Get_Device_ID_List_SizeA;
        pub const CM_Get_Device_ID_List_Size_Ex = thismodule.CM_Get_Device_ID_List_Size_ExA;
        pub const CM_Get_DevNode_Registry_Property = thismodule.CM_Get_DevNode_Registry_PropertyA;
        pub const CM_Get_DevNode_Registry_Property_Ex = thismodule.CM_Get_DevNode_Registry_Property_ExA;
        pub const CM_Get_DevNode_Custom_Property = thismodule.CM_Get_DevNode_Custom_PropertyA;
        pub const CM_Get_DevNode_Custom_Property_Ex = thismodule.CM_Get_DevNode_Custom_Property_ExA;
        pub const CM_Get_Hardware_Profile_Info = thismodule.CM_Get_Hardware_Profile_InfoA;
        pub const CM_Get_Hardware_Profile_Info_Ex = thismodule.CM_Get_Hardware_Profile_Info_ExA;
        pub const CM_Get_HW_Prof_Flags = thismodule.CM_Get_HW_Prof_FlagsA;
        pub const CM_Get_HW_Prof_Flags_Ex = thismodule.CM_Get_HW_Prof_Flags_ExA;
        pub const CM_Get_Device_Interface_Alias = thismodule.CM_Get_Device_Interface_AliasA;
        pub const CM_Get_Device_Interface_Alias_Ex = thismodule.CM_Get_Device_Interface_Alias_ExA;
        pub const CM_Get_Device_Interface_List = thismodule.CM_Get_Device_Interface_ListA;
        pub const CM_Get_Device_Interface_List_Ex = thismodule.CM_Get_Device_Interface_List_ExA;
        pub const CM_Get_Device_Interface_List_Size = thismodule.CM_Get_Device_Interface_List_SizeA;
        pub const CM_Get_Device_Interface_List_Size_Ex = thismodule.CM_Get_Device_Interface_List_Size_ExA;
        pub const CM_Locate_DevNode = thismodule.CM_Locate_DevNodeA;
        pub const CM_Locate_DevNode_Ex = thismodule.CM_Locate_DevNode_ExA;
        pub const CM_Open_Class_Key = thismodule.CM_Open_Class_KeyA;
        pub const CM_Open_Class_Key_Ex = thismodule.CM_Open_Class_Key_ExA;
        pub const CM_Open_Device_Interface_Key = thismodule.CM_Open_Device_Interface_KeyA;
        pub const CM_Open_Device_Interface_Key_Ex = thismodule.CM_Open_Device_Interface_Key_ExA;
        pub const CM_Delete_Device_Interface_Key = thismodule.CM_Delete_Device_Interface_KeyA;
        pub const CM_Delete_Device_Interface_Key_Ex = thismodule.CM_Delete_Device_Interface_Key_ExA;
        pub const CM_Query_And_Remove_SubTree = thismodule.CM_Query_And_Remove_SubTreeA;
        pub const CM_Query_And_Remove_SubTree_Ex = thismodule.CM_Query_And_Remove_SubTree_ExA;
        pub const CM_Request_Device_Eject = thismodule.CM_Request_Device_EjectA;
        pub const CM_Request_Device_Eject_Ex = thismodule.CM_Request_Device_Eject_ExA;
        pub const CM_Register_Device_Interface = thismodule.CM_Register_Device_InterfaceA;
        pub const CM_Register_Device_Interface_Ex = thismodule.CM_Register_Device_Interface_ExA;
        pub const CM_Unregister_Device_Interface = thismodule.CM_Unregister_Device_InterfaceA;
        pub const CM_Unregister_Device_Interface_Ex = thismodule.CM_Unregister_Device_Interface_ExA;
        pub const CM_Set_DevNode_Registry_Property = thismodule.CM_Set_DevNode_Registry_PropertyA;
        pub const CM_Set_DevNode_Registry_Property_Ex = thismodule.CM_Set_DevNode_Registry_Property_ExA;
        pub const CM_Set_HW_Prof_Flags = thismodule.CM_Set_HW_Prof_FlagsA;
        pub const CM_Set_HW_Prof_Flags_Ex = thismodule.CM_Set_HW_Prof_Flags_ExA;
        pub const CM_Get_Resource_Conflict_Details = thismodule.CM_Get_Resource_Conflict_DetailsA;
        pub const CM_Get_Class_Registry_Property = thismodule.CM_Get_Class_Registry_PropertyA;
        pub const CM_Set_Class_Registry_Property = thismodule.CM_Set_Class_Registry_PropertyA;
        pub const UpdateDriverForPlugAndPlayDevices = thismodule.UpdateDriverForPlugAndPlayDevicesA;
        pub const DiInstallDriver = thismodule.DiInstallDriverA;
        pub const DiUninstallDriver = thismodule.DiUninstallDriverA;
    },
    .wide => struct {
        pub const SP_ORIGINAL_FILE_INFO_ = thismodule.SP_ORIGINAL_FILE_INFO_W;
        pub const PSP_FILE_CALLBACK_ = thismodule.PSP_FILE_CALLBACK_W;
        pub const FILEPATHS_ = thismodule.FILEPATHS_W;
        pub const FILEPATHS_SIGNERINFO_ = thismodule.FILEPATHS_SIGNERINFO_W;
        pub const SOURCE_MEDIA_ = thismodule.SOURCE_MEDIA_W;
        pub const CABINET_INFO_ = thismodule.CABINET_INFO_W;
        pub const FILE_IN_CABINET_INFO_ = thismodule.FILE_IN_CABINET_INFO_W;
        pub const SP_REGISTER_CONTROL_STATUS = thismodule.SP_REGISTER_CONTROL_STATUSW;
        pub const SP_FILE_COPY_PARAMS_ = thismodule.SP_FILE_COPY_PARAMS_W;
        pub const SP_DEVICE_INTERFACE_DETAIL_DATA_ = thismodule.SP_DEVICE_INTERFACE_DETAIL_DATA_W;
        pub const SP_DEVINFO_LIST_DETAIL_DATA_ = thismodule.SP_DEVINFO_LIST_DETAIL_DATA_W;
        pub const SP_DEVINSTALL_PARAMS_ = thismodule.SP_DEVINSTALL_PARAMS_W;
        pub const SP_SELECTDEVICE_PARAMS_ = thismodule.SP_SELECTDEVICE_PARAMS_W;
        pub const SP_TROUBLESHOOTER_PARAMS_ = thismodule.SP_TROUBLESHOOTER_PARAMS_W;
        pub const SP_POWERMESSAGEWAKE_PARAMS_ = thismodule.SP_POWERMESSAGEWAKE_PARAMS_W;
        pub const SP_DRVINFO_DATA_V2_ = thismodule.SP_DRVINFO_DATA_V2_W;
        pub const SP_DRVINFO_DATA_V1_ = thismodule.SP_DRVINFO_DATA_V1_W;
        pub const SP_DRVINFO_DETAIL_DATA_ = thismodule.SP_DRVINFO_DETAIL_DATA_W;
        pub const SP_BACKUP_QUEUE_PARAMS_V2_ = thismodule.SP_BACKUP_QUEUE_PARAMS_V2_W;
        pub const SP_BACKUP_QUEUE_PARAMS_V1_ = thismodule.SP_BACKUP_QUEUE_PARAMS_V1_W;
        pub const SP_INF_SIGNER_INFO_V1_ = thismodule.SP_INF_SIGNER_INFO_V1_W;
        pub const SP_INF_SIGNER_INFO_V2_ = thismodule.SP_INF_SIGNER_INFO_V2_W;
        pub const CONFLICT_DETAILS_ = thismodule.CONFLICT_DETAILS_W;
        pub const HWProfileInfo_s = thismodule.HWProfileInfo_sW;
        pub const SetupGetInfInformation = thismodule.SetupGetInfInformationW;
        pub const SetupQueryInfFileInformation = thismodule.SetupQueryInfFileInformationW;
        pub const SetupQueryInfOriginalFileInformation = thismodule.SetupQueryInfOriginalFileInformationW;
        pub const SetupQueryInfVersionInformation = thismodule.SetupQueryInfVersionInformationW;
        pub const SetupGetInfDriverStoreLocation = thismodule.SetupGetInfDriverStoreLocationW;
        pub const SetupGetInfPublishedName = thismodule.SetupGetInfPublishedNameW;
        pub const SetupGetInfFileList = thismodule.SetupGetInfFileListW;
        pub const SetupOpenInfFile = thismodule.SetupOpenInfFileW;
        pub const SetupOpenAppendInfFile = thismodule.SetupOpenAppendInfFileW;
        pub const SetupFindFirstLine = thismodule.SetupFindFirstLineW;
        pub const SetupFindNextMatchLine = thismodule.SetupFindNextMatchLineW;
        pub const SetupGetLineByIndex = thismodule.SetupGetLineByIndexW;
        pub const SetupGetLineCount = thismodule.SetupGetLineCountW;
        pub const SetupGetLineText = thismodule.SetupGetLineTextW;
        pub const SetupGetStringField = thismodule.SetupGetStringFieldW;
        pub const SetupGetMultiSzField = thismodule.SetupGetMultiSzFieldW;
        pub const SetupGetFileCompressionInfo = thismodule.SetupGetFileCompressionInfoW;
        pub const SetupGetFileCompressionInfoEx = thismodule.SetupGetFileCompressionInfoExW;
        pub const SetupDecompressOrCopyFile = thismodule.SetupDecompressOrCopyFileW;
        pub const SetupGetSourceFileLocation = thismodule.SetupGetSourceFileLocationW;
        pub const SetupGetSourceFileSize = thismodule.SetupGetSourceFileSizeW;
        pub const SetupGetTargetPath = thismodule.SetupGetTargetPathW;
        pub const SetupSetSourceList = thismodule.SetupSetSourceListW;
        pub const SetupAddToSourceList = thismodule.SetupAddToSourceListW;
        pub const SetupRemoveFromSourceList = thismodule.SetupRemoveFromSourceListW;
        pub const SetupQuerySourceList = thismodule.SetupQuerySourceListW;
        pub const SetupFreeSourceList = thismodule.SetupFreeSourceListW;
        pub const SetupPromptForDisk = thismodule.SetupPromptForDiskW;
        pub const SetupCopyError = thismodule.SetupCopyErrorW;
        pub const SetupRenameError = thismodule.SetupRenameErrorW;
        pub const SetupDeleteError = thismodule.SetupDeleteErrorW;
        pub const SetupBackupError = thismodule.SetupBackupErrorW;
        pub const SetupSetDirectoryId = thismodule.SetupSetDirectoryIdW;
        pub const SetupSetDirectoryIdEx = thismodule.SetupSetDirectoryIdExW;
        pub const SetupGetSourceInfo = thismodule.SetupGetSourceInfoW;
        pub const SetupInstallFile = thismodule.SetupInstallFileW;
        pub const SetupInstallFileEx = thismodule.SetupInstallFileExW;
        pub const SetupSetFileQueueAlternatePlatform = thismodule.SetupSetFileQueueAlternatePlatformW;
        pub const SetupSetPlatformPathOverride = thismodule.SetupSetPlatformPathOverrideW;
        pub const SetupQueueCopy = thismodule.SetupQueueCopyW;
        pub const SetupQueueCopyIndirect = thismodule.SetupQueueCopyIndirectW;
        pub const SetupQueueDefaultCopy = thismodule.SetupQueueDefaultCopyW;
        pub const SetupQueueCopySection = thismodule.SetupQueueCopySectionW;
        pub const SetupQueueDelete = thismodule.SetupQueueDeleteW;
        pub const SetupQueueDeleteSection = thismodule.SetupQueueDeleteSectionW;
        pub const SetupQueueRename = thismodule.SetupQueueRenameW;
        pub const SetupQueueRenameSection = thismodule.SetupQueueRenameSectionW;
        pub const SetupCommitFileQueue = thismodule.SetupCommitFileQueueW;
        pub const SetupScanFileQueue = thismodule.SetupScanFileQueueW;
        pub const SetupCopyOEMInf = thismodule.SetupCopyOEMInfW;
        pub const SetupUninstallOEMInf = thismodule.SetupUninstallOEMInfW;
        pub const SetupCreateDiskSpaceList = thismodule.SetupCreateDiskSpaceListW;
        pub const SetupDuplicateDiskSpaceList = thismodule.SetupDuplicateDiskSpaceListW;
        pub const SetupQueryDrivesInDiskSpaceList = thismodule.SetupQueryDrivesInDiskSpaceListW;
        pub const SetupQuerySpaceRequiredOnDrive = thismodule.SetupQuerySpaceRequiredOnDriveW;
        pub const SetupAdjustDiskSpaceList = thismodule.SetupAdjustDiskSpaceListW;
        pub const SetupAddToDiskSpaceList = thismodule.SetupAddToDiskSpaceListW;
        pub const SetupAddSectionToDiskSpaceList = thismodule.SetupAddSectionToDiskSpaceListW;
        pub const SetupAddInstallSectionToDiskSpaceList = thismodule.SetupAddInstallSectionToDiskSpaceListW;
        pub const SetupRemoveFromDiskSpaceList = thismodule.SetupRemoveFromDiskSpaceListW;
        pub const SetupRemoveSectionFromDiskSpaceList = thismodule.SetupRemoveSectionFromDiskSpaceListW;
        pub const SetupRemoveInstallSectionFromDiskSpaceList = thismodule.SetupRemoveInstallSectionFromDiskSpaceListW;
        pub const SetupIterateCabinet = thismodule.SetupIterateCabinetW;
        pub const SetupDefaultQueueCallback = thismodule.SetupDefaultQueueCallbackW;
        pub const SetupInstallFromInfSection = thismodule.SetupInstallFromInfSectionW;
        pub const SetupInstallFilesFromInfSection = thismodule.SetupInstallFilesFromInfSectionW;
        pub const SetupInstallServicesFromInfSection = thismodule.SetupInstallServicesFromInfSectionW;
        pub const SetupInstallServicesFromInfSectionEx = thismodule.SetupInstallServicesFromInfSectionExW;
        pub const InstallHinfSection = thismodule.InstallHinfSectionW;
        pub const SetupInitializeFileLog = thismodule.SetupInitializeFileLogW;
        pub const SetupLogFile = thismodule.SetupLogFileW;
        pub const SetupRemoveFileLogEntry = thismodule.SetupRemoveFileLogEntryW;
        pub const SetupQueryFileLog = thismodule.SetupQueryFileLogW;
        pub const SetupLogError = thismodule.SetupLogErrorW;
        pub const SetupGetBackupInformation = thismodule.SetupGetBackupInformationW;
        pub const SetupPrepareQueueForRestore = thismodule.SetupPrepareQueueForRestoreW;
        pub const SetupDiCreateDeviceInfoListEx = thismodule.SetupDiCreateDeviceInfoListExW;
        pub const SetupDiGetDeviceInfoListDetail = thismodule.SetupDiGetDeviceInfoListDetailW;
        pub const SetupDiCreateDeviceInfo = thismodule.SetupDiCreateDeviceInfoW;
        pub const SetupDiOpenDeviceInfo = thismodule.SetupDiOpenDeviceInfoW;
        pub const SetupDiGetDeviceInstanceId = thismodule.SetupDiGetDeviceInstanceIdW;
        pub const SetupDiCreateDeviceInterface = thismodule.SetupDiCreateDeviceInterfaceW;
        pub const SetupDiOpenDeviceInterface = thismodule.SetupDiOpenDeviceInterfaceW;
        pub const SetupDiGetDeviceInterfaceDetail = thismodule.SetupDiGetDeviceInterfaceDetailW;
        pub const SetupDiEnumDriverInfo = thismodule.SetupDiEnumDriverInfoW;
        pub const SetupDiGetSelectedDriver = thismodule.SetupDiGetSelectedDriverW;
        pub const SetupDiSetSelectedDriver = thismodule.SetupDiSetSelectedDriverW;
        pub const SetupDiGetDriverInfoDetail = thismodule.SetupDiGetDriverInfoDetailW;
        pub const SetupDiGetClassDevs = thismodule.SetupDiGetClassDevsW;
        pub const SetupDiGetClassDevsEx = thismodule.SetupDiGetClassDevsExW;
        pub const SetupDiGetINFClass = thismodule.SetupDiGetINFClassW;
        pub const SetupDiBuildClassInfoListEx = thismodule.SetupDiBuildClassInfoListExW;
        pub const SetupDiGetClassDescription = thismodule.SetupDiGetClassDescriptionW;
        pub const SetupDiGetClassDescriptionEx = thismodule.SetupDiGetClassDescriptionExW;
        pub const SetupDiInstallClass = thismodule.SetupDiInstallClassW;
        pub const SetupDiInstallClassEx = thismodule.SetupDiInstallClassExW;
        pub const SetupDiOpenClassRegKeyEx = thismodule.SetupDiOpenClassRegKeyExW;
        pub const SetupDiCreateDeviceInterfaceRegKey = thismodule.SetupDiCreateDeviceInterfaceRegKeyW;
        pub const SetupDiCreateDevRegKey = thismodule.SetupDiCreateDevRegKeyW;
        pub const SetupDiGetHwProfileListEx = thismodule.SetupDiGetHwProfileListExW;
        pub const SetupDiGetDeviceRegistryProperty = thismodule.SetupDiGetDeviceRegistryPropertyW;
        pub const SetupDiGetClassRegistryProperty = thismodule.SetupDiGetClassRegistryPropertyW;
        pub const SetupDiSetDeviceRegistryProperty = thismodule.SetupDiSetDeviceRegistryPropertyW;
        pub const SetupDiSetClassRegistryProperty = thismodule.SetupDiSetClassRegistryPropertyW;
        pub const SetupDiGetDeviceInstallParams = thismodule.SetupDiGetDeviceInstallParamsW;
        pub const SetupDiGetClassInstallParams = thismodule.SetupDiGetClassInstallParamsW;
        pub const SetupDiSetDeviceInstallParams = thismodule.SetupDiSetDeviceInstallParamsW;
        pub const SetupDiSetClassInstallParams = thismodule.SetupDiSetClassInstallParamsW;
        pub const SetupDiGetDriverInstallParams = thismodule.SetupDiGetDriverInstallParamsW;
        pub const SetupDiSetDriverInstallParams = thismodule.SetupDiSetDriverInstallParamsW;
        pub const SetupDiGetClassImageListEx = thismodule.SetupDiGetClassImageListExW;
        pub const SetupDiGetClassDevPropertySheets = thismodule.SetupDiGetClassDevPropertySheetsW;
        pub const SetupDiClassNameFromGuid = thismodule.SetupDiClassNameFromGuidW;
        pub const SetupDiClassNameFromGuidEx = thismodule.SetupDiClassNameFromGuidExW;
        pub const SetupDiClassGuidsFromName = thismodule.SetupDiClassGuidsFromNameW;
        pub const SetupDiClassGuidsFromNameEx = thismodule.SetupDiClassGuidsFromNameExW;
        pub const SetupDiGetHwProfileFriendlyName = thismodule.SetupDiGetHwProfileFriendlyNameW;
        pub const SetupDiGetHwProfileFriendlyNameEx = thismodule.SetupDiGetHwProfileFriendlyNameExW;
        pub const SetupDiGetActualModelsSection = thismodule.SetupDiGetActualModelsSectionW;
        pub const SetupDiGetActualSectionToInstall = thismodule.SetupDiGetActualSectionToInstallW;
        pub const SetupDiGetActualSectionToInstallEx = thismodule.SetupDiGetActualSectionToInstallExW;
        pub const SetupEnumInfSections = thismodule.SetupEnumInfSectionsW;
        pub const SetupVerifyInfFile = thismodule.SetupVerifyInfFileW;
        pub const SetupDiGetCustomDeviceProperty = thismodule.SetupDiGetCustomDevicePropertyW;
        pub const SetupConfigureWmiFromInfSection = thismodule.SetupConfigureWmiFromInfSectionW;
        pub const CM_Add_ID = thismodule.CM_Add_IDW;
        pub const CM_Add_ID_Ex = thismodule.CM_Add_ID_ExW;
        pub const CM_Connect_Machine = thismodule.CM_Connect_MachineW;
        pub const CM_Create_DevNode = thismodule.CM_Create_DevNodeW;
        pub const CM_Create_DevNode_Ex = thismodule.CM_Create_DevNode_ExW;
        pub const CM_Enumerate_Enumerators = thismodule.CM_Enumerate_EnumeratorsW;
        pub const CM_Enumerate_Enumerators_Ex = thismodule.CM_Enumerate_Enumerators_ExW;
        pub const CM_Get_Class_Name = thismodule.CM_Get_Class_NameW;
        pub const CM_Get_Class_Name_Ex = thismodule.CM_Get_Class_Name_ExW;
        pub const CM_Get_Class_Key_Name = thismodule.CM_Get_Class_Key_NameW;
        pub const CM_Get_Class_Key_Name_Ex = thismodule.CM_Get_Class_Key_Name_ExW;
        pub const CM_Get_Device_ID = thismodule.CM_Get_Device_IDW;
        pub const CM_Get_Device_ID_Ex = thismodule.CM_Get_Device_ID_ExW;
        pub const CM_Get_Device_ID_List = thismodule.CM_Get_Device_ID_ListW;
        pub const CM_Get_Device_ID_List_Ex = thismodule.CM_Get_Device_ID_List_ExW;
        pub const CM_Get_Device_ID_List_Size = thismodule.CM_Get_Device_ID_List_SizeW;
        pub const CM_Get_Device_ID_List_Size_Ex = thismodule.CM_Get_Device_ID_List_Size_ExW;
        pub const CM_Get_DevNode_Registry_Property = thismodule.CM_Get_DevNode_Registry_PropertyW;
        pub const CM_Get_DevNode_Registry_Property_Ex = thismodule.CM_Get_DevNode_Registry_Property_ExW;
        pub const CM_Get_DevNode_Custom_Property = thismodule.CM_Get_DevNode_Custom_PropertyW;
        pub const CM_Get_DevNode_Custom_Property_Ex = thismodule.CM_Get_DevNode_Custom_Property_ExW;
        pub const CM_Get_Hardware_Profile_Info = thismodule.CM_Get_Hardware_Profile_InfoW;
        pub const CM_Get_Hardware_Profile_Info_Ex = thismodule.CM_Get_Hardware_Profile_Info_ExW;
        pub const CM_Get_HW_Prof_Flags = thismodule.CM_Get_HW_Prof_FlagsW;
        pub const CM_Get_HW_Prof_Flags_Ex = thismodule.CM_Get_HW_Prof_Flags_ExW;
        pub const CM_Get_Device_Interface_Alias = thismodule.CM_Get_Device_Interface_AliasW;
        pub const CM_Get_Device_Interface_Alias_Ex = thismodule.CM_Get_Device_Interface_Alias_ExW;
        pub const CM_Get_Device_Interface_List = thismodule.CM_Get_Device_Interface_ListW;
        pub const CM_Get_Device_Interface_List_Ex = thismodule.CM_Get_Device_Interface_List_ExW;
        pub const CM_Get_Device_Interface_List_Size = thismodule.CM_Get_Device_Interface_List_SizeW;
        pub const CM_Get_Device_Interface_List_Size_Ex = thismodule.CM_Get_Device_Interface_List_Size_ExW;
        pub const CM_Locate_DevNode = thismodule.CM_Locate_DevNodeW;
        pub const CM_Locate_DevNode_Ex = thismodule.CM_Locate_DevNode_ExW;
        pub const CM_Open_Class_Key = thismodule.CM_Open_Class_KeyW;
        pub const CM_Open_Class_Key_Ex = thismodule.CM_Open_Class_Key_ExW;
        pub const CM_Open_Device_Interface_Key = thismodule.CM_Open_Device_Interface_KeyW;
        pub const CM_Open_Device_Interface_Key_Ex = thismodule.CM_Open_Device_Interface_Key_ExW;
        pub const CM_Delete_Device_Interface_Key = thismodule.CM_Delete_Device_Interface_KeyW;
        pub const CM_Delete_Device_Interface_Key_Ex = thismodule.CM_Delete_Device_Interface_Key_ExW;
        pub const CM_Query_And_Remove_SubTree = thismodule.CM_Query_And_Remove_SubTreeW;
        pub const CM_Query_And_Remove_SubTree_Ex = thismodule.CM_Query_And_Remove_SubTree_ExW;
        pub const CM_Request_Device_Eject = thismodule.CM_Request_Device_EjectW;
        pub const CM_Request_Device_Eject_Ex = thismodule.CM_Request_Device_Eject_ExW;
        pub const CM_Register_Device_Interface = thismodule.CM_Register_Device_InterfaceW;
        pub const CM_Register_Device_Interface_Ex = thismodule.CM_Register_Device_Interface_ExW;
        pub const CM_Unregister_Device_Interface = thismodule.CM_Unregister_Device_InterfaceW;
        pub const CM_Unregister_Device_Interface_Ex = thismodule.CM_Unregister_Device_Interface_ExW;
        pub const CM_Set_DevNode_Registry_Property = thismodule.CM_Set_DevNode_Registry_PropertyW;
        pub const CM_Set_DevNode_Registry_Property_Ex = thismodule.CM_Set_DevNode_Registry_Property_ExW;
        pub const CM_Set_HW_Prof_Flags = thismodule.CM_Set_HW_Prof_FlagsW;
        pub const CM_Set_HW_Prof_Flags_Ex = thismodule.CM_Set_HW_Prof_Flags_ExW;
        pub const CM_Get_Resource_Conflict_Details = thismodule.CM_Get_Resource_Conflict_DetailsW;
        pub const CM_Get_Class_Registry_Property = thismodule.CM_Get_Class_Registry_PropertyW;
        pub const CM_Set_Class_Registry_Property = thismodule.CM_Set_Class_Registry_PropertyW;
        pub const UpdateDriverForPlugAndPlayDevices = thismodule.UpdateDriverForPlugAndPlayDevicesW;
        pub const DiInstallDriver = thismodule.DiInstallDriverW;
        pub const DiUninstallDriver = thismodule.DiUninstallDriverW;
    },
    .unspecified => if (@import("builtin").is_test) struct {
        pub const SP_ORIGINAL_FILE_INFO_ = *opaque {};
        pub const PSP_FILE_CALLBACK_ = *opaque {};
        pub const FILEPATHS_ = *opaque {};
        pub const FILEPATHS_SIGNERINFO_ = *opaque {};
        pub const SOURCE_MEDIA_ = *opaque {};
        pub const CABINET_INFO_ = *opaque {};
        pub const FILE_IN_CABINET_INFO_ = *opaque {};
        pub const SP_REGISTER_CONTROL_STATUS = *opaque {};
        pub const SP_FILE_COPY_PARAMS_ = *opaque {};
        pub const SP_DEVICE_INTERFACE_DETAIL_DATA_ = *opaque {};
        pub const SP_DEVINFO_LIST_DETAIL_DATA_ = *opaque {};
        pub const SP_DEVINSTALL_PARAMS_ = *opaque {};
        pub const SP_SELECTDEVICE_PARAMS_ = *opaque {};
        pub const SP_TROUBLESHOOTER_PARAMS_ = *opaque {};
        pub const SP_POWERMESSAGEWAKE_PARAMS_ = *opaque {};
        pub const SP_DRVINFO_DATA_V2_ = *opaque {};
        pub const SP_DRVINFO_DATA_V1_ = *opaque {};
        pub const SP_DRVINFO_DETAIL_DATA_ = *opaque {};
        pub const SP_BACKUP_QUEUE_PARAMS_V2_ = *opaque {};
        pub const SP_BACKUP_QUEUE_PARAMS_V1_ = *opaque {};
        pub const SP_INF_SIGNER_INFO_V1_ = *opaque {};
        pub const SP_INF_SIGNER_INFO_V2_ = *opaque {};
        pub const CONFLICT_DETAILS_ = *opaque {};
        pub const HWProfileInfo_s = *opaque {};
        pub const SetupGetInfInformation = *opaque {};
        pub const SetupQueryInfFileInformation = *opaque {};
        pub const SetupQueryInfOriginalFileInformation = *opaque {};
        pub const SetupQueryInfVersionInformation = *opaque {};
        pub const SetupGetInfDriverStoreLocation = *opaque {};
        pub const SetupGetInfPublishedName = *opaque {};
        pub const SetupGetInfFileList = *opaque {};
        pub const SetupOpenInfFile = *opaque {};
        pub const SetupOpenAppendInfFile = *opaque {};
        pub const SetupFindFirstLine = *opaque {};
        pub const SetupFindNextMatchLine = *opaque {};
        pub const SetupGetLineByIndex = *opaque {};
        pub const SetupGetLineCount = *opaque {};
        pub const SetupGetLineText = *opaque {};
        pub const SetupGetStringField = *opaque {};
        pub const SetupGetMultiSzField = *opaque {};
        pub const SetupGetFileCompressionInfo = *opaque {};
        pub const SetupGetFileCompressionInfoEx = *opaque {};
        pub const SetupDecompressOrCopyFile = *opaque {};
        pub const SetupGetSourceFileLocation = *opaque {};
        pub const SetupGetSourceFileSize = *opaque {};
        pub const SetupGetTargetPath = *opaque {};
        pub const SetupSetSourceList = *opaque {};
        pub const SetupAddToSourceList = *opaque {};
        pub const SetupRemoveFromSourceList = *opaque {};
        pub const SetupQuerySourceList = *opaque {};
        pub const SetupFreeSourceList = *opaque {};
        pub const SetupPromptForDisk = *opaque {};
        pub const SetupCopyError = *opaque {};
        pub const SetupRenameError = *opaque {};
        pub const SetupDeleteError = *opaque {};
        pub const SetupBackupError = *opaque {};
        pub const SetupSetDirectoryId = *opaque {};
        pub const SetupSetDirectoryIdEx = *opaque {};
        pub const SetupGetSourceInfo = *opaque {};
        pub const SetupInstallFile = *opaque {};
        pub const SetupInstallFileEx = *opaque {};
        pub const SetupSetFileQueueAlternatePlatform = *opaque {};
        pub const SetupSetPlatformPathOverride = *opaque {};
        pub const SetupQueueCopy = *opaque {};
        pub const SetupQueueCopyIndirect = *opaque {};
        pub const SetupQueueDefaultCopy = *opaque {};
        pub const SetupQueueCopySection = *opaque {};
        pub const SetupQueueDelete = *opaque {};
        pub const SetupQueueDeleteSection = *opaque {};
        pub const SetupQueueRename = *opaque {};
        pub const SetupQueueRenameSection = *opaque {};
        pub const SetupCommitFileQueue = *opaque {};
        pub const SetupScanFileQueue = *opaque {};
        pub const SetupCopyOEMInf = *opaque {};
        pub const SetupUninstallOEMInf = *opaque {};
        pub const SetupCreateDiskSpaceList = *opaque {};
        pub const SetupDuplicateDiskSpaceList = *opaque {};
        pub const SetupQueryDrivesInDiskSpaceList = *opaque {};
        pub const SetupQuerySpaceRequiredOnDrive = *opaque {};
        pub const SetupAdjustDiskSpaceList = *opaque {};
        pub const SetupAddToDiskSpaceList = *opaque {};
        pub const SetupAddSectionToDiskSpaceList = *opaque {};
        pub const SetupAddInstallSectionToDiskSpaceList = *opaque {};
        pub const SetupRemoveFromDiskSpaceList = *opaque {};
        pub const SetupRemoveSectionFromDiskSpaceList = *opaque {};
        pub const SetupRemoveInstallSectionFromDiskSpaceList = *opaque {};
        pub const SetupIterateCabinet = *opaque {};
        pub const SetupDefaultQueueCallback = *opaque {};
        pub const SetupInstallFromInfSection = *opaque {};
        pub const SetupInstallFilesFromInfSection = *opaque {};
        pub const SetupInstallServicesFromInfSection = *opaque {};
        pub const SetupInstallServicesFromInfSectionEx = *opaque {};
        pub const InstallHinfSection = *opaque {};
        pub const SetupInitializeFileLog = *opaque {};
        pub const SetupLogFile = *opaque {};
        pub const SetupRemoveFileLogEntry = *opaque {};
        pub const SetupQueryFileLog = *opaque {};
        pub const SetupLogError = *opaque {};
        pub const SetupGetBackupInformation = *opaque {};
        pub const SetupPrepareQueueForRestore = *opaque {};
        pub const SetupDiCreateDeviceInfoListEx = *opaque {};
        pub const SetupDiGetDeviceInfoListDetail = *opaque {};
        pub const SetupDiCreateDeviceInfo = *opaque {};
        pub const SetupDiOpenDeviceInfo = *opaque {};
        pub const SetupDiGetDeviceInstanceId = *opaque {};
        pub const SetupDiCreateDeviceInterface = *opaque {};
        pub const SetupDiOpenDeviceInterface = *opaque {};
        pub const SetupDiGetDeviceInterfaceDetail = *opaque {};
        pub const SetupDiEnumDriverInfo = *opaque {};
        pub const SetupDiGetSelectedDriver = *opaque {};
        pub const SetupDiSetSelectedDriver = *opaque {};
        pub const SetupDiGetDriverInfoDetail = *opaque {};
        pub const SetupDiGetClassDevs = *opaque {};
        pub const SetupDiGetClassDevsEx = *opaque {};
        pub const SetupDiGetINFClass = *opaque {};
        pub const SetupDiBuildClassInfoListEx = *opaque {};
        pub const SetupDiGetClassDescription = *opaque {};
        pub const SetupDiGetClassDescriptionEx = *opaque {};
        pub const SetupDiInstallClass = *opaque {};
        pub const SetupDiInstallClassEx = *opaque {};
        pub const SetupDiOpenClassRegKeyEx = *opaque {};
        pub const SetupDiCreateDeviceInterfaceRegKey = *opaque {};
        pub const SetupDiCreateDevRegKey = *opaque {};
        pub const SetupDiGetHwProfileListEx = *opaque {};
        pub const SetupDiGetDeviceRegistryProperty = *opaque {};
        pub const SetupDiGetClassRegistryProperty = *opaque {};
        pub const SetupDiSetDeviceRegistryProperty = *opaque {};
        pub const SetupDiSetClassRegistryProperty = *opaque {};
        pub const SetupDiGetDeviceInstallParams = *opaque {};
        pub const SetupDiGetClassInstallParams = *opaque {};
        pub const SetupDiSetDeviceInstallParams = *opaque {};
        pub const SetupDiSetClassInstallParams = *opaque {};
        pub const SetupDiGetDriverInstallParams = *opaque {};
        pub const SetupDiSetDriverInstallParams = *opaque {};
        pub const SetupDiGetClassImageListEx = *opaque {};
        pub const SetupDiGetClassDevPropertySheets = *opaque {};
        pub const SetupDiClassNameFromGuid = *opaque {};
        pub const SetupDiClassNameFromGuidEx = *opaque {};
        pub const SetupDiClassGuidsFromName = *opaque {};
        pub const SetupDiClassGuidsFromNameEx = *opaque {};
        pub const SetupDiGetHwProfileFriendlyName = *opaque {};
        pub const SetupDiGetHwProfileFriendlyNameEx = *opaque {};
        pub const SetupDiGetActualModelsSection = *opaque {};
        pub const SetupDiGetActualSectionToInstall = *opaque {};
        pub const SetupDiGetActualSectionToInstallEx = *opaque {};
        pub const SetupEnumInfSections = *opaque {};
        pub const SetupVerifyInfFile = *opaque {};
        pub const SetupDiGetCustomDeviceProperty = *opaque {};
        pub const SetupConfigureWmiFromInfSection = *opaque {};
        pub const CM_Add_ID = *opaque {};
        pub const CM_Add_ID_Ex = *opaque {};
        pub const CM_Connect_Machine = *opaque {};
        pub const CM_Create_DevNode = *opaque {};
        pub const CM_Create_DevNode_Ex = *opaque {};
        pub const CM_Enumerate_Enumerators = *opaque {};
        pub const CM_Enumerate_Enumerators_Ex = *opaque {};
        pub const CM_Get_Class_Name = *opaque {};
        pub const CM_Get_Class_Name_Ex = *opaque {};
        pub const CM_Get_Class_Key_Name = *opaque {};
        pub const CM_Get_Class_Key_Name_Ex = *opaque {};
        pub const CM_Get_Device_ID = *opaque {};
        pub const CM_Get_Device_ID_Ex = *opaque {};
        pub const CM_Get_Device_ID_List = *opaque {};
        pub const CM_Get_Device_ID_List_Ex = *opaque {};
        pub const CM_Get_Device_ID_List_Size = *opaque {};
        pub const CM_Get_Device_ID_List_Size_Ex = *opaque {};
        pub const CM_Get_DevNode_Registry_Property = *opaque {};
        pub const CM_Get_DevNode_Registry_Property_Ex = *opaque {};
        pub const CM_Get_DevNode_Custom_Property = *opaque {};
        pub const CM_Get_DevNode_Custom_Property_Ex = *opaque {};
        pub const CM_Get_Hardware_Profile_Info = *opaque {};
        pub const CM_Get_Hardware_Profile_Info_Ex = *opaque {};
        pub const CM_Get_HW_Prof_Flags = *opaque {};
        pub const CM_Get_HW_Prof_Flags_Ex = *opaque {};
        pub const CM_Get_Device_Interface_Alias = *opaque {};
        pub const CM_Get_Device_Interface_Alias_Ex = *opaque {};
        pub const CM_Get_Device_Interface_List = *opaque {};
        pub const CM_Get_Device_Interface_List_Ex = *opaque {};
        pub const CM_Get_Device_Interface_List_Size = *opaque {};
        pub const CM_Get_Device_Interface_List_Size_Ex = *opaque {};
        pub const CM_Locate_DevNode = *opaque {};
        pub const CM_Locate_DevNode_Ex = *opaque {};
        pub const CM_Open_Class_Key = *opaque {};
        pub const CM_Open_Class_Key_Ex = *opaque {};
        pub const CM_Open_Device_Interface_Key = *opaque {};
        pub const CM_Open_Device_Interface_Key_Ex = *opaque {};
        pub const CM_Delete_Device_Interface_Key = *opaque {};
        pub const CM_Delete_Device_Interface_Key_Ex = *opaque {};
        pub const CM_Query_And_Remove_SubTree = *opaque {};
        pub const CM_Query_And_Remove_SubTree_Ex = *opaque {};
        pub const CM_Request_Device_Eject = *opaque {};
        pub const CM_Request_Device_Eject_Ex = *opaque {};
        pub const CM_Register_Device_Interface = *opaque {};
        pub const CM_Register_Device_Interface_Ex = *opaque {};
        pub const CM_Unregister_Device_Interface = *opaque {};
        pub const CM_Unregister_Device_Interface_Ex = *opaque {};
        pub const CM_Set_DevNode_Registry_Property = *opaque {};
        pub const CM_Set_DevNode_Registry_Property_Ex = *opaque {};
        pub const CM_Set_HW_Prof_Flags = *opaque {};
        pub const CM_Set_HW_Prof_Flags_Ex = *opaque {};
        pub const CM_Get_Resource_Conflict_Details = *opaque {};
        pub const CM_Get_Class_Registry_Property = *opaque {};
        pub const CM_Set_Class_Registry_Property = *opaque {};
        pub const UpdateDriverForPlugAndPlayDevices = *opaque {};
        pub const DiInstallDriver = *opaque {};
        pub const DiUninstallDriver = *opaque {};
    } else struct {
        pub const SP_ORIGINAL_FILE_INFO_ = @compileError("'SP_ORIGINAL_FILE_INFO_' requires that UNICODE be set to true or false in the root module");
        pub const PSP_FILE_CALLBACK_ = @compileError("'PSP_FILE_CALLBACK_' requires that UNICODE be set to true or false in the root module");
        pub const FILEPATHS_ = @compileError("'FILEPATHS_' requires that UNICODE be set to true or false in the root module");
        pub const FILEPATHS_SIGNERINFO_ = @compileError("'FILEPATHS_SIGNERINFO_' requires that UNICODE be set to true or false in the root module");
        pub const SOURCE_MEDIA_ = @compileError("'SOURCE_MEDIA_' requires that UNICODE be set to true or false in the root module");
        pub const CABINET_INFO_ = @compileError("'CABINET_INFO_' requires that UNICODE be set to true or false in the root module");
        pub const FILE_IN_CABINET_INFO_ = @compileError("'FILE_IN_CABINET_INFO_' requires that UNICODE be set to true or false in the root module");
        pub const SP_REGISTER_CONTROL_STATUS = @compileError("'SP_REGISTER_CONTROL_STATUS' requires that UNICODE be set to true or false in the root module");
        pub const SP_FILE_COPY_PARAMS_ = @compileError("'SP_FILE_COPY_PARAMS_' requires that UNICODE be set to true or false in the root module");
        pub const SP_DEVICE_INTERFACE_DETAIL_DATA_ = @compileError("'SP_DEVICE_INTERFACE_DETAIL_DATA_' requires that UNICODE be set to true or false in the root module");
        pub const SP_DEVINFO_LIST_DETAIL_DATA_ = @compileError("'SP_DEVINFO_LIST_DETAIL_DATA_' requires that UNICODE be set to true or false in the root module");
        pub const SP_DEVINSTALL_PARAMS_ = @compileError("'SP_DEVINSTALL_PARAMS_' requires that UNICODE be set to true or false in the root module");
        pub const SP_SELECTDEVICE_PARAMS_ = @compileError("'SP_SELECTDEVICE_PARAMS_' requires that UNICODE be set to true or false in the root module");
        pub const SP_TROUBLESHOOTER_PARAMS_ = @compileError("'SP_TROUBLESHOOTER_PARAMS_' requires that UNICODE be set to true or false in the root module");
        pub const SP_POWERMESSAGEWAKE_PARAMS_ = @compileError("'SP_POWERMESSAGEWAKE_PARAMS_' requires that UNICODE be set to true or false in the root module");
        pub const SP_DRVINFO_DATA_V2_ = @compileError("'SP_DRVINFO_DATA_V2_' requires that UNICODE be set to true or false in the root module");
        pub const SP_DRVINFO_DATA_V1_ = @compileError("'SP_DRVINFO_DATA_V1_' requires that UNICODE be set to true or false in the root module");
        pub const SP_DRVINFO_DETAIL_DATA_ = @compileError("'SP_DRVINFO_DETAIL_DATA_' requires that UNICODE be set to true or false in the root module");
        pub const SP_BACKUP_QUEUE_PARAMS_V2_ = @compileError("'SP_BACKUP_QUEUE_PARAMS_V2_' requires that UNICODE be set to true or false in the root module");
        pub const SP_BACKUP_QUEUE_PARAMS_V1_ = @compileError("'SP_BACKUP_QUEUE_PARAMS_V1_' requires that UNICODE be set to true or false in the root module");
        pub const SP_INF_SIGNER_INFO_V1_ = @compileError("'SP_INF_SIGNER_INFO_V1_' requires that UNICODE be set to true or false in the root module");
        pub const SP_INF_SIGNER_INFO_V2_ = @compileError("'SP_INF_SIGNER_INFO_V2_' requires that UNICODE be set to true or false in the root module");
        pub const CONFLICT_DETAILS_ = @compileError("'CONFLICT_DETAILS_' requires that UNICODE be set to true or false in the root module");
        pub const HWProfileInfo_s = @compileError("'HWProfileInfo_s' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetInfInformation = @compileError("'SetupGetInfInformation' requires that UNICODE be set to true or false in the root module");
        pub const SetupQueryInfFileInformation = @compileError("'SetupQueryInfFileInformation' requires that UNICODE be set to true or false in the root module");
        pub const SetupQueryInfOriginalFileInformation = @compileError("'SetupQueryInfOriginalFileInformation' requires that UNICODE be set to true or false in the root module");
        pub const SetupQueryInfVersionInformation = @compileError("'SetupQueryInfVersionInformation' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetInfDriverStoreLocation = @compileError("'SetupGetInfDriverStoreLocation' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetInfPublishedName = @compileError("'SetupGetInfPublishedName' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetInfFileList = @compileError("'SetupGetInfFileList' requires that UNICODE be set to true or false in the root module");
        pub const SetupOpenInfFile = @compileError("'SetupOpenInfFile' requires that UNICODE be set to true or false in the root module");
        pub const SetupOpenAppendInfFile = @compileError("'SetupOpenAppendInfFile' requires that UNICODE be set to true or false in the root module");
        pub const SetupFindFirstLine = @compileError("'SetupFindFirstLine' requires that UNICODE be set to true or false in the root module");
        pub const SetupFindNextMatchLine = @compileError("'SetupFindNextMatchLine' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetLineByIndex = @compileError("'SetupGetLineByIndex' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetLineCount = @compileError("'SetupGetLineCount' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetLineText = @compileError("'SetupGetLineText' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetStringField = @compileError("'SetupGetStringField' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetMultiSzField = @compileError("'SetupGetMultiSzField' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetFileCompressionInfo = @compileError("'SetupGetFileCompressionInfo' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetFileCompressionInfoEx = @compileError("'SetupGetFileCompressionInfoEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupDecompressOrCopyFile = @compileError("'SetupDecompressOrCopyFile' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetSourceFileLocation = @compileError("'SetupGetSourceFileLocation' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetSourceFileSize = @compileError("'SetupGetSourceFileSize' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetTargetPath = @compileError("'SetupGetTargetPath' requires that UNICODE be set to true or false in the root module");
        pub const SetupSetSourceList = @compileError("'SetupSetSourceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupAddToSourceList = @compileError("'SetupAddToSourceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupRemoveFromSourceList = @compileError("'SetupRemoveFromSourceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupQuerySourceList = @compileError("'SetupQuerySourceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupFreeSourceList = @compileError("'SetupFreeSourceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupPromptForDisk = @compileError("'SetupPromptForDisk' requires that UNICODE be set to true or false in the root module");
        pub const SetupCopyError = @compileError("'SetupCopyError' requires that UNICODE be set to true or false in the root module");
        pub const SetupRenameError = @compileError("'SetupRenameError' requires that UNICODE be set to true or false in the root module");
        pub const SetupDeleteError = @compileError("'SetupDeleteError' requires that UNICODE be set to true or false in the root module");
        pub const SetupBackupError = @compileError("'SetupBackupError' requires that UNICODE be set to true or false in the root module");
        pub const SetupSetDirectoryId = @compileError("'SetupSetDirectoryId' requires that UNICODE be set to true or false in the root module");
        pub const SetupSetDirectoryIdEx = @compileError("'SetupSetDirectoryIdEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetSourceInfo = @compileError("'SetupGetSourceInfo' requires that UNICODE be set to true or false in the root module");
        pub const SetupInstallFile = @compileError("'SetupInstallFile' requires that UNICODE be set to true or false in the root module");
        pub const SetupInstallFileEx = @compileError("'SetupInstallFileEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupSetFileQueueAlternatePlatform = @compileError("'SetupSetFileQueueAlternatePlatform' requires that UNICODE be set to true or false in the root module");
        pub const SetupSetPlatformPathOverride = @compileError("'SetupSetPlatformPathOverride' requires that UNICODE be set to true or false in the root module");
        pub const SetupQueueCopy = @compileError("'SetupQueueCopy' requires that UNICODE be set to true or false in the root module");
        pub const SetupQueueCopyIndirect = @compileError("'SetupQueueCopyIndirect' requires that UNICODE be set to true or false in the root module");
        pub const SetupQueueDefaultCopy = @compileError("'SetupQueueDefaultCopy' requires that UNICODE be set to true or false in the root module");
        pub const SetupQueueCopySection = @compileError("'SetupQueueCopySection' requires that UNICODE be set to true or false in the root module");
        pub const SetupQueueDelete = @compileError("'SetupQueueDelete' requires that UNICODE be set to true or false in the root module");
        pub const SetupQueueDeleteSection = @compileError("'SetupQueueDeleteSection' requires that UNICODE be set to true or false in the root module");
        pub const SetupQueueRename = @compileError("'SetupQueueRename' requires that UNICODE be set to true or false in the root module");
        pub const SetupQueueRenameSection = @compileError("'SetupQueueRenameSection' requires that UNICODE be set to true or false in the root module");
        pub const SetupCommitFileQueue = @compileError("'SetupCommitFileQueue' requires that UNICODE be set to true or false in the root module");
        pub const SetupScanFileQueue = @compileError("'SetupScanFileQueue' requires that UNICODE be set to true or false in the root module");
        pub const SetupCopyOEMInf = @compileError("'SetupCopyOEMInf' requires that UNICODE be set to true or false in the root module");
        pub const SetupUninstallOEMInf = @compileError("'SetupUninstallOEMInf' requires that UNICODE be set to true or false in the root module");
        pub const SetupCreateDiskSpaceList = @compileError("'SetupCreateDiskSpaceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupDuplicateDiskSpaceList = @compileError("'SetupDuplicateDiskSpaceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupQueryDrivesInDiskSpaceList = @compileError("'SetupQueryDrivesInDiskSpaceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupQuerySpaceRequiredOnDrive = @compileError("'SetupQuerySpaceRequiredOnDrive' requires that UNICODE be set to true or false in the root module");
        pub const SetupAdjustDiskSpaceList = @compileError("'SetupAdjustDiskSpaceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupAddToDiskSpaceList = @compileError("'SetupAddToDiskSpaceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupAddSectionToDiskSpaceList = @compileError("'SetupAddSectionToDiskSpaceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupAddInstallSectionToDiskSpaceList = @compileError("'SetupAddInstallSectionToDiskSpaceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupRemoveFromDiskSpaceList = @compileError("'SetupRemoveFromDiskSpaceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupRemoveSectionFromDiskSpaceList = @compileError("'SetupRemoveSectionFromDiskSpaceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupRemoveInstallSectionFromDiskSpaceList = @compileError("'SetupRemoveInstallSectionFromDiskSpaceList' requires that UNICODE be set to true or false in the root module");
        pub const SetupIterateCabinet = @compileError("'SetupIterateCabinet' requires that UNICODE be set to true or false in the root module");
        pub const SetupDefaultQueueCallback = @compileError("'SetupDefaultQueueCallback' requires that UNICODE be set to true or false in the root module");
        pub const SetupInstallFromInfSection = @compileError("'SetupInstallFromInfSection' requires that UNICODE be set to true or false in the root module");
        pub const SetupInstallFilesFromInfSection = @compileError("'SetupInstallFilesFromInfSection' requires that UNICODE be set to true or false in the root module");
        pub const SetupInstallServicesFromInfSection = @compileError("'SetupInstallServicesFromInfSection' requires that UNICODE be set to true or false in the root module");
        pub const SetupInstallServicesFromInfSectionEx = @compileError("'SetupInstallServicesFromInfSectionEx' requires that UNICODE be set to true or false in the root module");
        pub const InstallHinfSection = @compileError("'InstallHinfSection' requires that UNICODE be set to true or false in the root module");
        pub const SetupInitializeFileLog = @compileError("'SetupInitializeFileLog' requires that UNICODE be set to true or false in the root module");
        pub const SetupLogFile = @compileError("'SetupLogFile' requires that UNICODE be set to true or false in the root module");
        pub const SetupRemoveFileLogEntry = @compileError("'SetupRemoveFileLogEntry' requires that UNICODE be set to true or false in the root module");
        pub const SetupQueryFileLog = @compileError("'SetupQueryFileLog' requires that UNICODE be set to true or false in the root module");
        pub const SetupLogError = @compileError("'SetupLogError' requires that UNICODE be set to true or false in the root module");
        pub const SetupGetBackupInformation = @compileError("'SetupGetBackupInformation' requires that UNICODE be set to true or false in the root module");
        pub const SetupPrepareQueueForRestore = @compileError("'SetupPrepareQueueForRestore' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiCreateDeviceInfoListEx = @compileError("'SetupDiCreateDeviceInfoListEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetDeviceInfoListDetail = @compileError("'SetupDiGetDeviceInfoListDetail' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiCreateDeviceInfo = @compileError("'SetupDiCreateDeviceInfo' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiOpenDeviceInfo = @compileError("'SetupDiOpenDeviceInfo' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetDeviceInstanceId = @compileError("'SetupDiGetDeviceInstanceId' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiCreateDeviceInterface = @compileError("'SetupDiCreateDeviceInterface' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiOpenDeviceInterface = @compileError("'SetupDiOpenDeviceInterface' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetDeviceInterfaceDetail = @compileError("'SetupDiGetDeviceInterfaceDetail' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiEnumDriverInfo = @compileError("'SetupDiEnumDriverInfo' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetSelectedDriver = @compileError("'SetupDiGetSelectedDriver' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiSetSelectedDriver = @compileError("'SetupDiSetSelectedDriver' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetDriverInfoDetail = @compileError("'SetupDiGetDriverInfoDetail' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetClassDevs = @compileError("'SetupDiGetClassDevs' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetClassDevsEx = @compileError("'SetupDiGetClassDevsEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetINFClass = @compileError("'SetupDiGetINFClass' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiBuildClassInfoListEx = @compileError("'SetupDiBuildClassInfoListEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetClassDescription = @compileError("'SetupDiGetClassDescription' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetClassDescriptionEx = @compileError("'SetupDiGetClassDescriptionEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiInstallClass = @compileError("'SetupDiInstallClass' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiInstallClassEx = @compileError("'SetupDiInstallClassEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiOpenClassRegKeyEx = @compileError("'SetupDiOpenClassRegKeyEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiCreateDeviceInterfaceRegKey = @compileError("'SetupDiCreateDeviceInterfaceRegKey' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiCreateDevRegKey = @compileError("'SetupDiCreateDevRegKey' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetHwProfileListEx = @compileError("'SetupDiGetHwProfileListEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetDeviceRegistryProperty = @compileError("'SetupDiGetDeviceRegistryProperty' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetClassRegistryProperty = @compileError("'SetupDiGetClassRegistryProperty' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiSetDeviceRegistryProperty = @compileError("'SetupDiSetDeviceRegistryProperty' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiSetClassRegistryProperty = @compileError("'SetupDiSetClassRegistryProperty' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetDeviceInstallParams = @compileError("'SetupDiGetDeviceInstallParams' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetClassInstallParams = @compileError("'SetupDiGetClassInstallParams' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiSetDeviceInstallParams = @compileError("'SetupDiSetDeviceInstallParams' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiSetClassInstallParams = @compileError("'SetupDiSetClassInstallParams' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetDriverInstallParams = @compileError("'SetupDiGetDriverInstallParams' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiSetDriverInstallParams = @compileError("'SetupDiSetDriverInstallParams' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetClassImageListEx = @compileError("'SetupDiGetClassImageListEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetClassDevPropertySheets = @compileError("'SetupDiGetClassDevPropertySheets' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiClassNameFromGuid = @compileError("'SetupDiClassNameFromGuid' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiClassNameFromGuidEx = @compileError("'SetupDiClassNameFromGuidEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiClassGuidsFromName = @compileError("'SetupDiClassGuidsFromName' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiClassGuidsFromNameEx = @compileError("'SetupDiClassGuidsFromNameEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetHwProfileFriendlyName = @compileError("'SetupDiGetHwProfileFriendlyName' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetHwProfileFriendlyNameEx = @compileError("'SetupDiGetHwProfileFriendlyNameEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetActualModelsSection = @compileError("'SetupDiGetActualModelsSection' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetActualSectionToInstall = @compileError("'SetupDiGetActualSectionToInstall' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetActualSectionToInstallEx = @compileError("'SetupDiGetActualSectionToInstallEx' requires that UNICODE be set to true or false in the root module");
        pub const SetupEnumInfSections = @compileError("'SetupEnumInfSections' requires that UNICODE be set to true or false in the root module");
        pub const SetupVerifyInfFile = @compileError("'SetupVerifyInfFile' requires that UNICODE be set to true or false in the root module");
        pub const SetupDiGetCustomDeviceProperty = @compileError("'SetupDiGetCustomDeviceProperty' requires that UNICODE be set to true or false in the root module");
        pub const SetupConfigureWmiFromInfSection = @compileError("'SetupConfigureWmiFromInfSection' requires that UNICODE be set to true or false in the root module");
        pub const CM_Add_ID = @compileError("'CM_Add_ID' requires that UNICODE be set to true or false in the root module");
        pub const CM_Add_ID_Ex = @compileError("'CM_Add_ID_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Connect_Machine = @compileError("'CM_Connect_Machine' requires that UNICODE be set to true or false in the root module");
        pub const CM_Create_DevNode = @compileError("'CM_Create_DevNode' requires that UNICODE be set to true or false in the root module");
        pub const CM_Create_DevNode_Ex = @compileError("'CM_Create_DevNode_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Enumerate_Enumerators = @compileError("'CM_Enumerate_Enumerators' requires that UNICODE be set to true or false in the root module");
        pub const CM_Enumerate_Enumerators_Ex = @compileError("'CM_Enumerate_Enumerators_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Class_Name = @compileError("'CM_Get_Class_Name' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Class_Name_Ex = @compileError("'CM_Get_Class_Name_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Class_Key_Name = @compileError("'CM_Get_Class_Key_Name' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Class_Key_Name_Ex = @compileError("'CM_Get_Class_Key_Name_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Device_ID = @compileError("'CM_Get_Device_ID' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Device_ID_Ex = @compileError("'CM_Get_Device_ID_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Device_ID_List = @compileError("'CM_Get_Device_ID_List' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Device_ID_List_Ex = @compileError("'CM_Get_Device_ID_List_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Device_ID_List_Size = @compileError("'CM_Get_Device_ID_List_Size' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Device_ID_List_Size_Ex = @compileError("'CM_Get_Device_ID_List_Size_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_DevNode_Registry_Property = @compileError("'CM_Get_DevNode_Registry_Property' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_DevNode_Registry_Property_Ex = @compileError("'CM_Get_DevNode_Registry_Property_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_DevNode_Custom_Property = @compileError("'CM_Get_DevNode_Custom_Property' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_DevNode_Custom_Property_Ex = @compileError("'CM_Get_DevNode_Custom_Property_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Hardware_Profile_Info = @compileError("'CM_Get_Hardware_Profile_Info' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Hardware_Profile_Info_Ex = @compileError("'CM_Get_Hardware_Profile_Info_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_HW_Prof_Flags = @compileError("'CM_Get_HW_Prof_Flags' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_HW_Prof_Flags_Ex = @compileError("'CM_Get_HW_Prof_Flags_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Device_Interface_Alias = @compileError("'CM_Get_Device_Interface_Alias' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Device_Interface_Alias_Ex = @compileError("'CM_Get_Device_Interface_Alias_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Device_Interface_List = @compileError("'CM_Get_Device_Interface_List' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Device_Interface_List_Ex = @compileError("'CM_Get_Device_Interface_List_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Device_Interface_List_Size = @compileError("'CM_Get_Device_Interface_List_Size' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Device_Interface_List_Size_Ex = @compileError("'CM_Get_Device_Interface_List_Size_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Locate_DevNode = @compileError("'CM_Locate_DevNode' requires that UNICODE be set to true or false in the root module");
        pub const CM_Locate_DevNode_Ex = @compileError("'CM_Locate_DevNode_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Open_Class_Key = @compileError("'CM_Open_Class_Key' requires that UNICODE be set to true or false in the root module");
        pub const CM_Open_Class_Key_Ex = @compileError("'CM_Open_Class_Key_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Open_Device_Interface_Key = @compileError("'CM_Open_Device_Interface_Key' requires that UNICODE be set to true or false in the root module");
        pub const CM_Open_Device_Interface_Key_Ex = @compileError("'CM_Open_Device_Interface_Key_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Delete_Device_Interface_Key = @compileError("'CM_Delete_Device_Interface_Key' requires that UNICODE be set to true or false in the root module");
        pub const CM_Delete_Device_Interface_Key_Ex = @compileError("'CM_Delete_Device_Interface_Key_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Query_And_Remove_SubTree = @compileError("'CM_Query_And_Remove_SubTree' requires that UNICODE be set to true or false in the root module");
        pub const CM_Query_And_Remove_SubTree_Ex = @compileError("'CM_Query_And_Remove_SubTree_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Request_Device_Eject = @compileError("'CM_Request_Device_Eject' requires that UNICODE be set to true or false in the root module");
        pub const CM_Request_Device_Eject_Ex = @compileError("'CM_Request_Device_Eject_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Register_Device_Interface = @compileError("'CM_Register_Device_Interface' requires that UNICODE be set to true or false in the root module");
        pub const CM_Register_Device_Interface_Ex = @compileError("'CM_Register_Device_Interface_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Unregister_Device_Interface = @compileError("'CM_Unregister_Device_Interface' requires that UNICODE be set to true or false in the root module");
        pub const CM_Unregister_Device_Interface_Ex = @compileError("'CM_Unregister_Device_Interface_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Set_DevNode_Registry_Property = @compileError("'CM_Set_DevNode_Registry_Property' requires that UNICODE be set to true or false in the root module");
        pub const CM_Set_DevNode_Registry_Property_Ex = @compileError("'CM_Set_DevNode_Registry_Property_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Set_HW_Prof_Flags = @compileError("'CM_Set_HW_Prof_Flags' requires that UNICODE be set to true or false in the root module");
        pub const CM_Set_HW_Prof_Flags_Ex = @compileError("'CM_Set_HW_Prof_Flags_Ex' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Resource_Conflict_Details = @compileError("'CM_Get_Resource_Conflict_Details' requires that UNICODE be set to true or false in the root module");
        pub const CM_Get_Class_Registry_Property = @compileError("'CM_Get_Class_Registry_Property' requires that UNICODE be set to true or false in the root module");
        pub const CM_Set_Class_Registry_Property = @compileError("'CM_Set_Class_Registry_Property' requires that UNICODE be set to true or false in the root module");
        pub const UpdateDriverForPlugAndPlayDevices = @compileError("'UpdateDriverForPlugAndPlayDevices' requires that UNICODE be set to true or false in the root module");
        pub const DiInstallDriver = @compileError("'DiInstallDriver' requires that UNICODE be set to true or false in the root module");
        pub const DiUninstallDriver = @compileError("'DiUninstallDriver' requires that UNICODE be set to true or false in the root module");
    },
};
//--------------------------------------------------------------------------------
// Section: Imports (22)
//--------------------------------------------------------------------------------
const Guid = @import("../zig.zig").Guid;
const BOOL = @import("../foundation.zig").BOOL;
const CHAR = @import("../foundation.zig").CHAR;
const DEVPROPKEY = @import("../devices/properties.zig").DEVPROPKEY;
const FILETIME = @import("../foundation.zig").FILETIME;
const HANDLE = @import("../foundation.zig").HANDLE;
const HDC = @import("../graphics/gdi.zig").HDC;
const HICON = @import("../ui/windows_and_messaging.zig").HICON;
const HIMAGELIST = @import("../ui/controls.zig").HIMAGELIST;
const HINSTANCE = @import("../foundation.zig").HINSTANCE;
const HKEY = @import("../system/registry.zig").HKEY;
const HPROPSHEETPAGE = @import("../ui/controls.zig").HPROPSHEETPAGE;
const HWND = @import("../foundation.zig").HWND;
const LARGE_INTEGER = @import("../foundation.zig").LARGE_INTEGER;
const LPARAM = @import("../foundation.zig").LPARAM;
const PRIORITY = @import("../data/html_help.zig").PRIORITY;
const PROPSHEETHEADERA_V2 = @import("../ui/controls.zig").PROPSHEETHEADERA_V2;
const PROPSHEETHEADERW_V2 = @import("../ui/controls.zig").PROPSHEETHEADERW_V2;
const PSTR = @import("../foundation.zig").PSTR;
const PWSTR = @import("../foundation.zig").PWSTR;
const RECT = @import("../foundation.zig").RECT;
const VER_PLATFORM = @import("../system/diagnostics/debug.zig").VER_PLATFORM;

test {
    // The following '_ = <FuncPtrType>' lines are a workaround for https://github.com/ziglang/zig/issues/4476
    if (@hasDecl(@This(), "PSP_FILE_CALLBACK_A")) {
        _ = PSP_FILE_CALLBACK_A;
    }
    if (@hasDecl(@This(), "PSP_FILE_CALLBACK_W")) {
        _ = PSP_FILE_CALLBACK_W;
    }
    if (@hasDecl(@This(), "PDETECT_PROGRESS_NOTIFY")) {
        _ = PDETECT_PROGRESS_NOTIFY;
    }
    if (@hasDecl(@This(), "PSP_DETSIG_CMPPROC")) {
        _ = PSP_DETSIG_CMPPROC;
    }
    if (@hasDecl(@This(), "PCM_NOTIFY_CALLBACK")) {
        _ = PCM_NOTIFY_CALLBACK;
    }

    @setEvalBranchQuota(comptime @import("std").meta.declarations(@This()).len * 3);

    // reference all the pub declarations
    if (!@import("builtin").is_test) return;
    inline for (comptime @import("std").meta.declarations(@This())) |decl| {
        if (decl.is_pub) {
            _ = @field(@This(), decl.name);
        }
    }
}
