include/cfgmgr32.h: add missing defines

Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Liu Hao <lh_mouse@126.com>
diff --git a/mingw-w64-headers/include/cfgmgr32.h b/mingw-w64-headers/include/cfgmgr32.h
index 9621dba..5a73af5 100644
--- a/mingw-w64-headers/include/cfgmgr32.h
+++ b/mingw-w64-headers/include/cfgmgr32.h
@@ -135,6 +135,9 @@
 #define fMD_NonCacheable (0x0)
 #define fMD_Cacheable (0x20)
 
+#define fMD_WINDOW_DECODE (0x40)
+#define fMD_MEMORY_BAR (0x80)
+
   typedef struct Mem_Range_s {
     DWORDLONG MR_Align;
     ULONG MR_nBytes;
@@ -160,6 +163,31 @@
 
 #define MType_Range sizeof(struct Mem_Range_s)
 
+  typedef struct Mem_Large_Range_s {
+    DWORDLONG MLR_Align;
+    ULONGLONG MLR_nBytes;
+    DWORDLONG MLR_Min;
+    DWORDLONG MLR_Max;
+    DWORD MLR_Flags;
+    DWORD MLR_Reserved;
+  } MEM_LARGE_RANGE, *PMEM_LARGE_RANGE;
+
+  typedef struct Mem_Large_Des_s {
+    DWORD MLD_Count;
+    DWORD MLD_Type;
+    DWORDLONG MLD_Alloc_Base;
+    DWORDLONG MLD_Alloc_End;
+    DWORD MLD_Flags;
+    DWORD MLD_Reserved;
+  } MEM_LARGE_DES, *PMEM_LARGE_DES;
+
+  typedef struct Mem_Large_Resource_s {
+   MEM_LARGE_DES MEM_LARGE_Header;
+   MEM_LARGE_RANGE MEM_LARGE_Data[ANYSIZE_ARRAY];
+  } MEM_LARGE_RESOURCE, *PMEM_LARGE_RESOURCE;
+
+#define MLType_Range sizeof(struct Mem_Large_Range_s)
+
 #define fIOD_PortType (0x1)
 #define fIOD_Memory (0x0)
 #define fIOD_IO (0x1)
@@ -170,6 +198,7 @@
 #define fIOD_POSITIVE_DECODE (0x0020)
 #define fIOD_PASSIVE_DECODE (0x0040)
 #define fIOD_WINDOW_DECODE (0x0080)
+#define fIOD_PORT_BAR (0x0100)
 
 #define IO_ALIAS_10_BIT_DECODE (0x00000004)
 #define IO_ALIAS_12_BIT_DECODE (0x00000010)
@@ -252,13 +281,23 @@
   typedef struct IRQ_Range_s {
     ULONG IRQR_Min;
     ULONG IRQR_Max;
+#ifdef NT_PROCESSOR_GROUPS
+    USHORT IRQR_Flags;
+    USHORT IRQR_Rsvdz;
+#else
     ULONG IRQR_Flags;
+#endif
   } IRQ_RANGE,*PIRQ_RANGE;
 
   typedef struct IRQ_Des_32_s {
     DWORD IRQD_Count;
     DWORD IRQD_Type;
+#ifdef NT_PROCESSOR_GROUPS
+    USHORT IRQD_Flags;
+    USHORT IRQD_Group;
+#else
     DWORD IRQD_Flags;
+#endif
     ULONG IRQD_Alloc_Num;
     ULONG32 IRQD_Affinity;
   } IRQ_DES_32,*PIRQ_DES_32;
@@ -266,7 +305,12 @@
   typedef struct IRQ_Des_64_s {
     DWORD IRQD_Count;
     DWORD IRQD_Type;
+#if defined(NT_PROCESSOR_GROUPS)
+    USHORT IRQD_Flags;
+    USHORT IRQD_Group;
+#else
     DWORD IRQD_Flags;
+#endif
     ULONG IRQD_Alloc_Num;
     ULONG64 IRQD_Affinity;
   } IRQ_DES_64,*PIRQ_DES_64;
@@ -299,10 +343,12 @@
 
 #define IRQType_Range sizeof(struct IRQ_Range_s)
 
+#if WINVER >= _WIN32_WINNT_WINXP
 #define CM_RESDES_WIDTH_DEFAULT (0x00000000)
 #define CM_RESDES_WIDTH_32 (0x00000001)
 #define CM_RESDES_WIDTH_64 (0x00000002)
 #define CM_RESDES_WIDTH_BITS (0x00000003)
+#endif
 
   typedef struct DevPrivate_Range_s {
     DWORD PR_Data1;
@@ -356,6 +402,7 @@
 #define fPCD_MEM_WS_TWO (0x200)
 #define fPCD_MEM_WS_THREE (0x300)
 
+#if WINVER >= _WIN32_WINNT_WINXP
 #define fPCD_MEM_A (0x4)
 
 #define fPCD_ATTRIBUTES_PER_WINDOW (0x8000)
@@ -384,6 +431,7 @@
 
 #define PCD_MAX_MEMORY 2
 #define PCD_MAX_IO 2
+#endif
 
   typedef struct PcCard_Des_s {
     DWORD PCD_Count;
@@ -393,9 +441,11 @@
     BYTE PCD_Reserved[3];
     DWORD PCD_MemoryCardBase1;
     DWORD PCD_MemoryCardBase2;
+#if WINVER >= _WIN32_WINNT_WINXP
     DWORD PCD_MemoryCardBase[PCD_MAX_MEMORY];
     WORD PCD_MemoryFlags[PCD_MAX_MEMORY];
     BYTE PCD_IoFlags[PCD_MAX_IO];
+#endif
   } PCCARD_DES,*PPCCARD_DES;
 
   typedef struct PcCard_Resource_s {
@@ -441,6 +491,24 @@
 
 #define BusNumberType_Range sizeof(struct BusNumber_Range_s)
 
+#if WINVER >= _WIN32_WINNT_WIN8
+
+ typedef struct Connection_Des_s {
+    DWORD COND_Type;
+    DWORD COND_Flags;
+    BYTE COND_Class;
+    BYTE COND_ClassType;
+    BYTE COND_Reserved1;
+    BYTE COND_Reserved2;
+    LARGE_INTEGER COND_Id;
+ } CONNECTION_DES, *PCONNECTION_DES;
+
+  typedef struct Connection_Resource_s {
+    CONNECTION_DES Connection_Header;
+  } CONNECTION_RESOURCE, *PCONNECTION_RESOURCE;
+
+#endif
+
 #define CM_HWPI_NOT_DOCKABLE (0x00000000)
 #define CM_HWPI_UNDOCKED (0x00000001)
 #define CM_HWPI_DOCKED (0x00000002)
@@ -470,13 +538,18 @@
 #define ResType_IRQ (0x00000004)
 #define ResType_DoNotUse (0x00000005)
 #define ResType_BusNumber (0x00000006)
-#define ResType_MAX (0x00000006)
+#define ResType_MemLarge (0x00000007)
+#define ResType_MAX (0x00000007)
+
 #define ResType_Ignored_Bit (0x00008000)
 #define ResType_ClassSpecific (0x0000FFFF)
 #define ResType_Reserved (0x00008000)
 #define ResType_DevicePrivate (0x00008001)
 #define ResType_PcCardConfig (0x00008002)
 #define ResType_MfCardConfig (0x00008003)
+#if WINVER >= _WIN32_WINNT_WIN8
+#define ResType_Connection (0x00008004)
+#endif
 
 #define CM_ADD_RANGE_ADDIFCONFLICT (0x00000000)
 #define CM_ADD_RANGE_DONOTADDIFCONFLICT (0x00000001)
@@ -519,7 +592,16 @@
 
 #define CM_DELETE_CLASS_ONLY (0x00000000)
 #define CM_DELETE_CLASS_SUBKEYS (0x00000001)
-#define CM_DELETE_CLASS_BITS (0x00000001)
+#if WINVER >= _WIN32_WINNT_LONGHORN
+#define CM_DELETE_CLASS_INTERFACE (0x00000002)
+#endif
+#define CM_DELETE_CLASS_BITS (0x00000003)
+
+#if WINVER >= _WIN32_WINNT_WIN8
+#define CM_ENUMERATE_CLASSES_INSTALLER (0x00000000)
+#define CM_ENUMERATE_CLASSES_INTERFACE (0x00000001)
+#define CM_ENUMERATE_CLASSES_BITS (0x00000001)
+#endif
 
 #define CM_DETECT_NEW_PROFILE (0x00000001)
 #define CM_DETECT_CRASHED (0x00000002)
@@ -531,6 +613,7 @@
 #define CM_DISABLE_ABSOLUTE (0x00000001)
 #define CM_DISABLE_HARDWARE (0x00000002)
 #define CM_DISABLE_UI_NOT_OK (0x00000004)
+#define CM_DISABLE_PERSIST (0x00000008)
 #define CM_DISABLE_BITS (0x00000007)
 
 #define CM_GETIDLIST_FILTER_NONE (0x00000000)
@@ -541,7 +624,15 @@
 #define CM_GETIDLIST_FILTER_POWERRELATIONS (0x00000010)
 #define CM_GETIDLIST_FILTER_BUSRELATIONS (0x00000020)
 #define CM_GETIDLIST_DONOTGENERATE (0x10000040)
+#if WINVER <= _WIN32_WINNT_LONGHORN
 #define CM_GETIDLIST_FILTER_BITS (0x1000007F)
+#endif
+#if WINVER >= _WIN32_WINNT_WIN7
+#define CM_GETIDLIST_FILTER_TRANSPORTRELATIONS (0x00000080)
+#define CM_GETIDLIST_FILTER_PRESENT (0x00000100)
+#define CM_GETIDLIST_FILTER_CLASS (0x00000200)
+#define CM_GETIDLIST_FILTER_BITS (0x100003FF)
+#endif
 
 #define CM_GET_DEVICE_INTERFACE_LIST_PRESENT (0x00000000)
 #define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES (0x00000001)
@@ -565,7 +656,13 @@
 #define CM_DRP_CAPABILITIES (0x00000010)
 #define CM_DRP_UI_NUMBER (0x00000011)
 #define CM_DRP_UPPERFILTERS (0x00000012)
+#if WINVER >= _WIN32_WINNT_LONGHORN
+#define CM_CRP_UPPERFILTERS CM_DRP_UPPERFILTERS
+#endif
 #define CM_DRP_LOWERFILTERS (0x00000013)
+#if WINVER >= _WIN32_WINNT_LONGHORN
+#define CM_CRP_LOWERFILTERS CM_DRP_LOWERFILTERS
+#endif
 #define CM_DRP_BUSTYPEGUID (0x00000014)
 #define CM_DRP_LEGACYBUSTYPE (0x00000015)
 #define CM_DRP_BUSNUMBER (0x00000016)
@@ -582,11 +679,19 @@
 #define CM_CRP_CHARACTERISTICS CM_DRP_CHARACTERISTICS
 #define CM_DRP_ADDRESS (0x0000001D)
 #define CM_DRP_UI_NUMBER_DESC_FORMAT (0x0000001E)
+#if WINVER >= _WIN32_WINNT_WINXP
 #define CM_DRP_DEVICE_POWER_DATA (0x0000001F)
 #define CM_DRP_REMOVAL_POLICY (0x00000020)
 #define CM_DRP_REMOVAL_POLICY_HW_DEFAULT (0x00000021)
 #define CM_DRP_REMOVAL_POLICY_OVERRIDE (0x00000022)
 #define CM_DRP_INSTALL_STATE (0x00000023)
+#endif
+#if WINVER >= _WIN32_WINNT_WS03
+#define CM_DRP_LOCATION_PATHS (0x00000024)
+#endif
+#if WINVER >= _WIN32_WINNT_WIN7
+#define CM_DRP_BASE_CONTAINERID (0x00000025)
+#endif
 
 #define CM_DRP_MIN (0x00000001)
 #define CM_CRP_MIN CM_DRP_MIN
@@ -603,7 +708,9 @@
 #define CM_DEVCAP_SURPRISEREMOVALOK (0x00000080)
 #define CM_DEVCAP_HARDWAREDISABLED (0x00000100)
 #define CM_DEVCAP_NONDYNAMIC (0x00000200)
+#define CM_DEVCAP_SECUREDEVICE (0x00000400)
 
+#if WINVER >= _WIN32_WINNT_WINXP
 #define CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL 1
 #define CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL 2
 #define CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL 3
@@ -612,6 +719,7 @@
 #define CM_INSTALL_STATE_NEEDS_REINSTALL 1
 #define CM_INSTALL_STATE_FAILED_INSTALL 2
 #define CM_INSTALL_STATE_FINISH_INSTALL 3
+#endif
 
 #define CM_LOCATE_DEVNODE_NORMAL 0x00000000
 #define CM_LOCATE_DEVNODE_PHANTOM 0x00000001
@@ -640,8 +748,10 @@
 
 #define CM_REENUMERATE_NORMAL 0x00000000
 #define CM_REENUMERATE_SYNCHRONOUS 0x00000001
+#if WINVER >= _WIN32_WINNT_WINXP
 #define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002
 #define CM_REENUMERATE_ASYNCHRONOUS 0x00000004
+#endif
 #define CM_REENUMERATE_BITS 0x00000007
 
 #define CM_REGISTER_DEVICE_DRIVER_STATIC (0x00000000)
@@ -671,16 +781,113 @@
 #define CM_SETUP_DOWNLOAD (0x00000001)
 #define CM_SETUP_WRITE_LOG_CONFS (0x00000002)
 #define CM_SETUP_PROP_CHANGE (0x00000003)
+#if WINVER >= _WIN32_WINNT_WINXP
 #define CM_SETUP_DEVNODE_RESET (0x00000004)
 #define CM_SETUP_DEVINST_RESET CM_SETUP_DEVNODE_RESET
+#endif
+#if WINVER >= _WIN32_WINNT_WIN8
+#define CM_SETUP_DEVNODE_CONFIG (0x00000005)
+#define CM_SETUP_DEVINST_CONFIG CM_SETUP_DEVNODE_CONFIG
+#define CM_SETUP_DEVNODE_CONFIG_CLASS (0x00000006)
+#define CM_SETUP_DEVINST_CONFIG_CLASS CM_SETUP_DEVNODE_CONFIG_CLASS
+#endif
+#if WINVER >= _WIN32_WINNT_WINBLUE
+#define CM_SETUP_DEVNODE_CONFIG_EXTENSIONS (0x00000007)
+#define CM_SETUP_DEVINST_CONFIG_EXTENSIONS CM_SETUP_DEVNODE_CONFIG_EXTENSIONS
+#endif
+#if WINVER >= _WIN32_WINNT_WINTHRESHOLD
+#define CM_SETUP_DEVNODE_CONFIG_RESET (0x00000008)
+#define CM_SETUP_DEVINST_CONFIG_RESET CM_SETUP_DEVNODE_CONFIG_RESET
+#endif
 #define CM_SETUP_BITS (0x00000007)
 
 #define CM_QUERY_ARBITRATOR_RAW (0x00000000)
 #define CM_QUERY_ARBITRATOR_TRANSLATED (0x00000001)
 #define CM_QUERY_ARBITRATOR_BITS (0x00000001)
 
+#if WINVER >= _WIN32_WINNT_WINXP
 #define CM_CUSTOMDEVPROP_MERGE_MULTISZ (0x00000001)
 #define CM_CUSTOMDEVPROP_BITS (0x00000001)
+#endif
+#define CM_NAME_ATTRIBUTE_NAME_RETRIEVED_FROM_DEVICE (0x1)
+#define CM_NAME_ATTRIBUTE_USER_ASSIGNED_NAME (0x2)
+
+#if WINVER >= _WIN32_WINNT_LONGHORN
+#define CM_CLASS_PROPERTY_INSTALLER (0x00000000)
+#define CM_CLASS_PROPERTY_INTERFACE (0x00000001)
+#define CM_CLASS_PROPERTY_BITS (0x00000001)
+#endif
+
+#if WINVER >= _WIN32_WINNT_WIN8
+DECLARE_HANDLE(HCMNOTIFICATION);
+typedef HCMNOTIFICATION *PHCMNOTIFICATION;
+
+#define CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES 0x00000001
+#define CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES 0x00000002
+#define CM_NOTIFY_FILTER_VALID_FLAGS (CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES | CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES)
+
+  typedef enum _CM_NOTIFY_FILTER_TYPE {
+    CM_NOTIFY_FILTER_TYPE_DEVICEINTERFACE = 0,
+    CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE,
+    CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE,
+    CM_NOTIFY_FILTER_TYPE_MAX
+  } CM_NOTIFY_FILTER_TYPE, *PCM_NOTIFY_FILTER_TYPE;
+
+  typedef struct _CM_NOTIFY_FILTER {
+    DWORD cbSize;
+    DWORD Flags;
+    CM_NOTIFY_FILTER_TYPE FilterType;
+    DWORD Reserved;
+    union {
+      struct {
+        GUID ClassGuid;
+      } DeviceInterface;
+      struct {
+        HANDLE  hTarget;
+      } DeviceHandle;
+      struct {
+        WCHAR InstanceId[MAX_DEVICE_ID_LEN];
+      } DeviceInstance;
+    } u;
+  } CM_NOTIFY_FILTER, *PCM_NOTIFY_FILTER;
+
+  typedef enum _CM_NOTIFY_ACTION {
+    CM_NOTIFY_ACTION_DEVICEINTERFACEARRIVAL = 0,
+    CM_NOTIFY_ACTION_DEVICEINTERFACEREMOVAL,
+    CM_NOTIFY_ACTION_DEVICEQUERYREMOVE,
+    CM_NOTIFY_ACTION_DEVICEQUERYREMOVEFAILED,
+    CM_NOTIFY_ACTION_DEVICEREMOVEPENDING,
+    CM_NOTIFY_ACTION_DEVICEREMOVECOMPLETE,
+    CM_NOTIFY_ACTION_DEVICECUSTOMEVENT,
+    CM_NOTIFY_ACTION_DEVICEINSTANCEENUMERATED,
+    CM_NOTIFY_ACTION_DEVICEINSTANCESTARTED,
+    CM_NOTIFY_ACTION_DEVICEINSTANCEREMOVED,
+    CM_NOTIFY_ACTION_MAX
+  } CM_NOTIFY_ACTION, *PCM_NOTIFY_ACTION;
+
+  typedef struct _CM_NOTIFY_EVENT_DATA {
+    CM_NOTIFY_FILTER_TYPE FilterType;
+    DWORD Reserved;
+    union {
+      struct {
+        GUID ClassGuid;
+        WCHAR SymbolicLink[ANYSIZE_ARRAY];
+      } DeviceInterface;
+      struct {
+        GUID EventGuid;
+        LONG NameOffset;
+        DWORD DataSize;
+        BYTE Data[ANYSIZE_ARRAY];
+      } DeviceHandle;
+      struct {
+        WCHAR InstanceId[ANYSIZE_ARRAY];
+      } DeviceInstance;
+    } u;
+  } CM_NOTIFY_EVENT_DATA, *PCM_NOTIFY_EVENT_DATA;
+
+typedef DWORD (CALLBACK *PCM_NOTIFY_CALLBACK)(HCMNOTIFICATION hNotify, PVOID Context, CM_NOTIFY_ACTION Action, PCM_NOTIFY_EVENT_DATA EventData, DWORD EventDataSize);
+
+#endif /* WINVER >= _WIN32_WINNT_WIN8 */
 
 #define CM_Add_ID __MINGW_NAME_AW(CM_Add_ID)
 #define CM_Add_ID_Ex __MINGW_NAME_AW(CM_Add_ID_Ex)