mingw-5.1.4/win32/include/ddk/cfgmgr32.h
changeset 0 76b1f169d9fe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mingw-5.1.4/win32/include/ddk/cfgmgr32.h	Fri Apr 03 17:16:45 2009 +0100
@@ -0,0 +1,1533 @@
+/*
+ * cfgmgr32.h
+ *
+ * PnP configuration manager
+ *
+ * This file is part of the w32api package.
+ *
+ * Contributors:
+ *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain. You may
+ * use, modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED. This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef __CFGMGR32_H
+#define __CFGMGR32_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ntddk.h"
+
+#if defined(_CFGMGR32_)
+#define CMAPI DECLSPEC_EXPORT
+#else
+#define CMAPI DECLSPEC_IMPORT
+#endif
+
+#include "cfg.h"
+
+#include <pshpack1.h>
+
+#define CR_SUCCESS                  			0x00000000
+#define CR_DEFAULT                        0x00000001
+#define CR_OUT_OF_MEMORY                  0x00000002
+#define CR_INVALID_POINTER                0x00000003
+#define CR_INVALID_FLAG                   0x00000004
+#define CR_INVALID_DEVNODE                0x00000005
+#define CR_INVALID_DEVINST          			CR_INVALID_DEVNODE
+#define CR_INVALID_RES_DES                0x00000006
+#define CR_INVALID_LOG_CONF               0x00000007
+#define CR_INVALID_ARBITRATOR             0x00000008
+#define CR_INVALID_NODELIST               0x00000009
+#define CR_DEVNODE_HAS_REQS               0x0000000A
+#define CR_DEVINST_HAS_REQS         			CR_DEVNODE_HAS_REQS
+#define CR_INVALID_RESOURCEID             0x0000000B
+#define CR_DLVXD_NOT_FOUND                0x0000000C
+#define CR_NO_SUCH_DEVNODE                0x0000000D
+#define CR_NO_SUCH_DEVINST          			CR_NO_SUCH_DEVNODE
+#define CR_NO_MORE_LOG_CONF               0x0000000E
+#define CR_NO_MORE_RES_DES                0x0000000F
+#define CR_ALREADY_SUCH_DEVNODE           0x00000010
+#define CR_ALREADY_SUCH_DEVINST     			CR_ALREADY_SUCH_DEVNODE
+#define CR_INVALID_RANGE_LIST             0x00000011
+#define CR_INVALID_RANGE                  0x00000012
+#define CR_FAILURE                        0x00000013
+#define CR_NO_SUCH_LOGICAL_DEV            0x00000014
+#define CR_CREATE_BLOCKED                 0x00000015
+#define CR_NOT_SYSTEM_VM                  0x00000016
+#define CR_REMOVE_VETOED                  0x00000017
+#define CR_APM_VETOED                     0x00000018
+#define CR_INVALID_LOAD_TYPE              0x00000019
+#define CR_BUFFER_SMALL                   0x0000001A
+#define CR_NO_ARBITRATOR                  0x0000001B
+#define CR_NO_REGISTRY_HANDLE             0x0000001C
+#define CR_REGISTRY_ERROR                 0x0000001D
+#define CR_INVALID_DEVICE_ID              0x0000001E
+#define CR_INVALID_DATA                   0x0000001F
+#define CR_INVALID_API                    0x00000020
+#define CR_DEVLOADER_NOT_READY            0x00000021
+#define CR_NEED_RESTART                   0x00000022
+#define CR_NO_MORE_HW_PROFILES            0x00000023
+#define CR_DEVICE_NOT_THERE               0x00000024
+#define CR_NO_SUCH_VALUE                  0x00000025
+#define CR_WRONG_TYPE                     0x00000026
+#define CR_INVALID_PRIORITY               0x00000027
+#define CR_NOT_DISABLEABLE                0x00000028
+#define CR_FREE_RESOURCES                 0x00000029
+#define CR_QUERY_VETOED                   0x0000002A
+#define CR_CANT_SHARE_IRQ                 0x0000002B
+#define CR_NO_DEPENDENT                   0x0000002C
+#define CR_SAME_RESOURCES                 0x0000002D
+#define CR_NO_SUCH_REGISTRY_KEY           0x0000002E
+#define CR_INVALID_MACHINENAME            0x0000002F
+#define CR_REMOTE_COMM_FAILURE            0x00000030
+#define CR_MACHINE_UNAVAILABLE            0x00000031
+#define CR_NO_CM_SERVICES                 0x00000032
+#define CR_ACCESS_DENIED                  0x00000033
+#define CR_CALL_NOT_IMPLEMENTED           0x00000034
+#define CR_INVALID_PROPERTY               0x00000035
+#define CR_DEVICE_INTERFACE_ACTIVE        0x00000036
+#define CR_NO_SUCH_DEVICE_INTERFACE       0x00000037
+#define CR_INVALID_REFERENCE_STRING       0x00000038
+#define CR_INVALID_CONFLICT_LIST          0x00000039
+#define CR_INVALID_INDEX                  0x0000003A
+#define CR_INVALID_STRUCTURE_SIZE         0x0000003B
+
+
+typedef DWORD RETURN_TYPE;
+typedef RETURN_TYPE	CONFIGRET;
+
+typedef HANDLE HMACHINE;
+typedef HMACHINE *PHMACHINE;
+
+typedef DWORD_PTR RES_DES;
+typedef RES_DES *PRES_DES;
+
+typedef DWORD_PTR RANGE_ELEMENT;
+typedef RANGE_ELEMENT *PRANGE_ELEMENT;
+
+typedef ULONG_PTR CONFLICT_LIST;
+typedef CONFLICT_LIST *PCONFLICT_LIST;
+
+typedef DWORD_PTR LOG_CONF;
+typedef LOG_CONF *PLOG_CONF;
+
+typedef ULONG PRIORITY;
+typedef PRIORITY *PPRIORITY;
+
+typedef DWORD_PTR RANGE_LIST;
+typedef RANGE_LIST *PRANGE_LIST;
+
+typedef DWORD DEVNODE, DEVINST;
+typedef DEVNODE *PDEVNODE, *PDEVINST;
+
+typedef CHAR *DEVNODEID_A, *DEVINSTID_A;
+typedef WCHAR *DEVNODEID_W, *DEVINSTID_W;
+
+#ifdef UNICODE
+typedef DEVNODEID_W DEVNODEID;
+typedef DEVINSTID_W DEVINSTID;
+#else
+typedef DEVNODEID_A DEVNODEID;
+typedef DEVINSTID_A DEVINSTID;
+#endif
+
+typedef ULONG REGDISPOSITION;
+
+typedef ULONG RESOURCEID;
+typedef RESOURCEID *PRESOURCEID;
+
+#define CM_RESDES_WIDTH_DEFAULT 					0x00000000
+#define CM_RESDES_WIDTH_32      					0x00000001
+#define CM_RESDES_WIDTH_64      					0x00000002
+#define CM_RESDES_WIDTH_BITS    					0x00000003
+
+
+#define MAX_CONFIG_VALUE      						9999
+#define MAX_INSTANCE_VALUE    						9999
+
+#define MAX_DEVICE_ID_LEN     						200
+#define MAX_DEVNODE_ID_LEN    						MAX_DEVICE_ID_LEN
+
+#define MAX_CLASS_NAME_LEN    						32
+#define MAX_GUID_STRING_LEN   						39
+#define MAX_PROFILE_LEN       						80
+
+
+#define ResType_All                       0x00000000
+#define ResType_None                      0x00000000
+#define ResType_Mem                       0x00000001
+#define ResType_IO                        0x00000002
+#define ResType_DMA                       0x00000003
+#define ResType_IRQ                       0x00000004
+#define ResType_DoNotUse                  0x00000005
+#define ResType_BusNumber                 0x00000006
+#define ResType_MAX                       0x00000006
+#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
+
+#define CM_GETIDLIST_FILTER_NONE          		0x00000000
+#define CM_GETIDLIST_FILTER_ENUMERATOR        0x00000001
+#define CM_GETIDLIST_FILTER_SERVICE           0x00000002
+#define CM_GETIDLIST_FILTER_EJECTRELATIONS    0x00000004
+#define CM_GETIDLIST_FILTER_REMOVALRELATIONS  0x00000008
+#define CM_GETIDLIST_FILTER_POWERRELATIONS    0x00000010
+#define CM_GETIDLIST_FILTER_BUSRELATIONS      0x00000020
+#define CM_GETIDLIST_DONOTGENERATE            0x10000040
+#define CM_GETIDLIST_FILTER_BITS              0x1000007F
+
+#define CM_GET_DEVICE_INTERFACE_LIST_PRESENT     	0x00000000
+#define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES 	0x00000001
+#define CM_GET_DEVICE_INTERFACE_LIST_BITS        	0x00000001
+
+
+typedef struct BusNumber_Des_s {
+  DWORD  BUSD_Count;
+  DWORD  BUSD_Type;
+  DWORD  BUSD_Flags;
+  ULONG  BUSD_Alloc_Base;
+  ULONG  BUSD_Alloc_End;
+} BUSNUMBER_DES, *PBUSNUMBER_DES;
+
+typedef struct BusNumber_Range_s {
+  ULONG  BUSR_Min;
+  ULONG  BUSR_Max;
+  ULONG  BUSR_nBusNumbers;
+  ULONG  BUSR_Flags;
+} BUSNUMBER_RANGE, *PBUSNUMBER_RANGE;
+
+#define BusNumberType_Range sizeof(BUSNUMBER_RANGE)
+
+typedef struct BusNumber_Resource_s {
+  BUSNUMBER_DES  BusNumber_Header;
+  BUSNUMBER_RANGE  BusNumber_Data[ANYSIZE_ARRAY];
+} BUSNUMBER_RESOURCE, *PBUSNUMBER_RESOURCE;
+
+typedef struct CS_Des_s {
+  DWORD  CSD_SignatureLength;
+  DWORD  CSD_LegacyDataOffset;
+  DWORD  CSD_LegacyDataSize;
+  DWORD  CSD_Flags;
+  GUID  CSD_ClassGuid;
+  BYTE  CSD_Signature[ANYSIZE_ARRAY];
+} CS_DES, *PCS_DES;
+
+typedef struct CS_Resource_s {
+  CS_DES  CS_Header;
+} CS_RESOURCE, *PCS_RESOURCE;
+
+typedef struct DevPrivate_Des_s {
+  DWORD  PD_Count;
+  DWORD  PD_Type;
+  DWORD  PD_Data1;
+  DWORD  PD_Data2;
+  DWORD  PD_Data3;
+  DWORD  PD_Flags;
+} DEVPRIVATE_DES, *PDEVPRIVATE_DES;
+
+typedef struct DevPrivate_Range_s {
+	DWORD  PR_Data1;
+	DWORD  PR_Data2;
+	DWORD  PR_Data3;
+} DEVPRIVATE_RANGE, *PDEVPRIVATE_RANGE;
+
+#define PType_Range sizeof(DEVPRIVATE_RANGE)
+
+typedef struct DevPrivate_Resource_s {
+  DEVPRIVATE_DES  PRV_Header;
+  DEVPRIVATE_RANGE  PRV_Data[ANYSIZE_ARRAY];
+} DEVPRIVATE_RESOURCE, *PDEVPRIVATE_RESOURCE;
+
+/* DMA_DES.DD_Flags constants and masks */
+#define mDD_Width         								0x3
+#define fDD_BYTE          								0x0
+#define fDD_WORD          								0x1
+#define fDD_DWORD         								0x2
+#define fDD_BYTE_AND_WORD 								0x3
+
+#define mDD_BusMaster     								0x4
+#define fDD_NoBusMaster   								0x0
+#define fDD_BusMaster     								0x4
+
+#define mDD_Type         									0x18
+#define fDD_TypeStandard 									0x00
+#define fDD_TypeA        									0x08
+#define fDD_TypeB        									0x10
+#define fDD_TypeF        									0x18
+
+typedef struct DMA_Des_s {
+  DWORD  DD_Count;
+  DWORD  DD_Type;
+  DWORD  DD_Flags;
+  ULONG  DD_Alloc_Chan;
+} DMA_DES, *PDMA_DES;
+
+typedef struct DMA_Range_s {
+  ULONG  DR_Min;
+  ULONG  DR_Max;
+  ULONG  DR_Flags;
+} DMA_RANGE, *PDMA_RANGE;
+
+#define DType_Range sizeof(DMA_RANGE)
+
+typedef struct DMA_Resource_s {
+  DMA_DES  DMA_Header;
+  DMA_RANGE  DMA_Data[ANYSIZE_ARRAY];
+} DMA_RESOURCE, *PDMA_RESOURCE;
+
+/* IO_DES.Type constants and masks */
+#define fIOD_PortType   									0x1
+#define fIOD_Memory     									0x0
+#define fIOD_IO         									0x1
+#define fIOD_DECODE     									0x00fc
+#define fIOD_10_BIT_DECODE    						0x0004
+#define fIOD_12_BIT_DECODE    						0x0008
+#define fIOD_16_BIT_DECODE    						0x0010
+#define fIOD_POSITIVE_DECODE  						0x0020
+#define fIOD_PASSIVE_DECODE   						0x0040
+#define fIOD_WINDOW_DECODE    						0x0080
+
+typedef struct IO_Des_s {
+  DWORD  IOD_Count;
+  DWORD  IOD_Type;
+  DWORDLONG  IOD_Alloc_Base;
+  DWORDLONG  IOD_Alloc_End;
+  DWORD  IOD_DesFlags;
+} IO_DES, *PIO_DES;
+
+/* IO_RANGE.IOR_Alias constants */
+#define IO_ALIAS_10_BIT_DECODE      			0x00000004
+#define IO_ALIAS_12_BIT_DECODE      			0x00000010
+#define IO_ALIAS_16_BIT_DECODE      			0x00000000
+#define IO_ALIAS_POSITIVE_DECODE    			0x000000FF
+
+typedef struct IO_Range_s {
+  DWORDLONG  IOR_Align;
+  DWORD  IOR_nPorts;
+  DWORDLONG  IOR_Min;
+  DWORDLONG  IOR_Max;
+  DWORD  IOR_RangeFlags;
+  DWORDLONG  IOR_Alias;
+} IO_RANGE, *PIO_RANGE;
+
+#define IOType_Range sizeof(IO_RANGE)
+
+typedef struct IO_Resource_s {
+  IO_DES  IO_Header;
+  IO_RANGE  IO_Data[ANYSIZE_ARRAY];
+} IO_RESOURCE, *PIO_RESOURCE;
+
+/* IRQ_DES.IRQD_flags constants */
+#define mIRQD_Share        								0x1
+#define fIRQD_Exclusive    								0x0
+#define fIRQD_Share        								0x1
+
+#define fIRQD_Share_Bit    								0
+#define fIRQD_Level_Bit    							  1
+
+#define mIRQD_Edge_Level   								0x2
+#define fIRQD_Level        								0x0
+#define fIRQD_Edge         								0x2
+
+typedef struct IRQ_Des_32_s {
+  DWORD  IRQD_Count;
+  DWORD  IRQD_Type;
+  DWORD  IRQD_Flags;
+  ULONG  IRQD_Alloc_Num;
+  ULONG32  IRQD_Affinity;
+} IRQ_DES_32, *PIRQ_DES_32;
+
+typedef struct IRQ_Des_64_s {
+  DWORD  IRQD_Count;
+  DWORD  IRQD_Type;
+  DWORD  IRQD_Flags;
+  ULONG  IRQD_Alloc_Num;
+  ULONG64  IRQD_Affinity;
+} IRQ_DES_64, *PIRQ_DES_64;
+
+#ifdef _WIN64
+typedef IRQ_DES_64 IRQ_DES;
+typedef PIRQ_DES_64 PIRQ_DES;
+#else
+typedef IRQ_DES_32 IRQ_DES;
+typedef PIRQ_DES_32 PIRQ_DES;
+#endif
+
+typedef struct IRQ_Range_s {
+  ULONG  IRQR_Min;
+  ULONG  IRQR_Max;
+  ULONG  IRQR_Flags;
+} IRQ_RANGE, *PIRQ_RANGE;
+
+#define IRQType_Range sizeof(IRQ_RANGE)
+
+typedef struct IRQ_Resource_s {
+  IRQ_DES  IRQ_Header;
+  IRQ_RANGE  IRQ_Data[ANYSIZE_ARRAY];
+} IRQ_RESOURCE, *PIRQ_RESOURCE;
+
+/* MEM_DES.MD_Flags constants */
+#define mMD_MemoryType              0x1
+#define fMD_MemoryType              mMD_MemoryType
+#define fMD_ROM                     0x0
+#define fMD_RAM                     0x1
+
+#define mMD_32_24                   0x2
+#define fMD_32_24                   mMD_32_24
+#define fMD_24                      0x0
+#define fMD_32                      0x2
+
+#define mMD_Prefetchable            0x4
+#define fMD_Prefetchable            mMD_Prefetchable
+#define fMD_Pref                    mMD_Prefetchable
+#define fMD_PrefetchDisallowed      0x0
+#define fMD_PrefetchAllowed         0x4
+
+#define mMD_Readable                0x8
+#define fMD_Readable                mMD_Readable
+#define fMD_ReadAllowed             0x0
+#define fMD_ReadDisallowed          0x8
+
+#define mMD_CombinedWrite           0x10
+#define fMD_CombinedWrite           mMD_CombinedWrite
+#define fMD_CombinedWriteDisallowed 0x0
+#define fMD_CombinedWriteAllowed    0x10
+
+#define mMD_Cacheable               0x20
+#define fMD_NonCacheable            0x0
+#define fMD_Cacheable               0x20
+
+typedef struct Mem_Des_s {
+  DWORD  MD_Count;
+  DWORD  MD_Type;
+  DWORDLONG  MD_Alloc_Base;
+  DWORDLONG  MD_Alloc_End;
+  DWORD  MD_Flags;
+  DWORD  MD_Reserved;
+} MEM_DES, *PMEM_DES;
+
+typedef struct Mem_Range_s {
+  DWORDLONG  MR_Align;
+  ULONG  MR_nBytes;
+  DWORDLONG  MR_Min;
+  DWORDLONG  MR_Max;
+  DWORD  MR_Flags;
+  DWORD  MR_Reserved;
+} MEM_RANGE, *PMEM_RANGE;
+
+#define MType_Range sizeof(MEM_RANGE)
+
+typedef struct Mem_Resource_s {
+  MEM_DES  MEM_Header;
+  MEM_RANGE  MEM_Data[ANYSIZE_ARRAY];
+} MEM_RESOURCE, *PMEM_RESOURCE;
+
+/* MFCARD_DES.PMF_Flags constants */
+#define fPMF_AUDIO_ENABLE   							0x8
+#define mPMF_AUDIO_ENABLE   							fPMF_AUDIO_ENABLE
+
+typedef struct MfCard_Des_s {
+  DWORD  PMF_Count;
+  DWORD  PMF_Type;
+  DWORD  PMF_Flags;
+  BYTE  PMF_ConfigOptions;
+  BYTE  PMF_IoResourceIndex;
+  BYTE  PMF_Reserved[2];
+  DWORD  PMF_ConfigRegisterBase;
+} MFCARD_DES, *PMFCARD_DES;
+
+typedef struct MfCard_Resource_s {
+  MFCARD_DES  MfCard_Header;
+} MFCARD_RESOURCE, *PMFCARD_RESOURCE;
+
+/* PCCARD_DES.PCD_Flags constants */
+
+typedef struct PcCard_Des_s {
+  DWORD  PCD_Count;
+  DWORD  PCD_Type;
+  DWORD  PCD_Flags;
+  BYTE  PCD_ConfigIndex;
+  BYTE  PCD_Reserved[3];
+  DWORD  PCD_MemoryCardBase1;
+  DWORD  PCD_MemoryCardBase2;
+} PCCARD_DES, *PPCCARD_DES;
+
+#define mPCD_IO_8_16        							0x1
+#define fPCD_IO_8           							0x0
+#define fPCD_IO_16          							0x1
+#define mPCD_MEM_8_16       							0x2
+#define fPCD_MEM_8          							0x0
+#define fPCD_MEM_16         							0x2
+#define mPCD_MEM_A_C        							0xC
+#define fPCD_MEM1_A         							0x4
+#define fPCD_MEM2_A         							0x8
+#define fPCD_IO_ZW_8        							0x10
+#define fPCD_IO_SRC_16      							0x20
+#define fPCD_IO_WS_16       							0x40
+#define mPCD_MEM_WS         							0x300
+#define fPCD_MEM_WS_ONE     							0x100
+#define fPCD_MEM_WS_TWO     							0x200
+#define fPCD_MEM_WS_THREE   							0x300
+
+#define fPCD_MEM_A          							0x4
+
+#define fPCD_ATTRIBUTES_PER_WINDOW 				0x8000
+
+#define fPCD_IO1_16         							0x00010000
+#define fPCD_IO1_ZW_8       							0x00020000
+#define fPCD_IO1_SRC_16     							0x00040000
+#define fPCD_IO1_WS_16      							0x00080000
+
+#define fPCD_IO2_16         							0x00100000
+#define fPCD_IO2_ZW_8       							0x00200000
+#define fPCD_IO2_SRC_16     							0x00400000
+#define fPCD_IO2_WS_16      							0x00800000
+
+#define mPCD_MEM1_WS        							0x03000000
+#define fPCD_MEM1_WS_ONE    							0x01000000
+#define fPCD_MEM1_WS_TWO    							0x02000000
+#define fPCD_MEM1_WS_THREE  							0x03000000
+#define fPCD_MEM1_16        							0x04000000
+
+#define mPCD_MEM2_WS        							0x30000000
+#define fPCD_MEM2_WS_ONE    							0x10000000
+#define fPCD_MEM2_WS_TWO    							0x20000000
+#define fPCD_MEM2_WS_THREE  							0x30000000
+#define fPCD_MEM2_16        							0x40000000
+
+#define PCD_MAX_MEMORY   									2
+#define PCD_MAX_IO       									2
+
+typedef struct PcCard_Resource_s {
+  PCCARD_DES  PcCard_Header;
+} PCCARD_RESOURCE, *PPCCARD_RESOURCE;
+
+
+/* CONFLICT_DETAILS.CD.ulMask constants */
+#define CM_CDMASK_DEVINST      						0x00000001
+#define CM_CDMASK_RESDES       						0x00000002
+#define CM_CDMASK_FLAGS        						0x00000004
+#define CM_CDMASK_DESCRIPTION  						0x00000008
+#define CM_CDMASK_VALID        					  0x0000000F
+
+/* CONFLICT_DETAILS.CD.ulFlags constants */
+#define CM_CDFLAGS_DRIVER      						0x00000001
+#define CM_CDFLAGS_ROOT_OWNED  						0x00000002
+#define CM_CDFLAGS_RESERVED    						0x00000004
+
+typedef struct _CONFLICT_DETAILS_A {
+  ULONG  CD_ulSize;
+  ULONG  CD_ulMask;
+  DEVINST  CD_dnDevInst;
+  RES_DES  CD_rdResDes;
+  ULONG  CD_ulFlags;
+  CHAR  CD_szDescription[MAX_PATH];
+} CONFLICT_DETAILS_A , *PCONFLICT_DETAILS_A;
+
+typedef struct _CONFLICT_DETAILS_W {
+  ULONG  CD_ulSize;
+  ULONG  CD_ulMask;
+  DEVINST  CD_dnDevInst;
+  RES_DES  CD_rdResDes;
+  ULONG  CD_ulFlags;
+  WCHAR  CD_szDescription[MAX_PATH];
+} CONFLICT_DETAILS_W , *PCONFLICT_DETAILS_W;
+
+#ifdef UNICODE
+typedef CONFLICT_DETAILS_W CONFLICT_DETAILS;
+typedef PCONFLICT_DETAILS_W PCONFLICT_DETAILS;
+#else
+typedef CONFLICT_DETAILS_A CONFLICT_DETAILS;
+typedef PCONFLICT_DETAILS_A PCONFLICT_DETAILS;
+#endif
+
+
+
+/* CM_Add_Empty_Log_Conf.ulFlags constants */
+#define PRIORITY_EQUAL_FIRST  						0x00000008
+#define PRIORITY_EQUAL_LAST   						0x00000000
+#define PRIORITY_BIT          						0x00000008
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_Empty_Log_Conf(
+  /*OUT*/ PLOG_CONF  plcLogConf,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ PRIORITY  Priority,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_Empty_Log_Conf_Ex(
+  /*OUT*/ PLOG_CONF  plcLogConf,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ PRIORITY  Priority,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+/* CM_Add_ID.ulFlags constants */
+#define CM_ADD_ID_HARDWARE              	0x00000000
+#define CM_ADD_ID_COMPATIBLE              0x00000001
+#define CM_ADD_ID_BITS                    0x00000001
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_IDA(
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ PSTR  pszID,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_ID_ExA(
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ PSTR  pszID,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_ID_ExW(
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ PWSTR  pszID,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_IDW(
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ PWSTR  pszID,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+#ifdef UNICODE
+#define CM_Add_ID CM_Add_IDW
+#define CM_Add_ID_Ex CM_Add_ID_ExW
+#else
+#define CM_Add_ID CM_Add_IDA
+#define CM_Add_ID_Ex CM_Add_ID_ExA
+#endif /* UNICODE */
+
+/* FIXME: Obsolete CM_Add_Range */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_Res_Des(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ LOG_CONF  lcLogConf,
+  /*IN*/ RESOURCEID  ResourceID,
+  /*IN*/ PCVOID  ResourceData,
+  /*IN*/ ULONG  ResourceLen,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Add_Res_Des_Ex(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ LOG_CONF  lcLogConf,
+  /*IN*/ RESOURCEID  ResourceID,
+  /*IN*/ PCVOID  ResourceData,
+  /*IN*/ ULONG  ResourceLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Connect_MachineA(
+  /*IN*/ PCSTR  UNCServerName,
+  /*OUT*/ PHMACHINE  phMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Connect_MachineW(
+  /*IN*/ PCWSTR  UNCServerName,
+  /*OUT*/ PHMACHINE  phMachine);
+
+#ifdef UNICODE
+#define CM_Connect_Machine CM_Connect_MachineW
+#else
+#define CM_Connect_Machine CM_Connect_MachineA
+#endif /* UNICODE */
+
+/* FIXME: Obsolete CM_Create_DevNode */
+/* FIXME: Obsolete CM_Create_DevNodeEx */
+/* FIXME: Obsolete CM_Create_Range_List */
+/* FIXME: Obsolete CM_Delete_Class_Key */
+/* FIXME: Obsolete CM_Delete_Class_Key_Ex */
+/* FIXME: Obsolete CM_Delete_DevNode_Key */
+/* FIXME: Obsolete CM_Delete_DevNode_Key_Ex */
+/* FIXME: Obsolete CM_Delete_Range */
+/* FIXME: Obsolete CM_Detected_Resource_Conflict */
+/* FIXME: Obsolete CM_Detected_Resource_Conflict_Ex */
+/* FIXME: Obsolete CM_Disable_DevNode */
+/* FIXME: Obsolete CM_Disable_DevNodeEx */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Disconnect_Machine(
+  /*IN*/ HMACHINE  hMachine); 
+
+/* FIXME: Obsolete CM_Enable_DevNode */
+/* FIXME: Obsolete CM_Enable_DevNodeEx */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_Classes(
+  /*IN*/ ULONG  ulClassIndex,
+  /*OUT*/ LPGUID  ClassGuid,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_Classes_Ex(
+  /*IN*/ ULONG  ulClassIndex,
+  /*OUT*/ LPGUID  ClassGuid,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_EnumeratorsA(
+  /*IN*/ ULONG  ulEnumIndex,
+  /*OUT*/ PCHAR  Buffer,
+  /*IN OUT*/ PULONG  pulLength,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_Enumerators_ExA(
+  /*IN*/ ULONG  ulEnumIndex,
+  /*OUT*/ PCHAR  Buffer,
+  /*IN OUT*/ PULONG  pulLength,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_Enumerators_ExW(
+  /*IN*/ ULONG  ulEnumIndex,
+  /*OUT*/ PWCHAR  Buffer,
+  /*IN OUT*/ PULONG  pulLength,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Enumerate_EnumeratorsW(
+  /*IN*/ ULONG  ulEnumIndex,
+  /*OUT*/ PWCHAR  Buffer,
+  /*IN OUT*/ PULONG  pulLength,
+  /*IN*/ ULONG  ulFlags);
+
+#ifdef UNICODE
+#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsW
+#define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW
+#else
+#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsA
+#define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW
+#endif /* UNICODE */
+
+/* FIXME: Obsolete CM_Find_Range */
+/* FIXME: Obsolete CM_First_Range */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Log_Conf(
+  /*IN*/ LOG_CONF  lcLogConfToBeFreed,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Log_Conf_Ex(
+  /*IN*/ LOG_CONF  lcLogConfToBeFreed,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Log_Conf_Handle(
+  /*IN*/ LOG_CONF  lcLogConf);
+
+/* FIXME: Obsolete CM_Free_Range_List */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Res_Des(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Res_Des_Ex(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Res_Des_Handle(
+  /*IN*/ RES_DES  rdResDes);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Free_Resource_Conflict_Handle(
+  /*IN*/ CONFLICT_LIST  clConflictList);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Child(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Child_Ex(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+/* FIXME: Obsolete CM_Get_Class_Name */
+/* FIXME: Obsolete CM_Get_Class_Name_Ex */
+/* FIXME: Obsolete CM_Get_Class_Key_Name */
+/* FIXME: Obsolete CM_Get_Class_Key_Name_Ex */
+/* FIXME: Obsolete CM_Get_Class_Registry_Property */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Depth(
+  /*OUT*/ PULONG  pulDepth,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Depth_Ex(
+  /*OUT*/ PULONG  pulDepth,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_IDA(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_ExA(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_ExW(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PWCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_IDW(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PWCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags);
+
+#ifdef UNICODE
+#define CM_Get_Device_ID CM_Get_Device_IDW
+#define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW
+#else
+#define CM_Get_Device_ID CM_Get_Device_IDA
+#define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW
+#endif /* UNICODE */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_ListA(
+  /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
+  /*OUT*/ PCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_ExA(
+  /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
+  /*OUT*/ PCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_ExW(
+  /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
+  /*OUT*/ PWCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_ListW(
+  /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
+  /*OUT*/ PWCHAR  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags);
+
+#ifdef UNICODE
+#define CM_Get_Device_ID_List CM_Get_Device_ID_ListW
+#define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExW
+#else
+#define CM_Get_Device_ID_List CM_Get_Device_ID_ListA
+#define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExA
+#endif /* UNICODE */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_SizeA(
+  /*OUT*/ PULONG  pulLen,
+  /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_Size_ExA(
+  /*OUT*/ PULONG  pulLen,
+  /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_Size_ExW(
+  /*OUT*/ PULONG  pulLen,
+  /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_List_SizeW(
+  /*OUT*/ PULONG  pulLen,
+  /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags);
+
+#ifdef UNICODE
+#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeW
+#define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExW
+#else
+#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeA
+#define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExA
+#endif /* UNICODE */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_Size(
+  /*OUT*/ PULONG  pulLen,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Device_ID_Size_Ex(
+  /*OUT*/ PULONG  pulLen,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+/* FIXME: Obsolete CM_Get_Device_Interface_Alias */
+/* FIXME: Obsolete CM_Get_Device_Interface_Alias_Ex */
+/* FIXME: Obsolete CM_Get_Device_Interface_List */
+/* FIXME: Obsolete CM_Get_Device_Interface_List_Ex */
+/* FIXME: Obsolete CM_Get_Device_Interface_List_Size */
+/* FIXME: Obsolete CM_Get_Device_Interface_List_Size_Ex */
+/* FIXME: Obsolete CM_Get_DevNode_Custom_Property */
+/* FIXME: Obsolete CM_Get_DevNode_Custom_Property_Ex */
+/* FIXME: Obsolete CM_Get_DevNode_Registry_Property */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_DevNode_Status(
+  /*OUT*/ PULONG  pulStatus,
+  /*OUT*/ PULONG  pulProblemNumber,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_DevNode_Status_Ex(
+  /*OUT*/ PULONG  pulStatus,
+  /*OUT*/ PULONG  pulProblemNumber,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+#define CM_Get_DevInst_Status CM_Get_DevNode_Status
+#define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex
+
+/* CM_Get_First_Log_Conf.ulFlags constants */
+#define BASIC_LOG_CONF    0x00000000  /* Specifies the req list. */
+#define FILTERED_LOG_CONF 0x00000001  /* Specifies the filtered req list. */
+#define ALLOC_LOG_CONF    0x00000002  /* Specifies the Alloc Element. */
+#define BOOT_LOG_CONF     0x00000003  /* Specifies the RM Alloc Element. */
+#define FORCED_LOG_CONF   0x00000004  /* Specifies the Forced Log Conf */
+#define OVERRIDE_LOG_CONF 0x00000005  /* Specifies the Override req list. */
+#define NUM_LOG_CONF      0x00000006  /* Number of Log Conf type */
+#define LOG_CONF_BITS     0x00000007  /* The bits of the log conf type. */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_First_Log_Conf(
+  /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_First_Log_Conf_Ex(
+  /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+/* FIXME: Obsolete CM_Get_Global_State */
+/* FIXME: Obsolete CM_Get_Global_State_Ex */
+/* FIXME: Obsolete CM_Get_Hardware_Profile_Info */
+/* FIXME: Obsolete CM_Get_Hardware_Profile_Info_Ex */
+/* FIXME: Obsolete CM_Get_HW_Prof_Flags */
+/* FIXME: Obsolete CM_Get_HW_Prof_Flags_Ex */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Log_Conf_Priority(
+  /*IN*/ LOG_CONF  lcLogConf,
+  /*OUT*/ PPRIORITY  pPriority,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Log_Conf_Priority_Ex(
+  /*IN*/ LOG_CONF  lcLogConf,
+  /*OUT*/ PPRIORITY  pPriority,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Next_Log_Conf(
+  /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
+  /*IN*/ LOG_CONF  lcLogConf,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Next_Log_Conf_Ex(
+  /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
+  /*IN*/ LOG_CONF  lcLogConf,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Next_Res_Des(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ RESOURCEID  ForResource,
+  /*OUT*/ PRESOURCEID  pResourceID,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Next_Res_Des_Ex(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ RESOURCEID  ForResource,
+  /*OUT*/ PRESOURCEID  pResourceID,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Parent(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Parent_Ex(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Res_Des_Data(
+  /*IN*/ RES_DES  rdResDes,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Res_Des_Data_Ex(
+  /*IN*/ RES_DES  rdResDes,
+  /*OUT*/ PVOID  Buffer,
+  /*IN*/ ULONG  BufferLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Res_Des_Data_Size(
+  /*OUT*/ PULONG  pulSize,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Res_Des_Data_Size_Ex(
+  /*OUT*/ PULONG  pulSize,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Resource_Conflict_Count(
+  /*IN*/ CONFLICT_LIST  clConflictList,
+  /*OUT*/ PULONG  pulCount);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Resource_Conflict_DetailsA(
+  /*IN*/ CONFLICT_LIST  clConflictList,
+  /*IN*/ ULONG  ulIndex,
+  /*IN OUT*/ PCONFLICT_DETAILS_A  pConflictDetails);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Resource_Conflict_DetailsW(
+  /*IN*/ CONFLICT_LIST  clConflictList,
+  /*IN*/ ULONG  ulIndex,
+  /*IN OUT*/ PCONFLICT_DETAILS_W  pConflictDetails);
+
+#ifdef UNICODE
+#define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsW
+#else
+#define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsA
+#endif /* UNICODE */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Sibling(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINST  DevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Get_Sibling_Ex(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINST  DevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+WORD
+WINAPI
+CM_Get_Version(
+  VOID);
+
+CMAPI
+WORD
+WINAPI
+CM_Get_Version_Ex(
+  /*IN*/ HMACHINE  hMachine);
+
+/* FIXME: Obsolete CM_Intersect_Range_List */
+/* FIXME: Obsolete CM_Invert_Range_List */
+/* FIXME: Obsolete CM_Is_Dock_Station_Present */
+/* FIXME: Obsolete CM_Is_Dock_Station_Present_Ex */
+
+/* CM_Locate_DevNode.ulFlags constants */
+#define CM_LOCATE_DEVNODE_NORMAL       		0x00000000
+#define CM_LOCATE_DEVNODE_PHANTOM      		0x00000001
+#define CM_LOCATE_DEVNODE_CANCELREMOVE 		0x00000002
+#define CM_LOCATE_DEVNODE_NOVALIDATION 		0x00000004
+#define CM_LOCATE_DEVNODE_BITS         		0x00000007
+
+#define CM_LOCATE_DEVINST_NORMAL       		CM_LOCATE_DEVNODE_NORMAL
+#define CM_LOCATE_DEVINST_PHANTOM      		CM_LOCATE_DEVNODE_PHANTOM
+#define CM_LOCATE_DEVINST_CANCELREMOVE 		CM_LOCATE_DEVNODE_CANCELREMOVE
+#define CM_LOCATE_DEVINST_NOVALIDATION 		CM_LOCATE_DEVNODE_NOVALIDATION
+#define CM_LOCATE_DEVINST_BITS         		CM_LOCATE_DEVNODE_BITS
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Locate_DevNodeA(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINSTID_A  pDeviceID, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Locate_DevNode_ExA(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINSTID_A  pDeviceID, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Locate_DevNode_ExW(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINSTID_W  pDeviceID, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Locate_DevNodeW(
+  /*OUT*/ PDEVINST  pdnDevInst,
+  /*IN*/ DEVINSTID_W  pDeviceID, /*OPTIONAL*/
+  /*IN*/ ULONG  ulFlags);
+
+#define CM_Locate_DevInstA CM_Locate_DevNodeA
+#define CM_Locate_DevInstW CM_Locate_DevNodeW
+#define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA
+#define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW
+
+#ifdef UNICODE
+#define CM_Locate_DevNode CM_Locate_DevNodeW
+#define CM_Locate_DevInst CM_Locate_DevNodeW
+#define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExW
+#define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExW
+#else
+#define CM_Locate_DevNode CM_Locate_DevNodeA
+#define CM_Locate_DevInst CM_Locate_DevNodeA
+#define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExA
+#define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExA
+#endif /* UNICODE */
+
+/* FIXME: Obsolete CM_Merge_Range_List */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Modify_Res_Des(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ RESOURCEID  ResourceID,
+  /*IN*/ PCVOID  ResourceData,
+  /*IN*/ ULONG  ResourceLen,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Modify_Res_Des_Ex(
+  /*OUT*/ PRES_DES  prdResDes,
+  /*IN*/ RES_DES  rdResDes,
+  /*IN*/ RESOURCEID  ResourceID,
+  /*IN*/ PCVOID  ResourceData,
+  /*IN*/ ULONG  ResourceLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+/* FIXME: Obsolete CM_Move_DevNode */
+/* FIXME: Obsolete CM_Move_DevNode_Ex */
+/* FIXME: Obsolete CM_Next_Range */
+/* FIXME: Obsolete CM_Open_Class_Key */
+/* FIXME: Obsolete CM_Open_Class_Key_Ex */
+/* FIXME: Obsolete CM_Open_DevNode_Key */
+/* FIXME: Obsolete CM_Open_DevNode_Key_Ex */
+
+/* CM_Query_And_Remove_SubTree.ulFlags constants */
+#define CM_REMOVE_UI_OK             			0x00000000
+#define CM_REMOVE_UI_NOT_OK         			0x00000001
+#define CM_REMOVE_NO_RESTART        			0x00000002
+#define CM_REMOVE_BITS              			0x00000003
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_And_Remove_SubTreeA(
+  /*IN*/ DEVINST dnAncestor,
+  /*OUT*/ PPNP_VETO_TYPE pVetoType,
+  /*OUT*/ LPSTR pszVetoName,
+  /*IN*/ ULONG ulNameLength,
+  /*IN*/ ULONG ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_And_Remove_SubTreeW(
+  /*IN*/ DEVINST dnAncestor,
+  /*OUT*/ PPNP_VETO_TYPE pVetoType,
+  /*OUT*/ LPWSTR pszVetoName,
+  /*IN*/ ULONG ulNameLength,
+  /*IN*/ ULONG ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_And_Remove_SubTree_ExA(
+  /*IN*/ DEVINST dnAncestor,
+  /*OUT*/ PPNP_VETO_TYPE pVetoType,
+  /*OUT*/ LPSTR pszVetoName,
+  /*IN*/ ULONG ulNameLength,
+  /*IN*/ ULONG ulFlags,
+  /*IN*/ HMACHINE hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_And_Remove_SubTree_ExW(
+  /*IN*/ DEVINST dnAncestor,
+  /*OUT*/ PPNP_VETO_TYPE pVetoType,
+  /*OUT*/ LPWSTR pszVetoName,
+  /*IN*/ ULONG ulNameLength,
+  /*IN*/ ULONG ulFlags,
+  /*IN*/ HMACHINE hMachine);
+
+/* FIXME: Obsolete CM_Query_Arbitrator_Free_Data */
+/* FIXME: Obsolete CM_Query_Arbitrator_Free_Data_Ex */
+/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size */
+/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */
+/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */
+/* FIXME: Obsolete CM_Query_Remove_SubTree */
+/* FIXME: Obsolete CM_Query_Remove_SubTree_Ex */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Query_Resource_Conflict_List(
+  /*OUT*/ PCONFLICT_LIST  pclConflictList,
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ RESOURCEID  ResourceID,
+  /*IN*/ PCVOID  ResourceData,
+  /*IN*/ ULONG  ResourceLen,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+/* CM_Reenumerate_DevNode.ulFlags constants */
+#define CM_REENUMERATE_NORMAL             0x00000000
+#define CM_REENUMERATE_SYNCHRONOUS        0x00000001
+#define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002
+#define CM_REENUMERATE_ASYNCHRONOUS       0x00000004
+#define CM_REENUMERATE_BITS               0x00000007
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Reenumerate_DevNode(
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Reenumerate_DevNode_Ex(
+  /*IN*/ DEVINST  dnDevInst,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+#define CM_Reenumerate_DevInst CM_Reenumerate_DevNode
+#define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex
+
+/* FIXME: Obsolete CM_Register_Device_Driver */
+/* FIXME: Obsolete CM_Register_Device_Driver_Ex */
+/* FIXME: Obsolete CM_Register_Device_Interface */
+/* FIXME: Obsolete CM_Register_Device_Interface_Ex */
+/* FIXME: Obsolete CM_Remove_SubTree */
+/* FIXME: Obsolete CM_Remove_SubTree_Ex */
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Request_Device_EjectA(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PPNP_VETO_TYPE  pVetoType,
+  /*OUT*/ LPSTR  pszVetoName,
+  /*IN*/ ULONG  ulNameLength,
+  /*IN*/ ULONG  ulFlags);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Request_Device_Eject_ExW(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PPNP_VETO_TYPE  pVetoType,
+  /*OUT*/ LPWSTR  pszVetoName,
+  /*IN*/ ULONG  ulNameLength,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Request_Device_Eject_ExA(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PPNP_VETO_TYPE  pVetoType,
+  /*OUT*/ LPSTR  pszVetoName,
+  /*IN*/ ULONG  ulNameLength,
+  /*IN*/ ULONG  ulFlags,
+  /*IN*/ HMACHINE  hMachine);
+
+CMAPI
+CONFIGRET
+WINAPI
+CM_Request_Device_EjectW(
+  /*IN*/ DEVINST  dnDevInst,
+  /*OUT*/ PPNP_VETO_TYPE  pVetoType,
+  /*OUT*/ LPWSTR  pszVetoName,
+  /*IN*/ ULONG  ulNameLength,
+  /*IN*/ ULONG  ulFlags);
+
+#ifdef UNICODE
+#define CM_Request_Device_Eject CM_Request_Device_EjectW
+#define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExW
+#else
+#define CM_Request_Device_Eject CM_Request_Device_EjectA
+#define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExA
+#endif /* UNICODE */
+
+/* FIXME: Obsolete CM_Request_Eject_PC */
+/* FIXME: Obsolete CM_Request_Eject_PC_Ex */
+/* FIXME: Obsolete CM_Run_Detection */
+/* FIXME: Obsolete CM_Run_Detection_Ex */
+/* FIXME: Obsolete CM_Set_Class_Registry_Property */
+/* FIXME: Obsolete CM_Set_DevNode_Problem */
+/* FIXME: Obsolete CM_Set_DevNode_Problem_Ex */
+/* FIXME: Obsolete CM_Set_DevNode_Registry_Property */
+/* FIXME: Obsolete CM_Set_DevNode_Registry_Property_Ex */
+/* FIXME: Obsolete CM_Set_HW_Prof */
+/* FIXME: Obsolete CM_Set_HW_Prof_Ex */
+/* FIXME: Obsolete CM_Set_HW_Prof_Flags */
+/* FIXME: Obsolete CM_Set_HW_Prof_Flags_Ex */
+/* FIXME: Obsolete CM_Setup_DevNode */
+/* FIXME: Obsolete CM_Setup_DevNode_Ex */
+/* FIXME: Obsolete CM_Test_Range_Available */
+/* FIXME: Obsolete CM_Uninstall_DevNode */
+/* FIXME: Obsolete CM_Uninstall_DevNode_Ex */
+/* FIXME: Obsolete CM_Unregister_Device_Interface */
+/* FIXME: Obsolete CM_Unregister_Device_Interface_Ex */
+
+#define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents
+
+CMAPI
+DWORD
+WINAPI
+CMP_WaitNoPendingInstallEvents(
+  /*IN*/ DWORD dwTimeout);
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CFGMGR32_H */