Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _CFGMGR32_H_
      7 #define _CFGMGR32_H_
      8 
      9 #include <_mingw_unicode.h>
     10 #include <cfg.h>
     11 #include <guiddef.h>
     12 
     13 #ifdef __cplusplus
     14 extern "C" {
     15 #endif
     16 
     17 #ifndef _CFGMGR32_
     18 #define CMAPI DECLSPEC_IMPORT
     19 #else
     20 #define CMAPI
     21 #endif
     22 
     23   typedef CONST VOID *PCVOID;
     24 
     25 #define MAX_DEVICE_ID_LEN 200
     26 #define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN
     27 #define MAX_GUID_STRING_LEN 39
     28 #define MAX_CLASS_NAME_LEN 32
     29 #define MAX_PROFILE_LEN 80
     30 #define MAX_CONFIG_VALUE 9999
     31 #define MAX_INSTANCE_VALUE 9999
     32 #define MAX_MEM_REGISTERS 9
     33 #define MAX_IO_PORTS 20
     34 #define MAX_IRQS 7
     35 #define MAX_DMA_CHANNELS 7
     36 
     37 #define DWORD_MAX 0xFFFFFFFF
     38 #define DWORDLONG_MAX 0xFFFFFFFFFFFFFFFF
     39 
     40 #define CONFIGMG_VERSION 0x0400
     41 
     42 #ifdef NT_INCLUDED
     43   __MINGW_EXTENSION typedef unsigned __int64 DWORDLONG;
     44   typedef DWORDLONG *PDWORDLONG;
     45 #endif
     46 
     47   typedef DWORD RETURN_TYPE;
     48   typedef RETURN_TYPE CONFIGRET;
     49   typedef DWORD DEVNODE,DEVINST;
     50   typedef DEVNODE *PDEVNODE,*PDEVINST;
     51   typedef CHAR *DEVNODEID_A,*DEVINSTID_A;
     52   typedef WCHAR *DEVNODEID_W,*DEVINSTID_W;
     53 
     54   __MINGW_TYPEDEF_UAW(DEVNODEID)
     55   __MINGW_TYPEDEF_UAW(DEVINSTID)
     56 
     57   typedef DWORD_PTR LOG_CONF;
     58   typedef LOG_CONF *PLOG_CONF;
     59   typedef DWORD_PTR RES_DES;
     60   typedef RES_DES *PRES_DES;
     61   typedef ULONG RESOURCEID;
     62   typedef RESOURCEID *PRESOURCEID;
     63   typedef ULONG PRIORITY;
     64   typedef PRIORITY *PPRIORITY;
     65   typedef DWORD_PTR RANGE_LIST;
     66   typedef RANGE_LIST *PRANGE_LIST;
     67   typedef DWORD_PTR RANGE_ELEMENT;
     68   typedef RANGE_ELEMENT *PRANGE_ELEMENT;
     69   typedef HANDLE HMACHINE;
     70   typedef HMACHINE *PHMACHINE;
     71   typedef ULONG_PTR CONFLICT_LIST;
     72   typedef CONFLICT_LIST *PCONFLICT_LIST;
     73 
     74   typedef struct _CONFLICT_DETAILS_A {
     75     ULONG CD_ulSize;
     76     ULONG CD_ulMask;
     77     DEVINST CD_dnDevInst;
     78     RES_DES CD_rdResDes;
     79     ULONG CD_ulFlags;
     80     CHAR CD_szDescription[MAX_PATH];
     81   } CONFLICT_DETAILS_A ,*PCONFLICT_DETAILS_A;
     82 
     83   typedef struct _CONFLICT_DETAILS_W {
     84     ULONG CD_ulSize;
     85     ULONG CD_ulMask;
     86     DEVINST CD_dnDevInst;
     87     RES_DES CD_rdResDes;
     88     ULONG CD_ulFlags;
     89     WCHAR CD_szDescription[MAX_PATH];
     90   } CONFLICT_DETAILS_W ,*PCONFLICT_DETAILS_W;
     91 
     92   __MINGW_TYPEDEF_UAW(CONFLICT_DETAILS)
     93   __MINGW_TYPEDEF_UAW(PCONFLICT_DETAILS)
     94 
     95 #define CM_CDMASK_DEVINST (0x00000001)
     96 #define CM_CDMASK_RESDES (0x00000002)
     97 #define CM_CDMASK_FLAGS (0x00000004)
     98 #define CM_CDMASK_DESCRIPTION (0x00000008)
     99 #define CM_CDMASK_VALID (0x0000000F)
    100 
    101 #define CM_CDFLAGS_DRIVER (0x00000001)
    102 #define CM_CDFLAGS_ROOT_OWNED (0x00000002)
    103 #define CM_CDFLAGS_RESERVED (0x00000004)
    104 
    105   typedef ULONG REGDISPOSITION;
    106 
    107 #include "pshpack1.h"
    108 
    109 #define mMD_MemoryType (0x1)
    110 #define fMD_MemoryType mMD_MemoryType
    111 #define fMD_ROM (0x0)
    112 #define fMD_RAM (0x1)
    113 
    114 #define mMD_32_24 (0x2)
    115 #define fMD_32_24 mMD_32_24
    116 #define fMD_24 (0x0)
    117 #define fMD_32 (0x2)
    118 
    119 #define mMD_Prefetchable (0x4)
    120 #define fMD_Prefetchable mMD_Prefetchable
    121 #define fMD_Pref mMD_Prefetchable
    122 #define fMD_PrefetchDisallowed (0x0)
    123 #define fMD_PrefetchAllowed (0x4)
    124 
    125 #define mMD_Readable (0x8)
    126 #define fMD_Readable mMD_Readable
    127 #define fMD_ReadAllowed (0x0)
    128 #define fMD_ReadDisallowed (0x8)
    129 
    130 #define mMD_CombinedWrite (0x10)
    131 #define fMD_CombinedWrite mMD_CombinedWrite
    132 #define fMD_CombinedWriteDisallowed (0x0)
    133 #define fMD_CombinedWriteAllowed (0x10)
    134 
    135 #define mMD_Cacheable (0x20)
    136 #define fMD_NonCacheable (0x0)
    137 #define fMD_Cacheable (0x20)
    138 
    139   typedef struct Mem_Range_s {
    140     DWORDLONG MR_Align;
    141     ULONG MR_nBytes;
    142     DWORDLONG MR_Min;
    143     DWORDLONG MR_Max;
    144     DWORD MR_Flags;
    145     DWORD MR_Reserved;
    146   } MEM_RANGE,*PMEM_RANGE;
    147 
    148   typedef struct Mem_Des_s {
    149     DWORD MD_Count;
    150     DWORD MD_Type;
    151     DWORDLONG MD_Alloc_Base;
    152     DWORDLONG MD_Alloc_End;
    153     DWORD MD_Flags;
    154     DWORD MD_Reserved;
    155   } MEM_DES,*PMEM_DES;
    156 
    157   typedef struct Mem_Resource_s {
    158     MEM_DES MEM_Header;
    159     MEM_RANGE MEM_Data[ANYSIZE_ARRAY];
    160   } MEM_RESOURCE,*PMEM_RESOURCE;
    161 
    162 #define MType_Range sizeof(struct Mem_Range_s)
    163 
    164 #define fIOD_PortType (0x1)
    165 #define fIOD_Memory (0x0)
    166 #define fIOD_IO (0x1)
    167 #define fIOD_DECODE (0x00fc)
    168 #define fIOD_10_BIT_DECODE (0x0004)
    169 #define fIOD_12_BIT_DECODE (0x0008)
    170 #define fIOD_16_BIT_DECODE (0x0010)
    171 #define fIOD_POSITIVE_DECODE (0x0020)
    172 #define fIOD_PASSIVE_DECODE (0x0040)
    173 #define fIOD_WINDOW_DECODE (0x0080)
    174 
    175 #define IO_ALIAS_10_BIT_DECODE (0x00000004)
    176 #define IO_ALIAS_12_BIT_DECODE (0x00000010)
    177 #define IO_ALIAS_16_BIT_DECODE (0x00000000)
    178 #define IO_ALIAS_POSITIVE_DECODE (0x000000FF)
    179 
    180   typedef struct IO_Range_s {
    181     DWORDLONG IOR_Align;
    182     DWORD IOR_nPorts;
    183     DWORDLONG IOR_Min;
    184     DWORDLONG IOR_Max;
    185     DWORD IOR_RangeFlags;
    186     DWORDLONG IOR_Alias;
    187   } IO_RANGE,*PIO_RANGE;
    188 
    189   typedef struct IO_Des_s {
    190     DWORD IOD_Count;
    191     DWORD IOD_Type;
    192     DWORDLONG IOD_Alloc_Base;
    193     DWORDLONG IOD_Alloc_End;
    194     DWORD IOD_DesFlags;
    195   } IO_DES,*PIO_DES;
    196 
    197   typedef struct IO_Resource_s {
    198     IO_DES IO_Header;
    199     IO_RANGE IO_Data[ANYSIZE_ARRAY];
    200   } IO_RESOURCE,*PIO_RESOURCE;
    201 
    202 #define IOA_Local 0xff
    203 
    204 #define IOType_Range sizeof(struct IO_Range_s)
    205 
    206 #define mDD_Width (0x3)
    207 #define fDD_BYTE (0x0)
    208 #define fDD_WORD (0x1)
    209 #define fDD_DWORD (0x2)
    210 #define fDD_BYTE_AND_WORD (0x3)
    211 
    212 #define mDD_BusMaster (0x4)
    213 #define fDD_NoBusMaster (0x0)
    214 #define fDD_BusMaster (0x4)
    215 
    216 #define mDD_Type (0x18)
    217 #define fDD_TypeStandard (0x00)
    218 #define fDD_TypeA (0x08)
    219 #define fDD_TypeB (0x10)
    220 #define fDD_TypeF (0x18)
    221 
    222   typedef struct DMA_Range_s {
    223     ULONG DR_Min;
    224     ULONG DR_Max;
    225     ULONG DR_Flags;
    226   } DMA_RANGE,*PDMA_RANGE;
    227 
    228   typedef struct DMA_Des_s {
    229     DWORD DD_Count;
    230     DWORD DD_Type;
    231     DWORD DD_Flags;
    232     ULONG DD_Alloc_Chan;
    233   } DMA_DES,*PDMA_DES;
    234 
    235   typedef struct DMA_Resource_s {
    236     DMA_DES DMA_Header;
    237     DMA_RANGE DMA_Data[ANYSIZE_ARRAY];
    238   } DMA_RESOURCE,*PDMA_RESOURCE;
    239 
    240 #define DType_Range sizeof(struct DMA_Range_s)
    241 
    242 #define mIRQD_Share (0x1)
    243 #define fIRQD_Exclusive (0x0)
    244 #define fIRQD_Share (0x1)
    245 
    246 #define fIRQD_Share_Bit 0
    247 #define fIRQD_Level_Bit 1
    248 
    249 #define mIRQD_Edge_Level (0x2)
    250 #define fIRQD_Level (0x0)
    251 #define fIRQD_Edge (0x2)
    252 
    253   typedef struct IRQ_Range_s {
    254     ULONG IRQR_Min;
    255     ULONG IRQR_Max;
    256     ULONG IRQR_Flags;
    257   } IRQ_RANGE,*PIRQ_RANGE;
    258 
    259   typedef struct IRQ_Des_32_s {
    260     DWORD IRQD_Count;
    261     DWORD IRQD_Type;
    262     DWORD IRQD_Flags;
    263     ULONG IRQD_Alloc_Num;
    264     ULONG32 IRQD_Affinity;
    265   } IRQ_DES_32,*PIRQ_DES_32;
    266 
    267   typedef struct IRQ_Des_64_s {
    268     DWORD IRQD_Count;
    269     DWORD IRQD_Type;
    270     DWORD IRQD_Flags;
    271     ULONG IRQD_Alloc_Num;
    272     ULONG64 IRQD_Affinity;
    273   } IRQ_DES_64,*PIRQ_DES_64;
    274 
    275 #ifdef _WIN64
    276   typedef IRQ_DES_64 IRQ_DES;
    277   typedef PIRQ_DES_64 PIRQ_DES;
    278 #else
    279   typedef IRQ_DES_32 IRQ_DES;
    280   typedef PIRQ_DES_32 PIRQ_DES;
    281 #endif
    282 
    283   typedef struct IRQ_Resource_32_s {
    284     IRQ_DES_32 IRQ_Header;
    285     IRQ_RANGE IRQ_Data[ANYSIZE_ARRAY];
    286   } IRQ_RESOURCE_32,*PIRQ_RESOURCE_32;
    287 
    288   typedef struct IRQ_Resource_64_s {
    289     IRQ_DES_64 IRQ_Header;
    290     IRQ_RANGE IRQ_Data[ANYSIZE_ARRAY];
    291   } IRQ_RESOURCE_64,*PIRQ_RESOURCE_64;
    292 
    293 #ifdef _WIN64
    294   typedef IRQ_RESOURCE_64 IRQ_RESOURCE;
    295   typedef PIRQ_RESOURCE_64 PIRQ_RESOURCE;
    296 #else
    297   typedef IRQ_RESOURCE_32 IRQ_RESOURCE;
    298   typedef PIRQ_RESOURCE_32 PIRQ_RESOURCE;
    299 #endif
    300 
    301 #define IRQType_Range sizeof(struct IRQ_Range_s)
    302 
    303 #define CM_RESDES_WIDTH_DEFAULT (0x00000000)
    304 #define CM_RESDES_WIDTH_32 (0x00000001)
    305 #define CM_RESDES_WIDTH_64 (0x00000002)
    306 #define CM_RESDES_WIDTH_BITS (0x00000003)
    307 
    308   typedef struct DevPrivate_Range_s {
    309     DWORD PR_Data1;
    310     DWORD PR_Data2;
    311     DWORD PR_Data3;
    312   } DEVPRIVATE_RANGE,*PDEVPRIVATE_RANGE;
    313 
    314   typedef struct DevPrivate_Des_s {
    315     DWORD PD_Count;
    316     DWORD PD_Type;
    317     DWORD PD_Data1;
    318     DWORD PD_Data2;
    319     DWORD PD_Data3;
    320     DWORD PD_Flags;
    321   } DEVPRIVATE_DES,*PDEVPRIVATE_DES;
    322 
    323   typedef struct DevPrivate_Resource_s {
    324     DEVPRIVATE_DES PRV_Header;
    325     DEVPRIVATE_RANGE PRV_Data[ANYSIZE_ARRAY];
    326   } DEVPRIVATE_RESOURCE,*PDEVPRIVATE_RESOURCE;
    327 
    328 #define PType_Range sizeof(struct DevPrivate_Range_s)
    329 
    330   typedef struct CS_Des_s {
    331     DWORD CSD_SignatureLength;
    332     DWORD CSD_LegacyDataOffset;
    333     DWORD CSD_LegacyDataSize;
    334     DWORD CSD_Flags;
    335     GUID CSD_ClassGuid;
    336     BYTE CSD_Signature[ANYSIZE_ARRAY];
    337   } CS_DES,*PCS_DES;
    338 
    339   typedef struct CS_Resource_s {
    340     CS_DES CS_Header;
    341   } CS_RESOURCE,*PCS_RESOURCE;
    342 
    343 #define mPCD_IO_8_16 (0x1)
    344 #define fPCD_IO_8 (0x0)
    345 #define fPCD_IO_16 (0x1)
    346 #define mPCD_MEM_8_16 (0x2)
    347 #define fPCD_MEM_8 (0x0)
    348 #define fPCD_MEM_16 (0x2)
    349 #define mPCD_MEM_A_C (0xC)
    350 #define fPCD_MEM1_A (0x4)
    351 #define fPCD_MEM2_A (0x8)
    352 #define fPCD_IO_ZW_8 (0x10)
    353 #define fPCD_IO_SRC_16 (0x20)
    354 #define fPCD_IO_WS_16 (0x40)
    355 #define mPCD_MEM_WS (0x300)
    356 #define fPCD_MEM_WS_ONE (0x100)
    357 #define fPCD_MEM_WS_TWO (0x200)
    358 #define fPCD_MEM_WS_THREE (0x300)
    359 
    360 #define fPCD_MEM_A (0x4)
    361 
    362 #define fPCD_ATTRIBUTES_PER_WINDOW (0x8000)
    363 
    364 #define fPCD_IO1_16 (0x00010000)
    365 #define fPCD_IO1_ZW_8 (0x00020000)
    366 #define fPCD_IO1_SRC_16 (0x00040000)
    367 #define fPCD_IO1_WS_16 (0x00080000)
    368 
    369 #define fPCD_IO2_16 (0x00100000)
    370 #define fPCD_IO2_ZW_8 (0x00200000)
    371 #define fPCD_IO2_SRC_16 (0x00400000)
    372 #define fPCD_IO2_WS_16 (0x00800000)
    373 
    374 #define mPCD_MEM1_WS (0x03000000)
    375 #define fPCD_MEM1_WS_ONE (0x01000000)
    376 #define fPCD_MEM1_WS_TWO (0x02000000)
    377 #define fPCD_MEM1_WS_THREE (0x03000000)
    378 #define fPCD_MEM1_16 (0x04000000)
    379 
    380 #define mPCD_MEM2_WS (0x30000000)
    381 #define fPCD_MEM2_WS_ONE (0x10000000)
    382 #define fPCD_MEM2_WS_TWO (0x20000000)
    383 #define fPCD_MEM2_WS_THREE (0x30000000)
    384 #define fPCD_MEM2_16 (0x40000000)
    385 
    386 #define PCD_MAX_MEMORY 2
    387 #define PCD_MAX_IO 2
    388 
    389   typedef struct PcCard_Des_s {
    390     DWORD PCD_Count;
    391     DWORD PCD_Type;
    392     DWORD PCD_Flags;
    393     BYTE PCD_ConfigIndex;
    394     BYTE PCD_Reserved[3];
    395     DWORD PCD_MemoryCardBase1;
    396     DWORD PCD_MemoryCardBase2;
    397     DWORD PCD_MemoryCardBase[PCD_MAX_MEMORY];
    398     WORD PCD_MemoryFlags[PCD_MAX_MEMORY];
    399     BYTE PCD_IoFlags[PCD_MAX_IO];
    400   } PCCARD_DES,*PPCCARD_DES;
    401 
    402   typedef struct PcCard_Resource_s {
    403     PCCARD_DES PcCard_Header;
    404   } PCCARD_RESOURCE,*PPCCARD_RESOURCE;
    405 
    406 #define mPMF_AUDIO_ENABLE (0x8)
    407 #define fPMF_AUDIO_ENABLE (0x8)
    408 
    409   typedef struct MfCard_Des_s {
    410     DWORD PMF_Count;
    411     DWORD PMF_Type;
    412     DWORD PMF_Flags;
    413     BYTE PMF_ConfigOptions;
    414     BYTE PMF_IoResourceIndex;
    415     BYTE PMF_Reserved[2];
    416     DWORD PMF_ConfigRegisterBase;
    417   } MFCARD_DES,*PMFCARD_DES;
    418 
    419   typedef struct MfCard_Resource_s {
    420     MFCARD_DES MfCard_Header;
    421   } MFCARD_RESOURCE,*PMFCARD_RESOURCE;
    422 
    423   typedef struct BusNumber_Range_s {
    424     ULONG BUSR_Min;
    425     ULONG BUSR_Max;
    426     ULONG BUSR_nBusNumbers;
    427     ULONG BUSR_Flags;
    428   } BUSNUMBER_RANGE,*PBUSNUMBER_RANGE;
    429 
    430   typedef struct BusNumber_Des_s {
    431     DWORD BUSD_Count;
    432     DWORD BUSD_Type;
    433     DWORD BUSD_Flags;
    434     ULONG BUSD_Alloc_Base;
    435     ULONG BUSD_Alloc_End;
    436   } BUSNUMBER_DES,*PBUSNUMBER_DES;
    437 
    438   typedef struct BusNumber_Resource_s {
    439     BUSNUMBER_DES BusNumber_Header;
    440     BUSNUMBER_RANGE BusNumber_Data[ANYSIZE_ARRAY];
    441   } BUSNUMBER_RESOURCE,*PBUSNUMBER_RESOURCE;
    442 
    443 #define BusNumberType_Range sizeof(struct BusNumber_Range_s)
    444 
    445 #define CM_HWPI_NOT_DOCKABLE (0x00000000)
    446 #define CM_HWPI_UNDOCKED (0x00000001)
    447 #define CM_HWPI_DOCKED (0x00000002)
    448 
    449   typedef struct HWProfileInfo_sA {
    450     ULONG HWPI_ulHWProfile;
    451     CHAR HWPI_szFriendlyName[MAX_PROFILE_LEN];
    452     DWORD HWPI_dwFlags;
    453   } HWPROFILEINFO_A,*PHWPROFILEINFO_A;
    454 
    455   typedef struct HWProfileInfo_sW {
    456     ULONG HWPI_ulHWProfile;
    457     WCHAR HWPI_szFriendlyName[MAX_PROFILE_LEN];
    458     DWORD HWPI_dwFlags;
    459   } HWPROFILEINFO_W,*PHWPROFILEINFO_W;
    460 
    461   __MINGW_TYPEDEF_UAW(HWPROFILEINFO)
    462   __MINGW_TYPEDEF_UAW(PHWPROFILEINFO)
    463 
    464 #include "poppack.h"
    465 
    466 #define ResType_All (0x00000000)
    467 #define ResType_None (0x00000000)
    468 #define ResType_Mem (0x00000001)
    469 #define ResType_IO (0x00000002)
    470 #define ResType_DMA (0x00000003)
    471 #define ResType_IRQ (0x00000004)
    472 #define ResType_DoNotUse (0x00000005)
    473 #define ResType_BusNumber (0x00000006)
    474 #define ResType_MAX (0x00000006)
    475 #define ResType_Ignored_Bit (0x00008000)
    476 #define ResType_ClassSpecific (0x0000FFFF)
    477 #define ResType_Reserved (0x00008000)
    478 #define ResType_DevicePrivate (0x00008001)
    479 #define ResType_PcCardConfig (0x00008002)
    480 #define ResType_MfCardConfig (0x00008003)
    481 
    482 #define CM_ADD_RANGE_ADDIFCONFLICT (0x00000000)
    483 #define CM_ADD_RANGE_DONOTADDIFCONFLICT (0x00000001)
    484 #define CM_ADD_RANGE_BITS (0x00000001)
    485 
    486 #define BASIC_LOG_CONF 0x00000000
    487 #define FILTERED_LOG_CONF 0x00000001
    488 #define ALLOC_LOG_CONF 0x00000002
    489 #define BOOT_LOG_CONF 0x00000003
    490 #define FORCED_LOG_CONF 0x00000004
    491 #define OVERRIDE_LOG_CONF 0x00000005
    492 #define NUM_LOG_CONF 0x00000006
    493 #define LOG_CONF_BITS 0x00000007
    494 
    495 #define PRIORITY_EQUAL_FIRST (0x00000008)
    496 #define PRIORITY_EQUAL_LAST (0x00000000)
    497 #define PRIORITY_BIT (0x00000008)
    498 
    499 #define RegDisposition_OpenAlways (0x00000000)
    500 #define RegDisposition_OpenExisting (0x00000001)
    501 #define RegDisposition_Bits (0x00000001)
    502 
    503 #define CM_ADD_ID_HARDWARE (0x00000000)
    504 #define CM_ADD_ID_COMPATIBLE (0x00000001)
    505 #define CM_ADD_ID_BITS (0x00000001)
    506 
    507 #define CM_CREATE_DEVNODE_NORMAL (0x00000000)
    508 #define CM_CREATE_DEVNODE_NO_WAIT_INSTALL (0x00000001)
    509 #define CM_CREATE_DEVNODE_PHANTOM (0x00000002)
    510 #define CM_CREATE_DEVNODE_GENERATE_ID (0x00000004)
    511 #define CM_CREATE_DEVNODE_DO_NOT_INSTALL (0x00000008)
    512 #define CM_CREATE_DEVNODE_BITS (0x0000000F)
    513 
    514 #define CM_CREATE_DEVINST_NORMAL CM_CREATE_DEVNODE_NORMAL
    515 #define CM_CREATE_DEVINST_NO_WAIT_INSTALL CM_CREATE_DEVNODE_NO_WAIT_INSTALL
    516 #define CM_CREATE_DEVINST_PHANTOM CM_CREATE_DEVNODE_PHANTOM
    517 #define CM_CREATE_DEVINST_GENERATE_ID CM_CREATE_DEVNODE_GENERATE_ID
    518 #define CM_CREATE_DEVINST_DO_NOT_INSTALL CM_CREATE_DEVNODE_DO_NOT_INSTALL
    519 #define CM_CREATE_DEVINST_BITS CM_CREATE_DEVNODE_BITS
    520 
    521 #define CM_DELETE_CLASS_ONLY (0x00000000)
    522 #define CM_DELETE_CLASS_SUBKEYS (0x00000001)
    523 #define CM_DELETE_CLASS_BITS (0x00000001)
    524 
    525 #define CM_DETECT_NEW_PROFILE (0x00000001)
    526 #define CM_DETECT_CRASHED (0x00000002)
    527 #define CM_DETECT_HWPROF_FIRST_BOOT (0x00000004)
    528 #define CM_DETECT_RUN (0x80000000)
    529 #define CM_DETECT_BITS (0x80000007)
    530 
    531 #define CM_DISABLE_POLITE (0x00000000)
    532 #define CM_DISABLE_ABSOLUTE (0x00000001)
    533 #define CM_DISABLE_HARDWARE (0x00000002)
    534 #define CM_DISABLE_UI_NOT_OK (0x00000004)
    535 #define CM_DISABLE_BITS (0x00000007)
    536 
    537 #define CM_GETIDLIST_FILTER_NONE (0x00000000)
    538 #define CM_GETIDLIST_FILTER_ENUMERATOR (0x00000001)
    539 #define CM_GETIDLIST_FILTER_SERVICE (0x00000002)
    540 #define CM_GETIDLIST_FILTER_EJECTRELATIONS (0x00000004)
    541 #define CM_GETIDLIST_FILTER_REMOVALRELATIONS (0x00000008)
    542 #define CM_GETIDLIST_FILTER_POWERRELATIONS (0x00000010)
    543 #define CM_GETIDLIST_FILTER_BUSRELATIONS (0x00000020)
    544 #define CM_GETIDLIST_DONOTGENERATE (0x10000040)
    545 #define CM_GETIDLIST_FILTER_BITS (0x1000007F)
    546 
    547 #define CM_GET_DEVICE_INTERFACE_LIST_PRESENT (0x00000000)
    548 #define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES (0x00000001)
    549 #define CM_GET_DEVICE_INTERFACE_LIST_BITS (0x00000001)
    550 
    551 #define CM_DRP_DEVICEDESC (0x00000001)
    552 #define CM_DRP_HARDWAREID (0x00000002)
    553 #define CM_DRP_COMPATIBLEIDS (0x00000003)
    554 #define CM_DRP_UNUSED0 (0x00000004)
    555 #define CM_DRP_SERVICE (0x00000005)
    556 #define CM_DRP_UNUSED1 (0x00000006)
    557 #define CM_DRP_UNUSED2 (0x00000007)
    558 #define CM_DRP_CLASS (0x00000008)
    559 #define CM_DRP_CLASSGUID (0x00000009)
    560 #define CM_DRP_DRIVER (0x0000000A)
    561 #define CM_DRP_CONFIGFLAGS (0x0000000B)
    562 #define CM_DRP_MFG (0x0000000C)
    563 #define CM_DRP_FRIENDLYNAME (0x0000000D)
    564 #define CM_DRP_LOCATION_INFORMATION (0x0000000E)
    565 #define CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME (0x0000000F)
    566 #define CM_DRP_CAPABILITIES (0x00000010)
    567 #define CM_DRP_UI_NUMBER (0x00000011)
    568 #define CM_DRP_UPPERFILTERS (0x00000012)
    569 #define CM_DRP_LOWERFILTERS (0x00000013)
    570 #define CM_DRP_BUSTYPEGUID (0x00000014)
    571 #define CM_DRP_LEGACYBUSTYPE (0x00000015)
    572 #define CM_DRP_BUSNUMBER (0x00000016)
    573 #define CM_DRP_ENUMERATOR_NAME (0x00000017)
    574 #define CM_DRP_SECURITY (0x00000018)
    575 #define CM_CRP_SECURITY CM_DRP_SECURITY
    576 #define CM_DRP_SECURITY_SDS (0x00000019)
    577 #define CM_CRP_SECURITY_SDS CM_DRP_SECURITY_SDS
    578 #define CM_DRP_DEVTYPE (0x0000001A)
    579 #define CM_CRP_DEVTYPE CM_DRP_DEVTYPE
    580 #define CM_DRP_EXCLUSIVE (0x0000001B)
    581 #define CM_CRP_EXCLUSIVE CM_DRP_EXCLUSIVE
    582 #define CM_DRP_CHARACTERISTICS (0x0000001C)
    583 #define CM_CRP_CHARACTERISTICS CM_DRP_CHARACTERISTICS
    584 #define CM_DRP_ADDRESS (0x0000001D)
    585 #define CM_DRP_UI_NUMBER_DESC_FORMAT (0x0000001E)
    586 #define CM_DRP_DEVICE_POWER_DATA (0x0000001F)
    587 #define CM_DRP_REMOVAL_POLICY (0x00000020)
    588 #define CM_DRP_REMOVAL_POLICY_HW_DEFAULT (0x00000021)
    589 #define CM_DRP_REMOVAL_POLICY_OVERRIDE (0x00000022)
    590 #define CM_DRP_INSTALL_STATE (0x00000023)
    591 
    592 #define CM_DRP_MIN (0x00000001)
    593 #define CM_CRP_MIN CM_DRP_MIN
    594 #define CM_DRP_MAX (0x00000023)
    595 #define CM_CRP_MAX CM_DRP_MAX
    596 
    597 #define CM_DEVCAP_LOCKSUPPORTED (0x00000001)
    598 #define CM_DEVCAP_EJECTSUPPORTED (0x00000002)
    599 #define CM_DEVCAP_REMOVABLE (0x00000004)
    600 #define CM_DEVCAP_DOCKDEVICE (0x00000008)
    601 #define CM_DEVCAP_UNIQUEID (0x00000010)
    602 #define CM_DEVCAP_SILENTINSTALL (0x00000020)
    603 #define CM_DEVCAP_RAWDEVICEOK (0x00000040)
    604 #define CM_DEVCAP_SURPRISEREMOVALOK (0x00000080)
    605 #define CM_DEVCAP_HARDWAREDISABLED (0x00000100)
    606 #define CM_DEVCAP_NONDYNAMIC (0x00000200)
    607 
    608 #define CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL 1
    609 #define CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL 2
    610 #define CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL 3
    611 
    612 #define CM_INSTALL_STATE_INSTALLED 0
    613 #define CM_INSTALL_STATE_NEEDS_REINSTALL 1
    614 #define CM_INSTALL_STATE_FAILED_INSTALL 2
    615 #define CM_INSTALL_STATE_FINISH_INSTALL 3
    616 
    617 #define CM_LOCATE_DEVNODE_NORMAL 0x00000000
    618 #define CM_LOCATE_DEVNODE_PHANTOM 0x00000001
    619 #define CM_LOCATE_DEVNODE_CANCELREMOVE 0x00000002
    620 #define CM_LOCATE_DEVNODE_NOVALIDATION 0x00000004
    621 #define CM_LOCATE_DEVNODE_BITS 0x00000007
    622 
    623 #define CM_LOCATE_DEVINST_NORMAL CM_LOCATE_DEVNODE_NORMAL
    624 #define CM_LOCATE_DEVINST_PHANTOM CM_LOCATE_DEVNODE_PHANTOM
    625 #define CM_LOCATE_DEVINST_CANCELREMOVE CM_LOCATE_DEVNODE_CANCELREMOVE
    626 #define CM_LOCATE_DEVINST_NOVALIDATION CM_LOCATE_DEVNODE_NOVALIDATION
    627 #define CM_LOCATE_DEVINST_BITS CM_LOCATE_DEVNODE_BITS
    628 
    629 #define CM_OPEN_CLASS_KEY_INSTALLER (0x00000000)
    630 #define CM_OPEN_CLASS_KEY_INTERFACE (0x00000001)
    631 #define CM_OPEN_CLASS_KEY_BITS (0x00000001)
    632 
    633 #define CM_REMOVE_UI_OK 0x00000000
    634 #define CM_REMOVE_UI_NOT_OK 0x00000001
    635 #define CM_REMOVE_NO_RESTART 0x00000002
    636 #define CM_REMOVE_BITS 0x00000003
    637 
    638 #define CM_QUERY_REMOVE_UI_OK (CM_REMOVE_UI_OK)
    639 #define CM_QUERY_REMOVE_UI_NOT_OK (CM_REMOVE_UI_NOT_OK)
    640 #define CM_QUERY_REMOVE_BITS (CM_QUERY_REMOVE_UI_OK|CM_QUERY_REMOVE_UI_NOT_OK)
    641 
    642 #define CM_REENUMERATE_NORMAL 0x00000000
    643 #define CM_REENUMERATE_SYNCHRONOUS 0x00000001
    644 #define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002
    645 #define CM_REENUMERATE_ASYNCHRONOUS 0x00000004
    646 #define CM_REENUMERATE_BITS 0x00000007
    647 
    648 #define CM_REGISTER_DEVICE_DRIVER_STATIC (0x00000000)
    649 #define CM_REGISTER_DEVICE_DRIVER_DISABLEABLE (0x00000001)
    650 #define CM_REGISTER_DEVICE_DRIVER_REMOVABLE (0x00000002)
    651 #define CM_REGISTER_DEVICE_DRIVER_BITS (0x00000003)
    652 
    653 #define CM_REGISTRY_HARDWARE (0x00000000)
    654 #define CM_REGISTRY_SOFTWARE (0x00000001)
    655 #define CM_REGISTRY_USER (0x00000100)
    656 #define CM_REGISTRY_CONFIG (0x00000200)
    657 #define CM_REGISTRY_BITS (0x00000301)
    658 
    659 #define CM_SET_DEVNODE_PROBLEM_NORMAL (0x00000000)
    660 #define CM_SET_DEVNODE_PROBLEM_OVERRIDE (0x00000001)
    661 #define CM_SET_DEVNODE_PROBLEM_BITS (0x00000001)
    662 
    663 #define CM_SET_DEVINST_PROBLEM_NORMAL CM_SET_DEVNODE_PROBLEM_NORMAL
    664 #define CM_SET_DEVINST_PROBLEM_OVERRIDE CM_SET_DEVNODE_PROBLEM_OVERRIDE
    665 #define CM_SET_DEVINST_PROBLEM_BITS CM_SET_DEVNODE_PROBLEM_BITS
    666 
    667 #define CM_SET_HW_PROF_FLAGS_UI_NOT_OK (0x00000001)
    668 #define CM_SET_HW_PROF_FLAGS_BITS (0x00000001)
    669 
    670 #define CM_SETUP_DEVNODE_READY (0x00000000)
    671 #define CM_SETUP_DEVINST_READY CM_SETUP_DEVNODE_READY
    672 #define CM_SETUP_DOWNLOAD (0x00000001)
    673 #define CM_SETUP_WRITE_LOG_CONFS (0x00000002)
    674 #define CM_SETUP_PROP_CHANGE (0x00000003)
    675 #define CM_SETUP_DEVNODE_RESET (0x00000004)
    676 #define CM_SETUP_DEVINST_RESET CM_SETUP_DEVNODE_RESET
    677 #define CM_SETUP_BITS (0x00000007)
    678 
    679 #define CM_QUERY_ARBITRATOR_RAW (0x00000000)
    680 #define CM_QUERY_ARBITRATOR_TRANSLATED (0x00000001)
    681 #define CM_QUERY_ARBITRATOR_BITS (0x00000001)
    682 
    683 #define CM_CUSTOMDEVPROP_MERGE_MULTISZ (0x00000001)
    684 #define CM_CUSTOMDEVPROP_BITS (0x00000001)
    685 
    686 #define CM_Add_ID __MINGW_NAME_AW(CM_Add_ID)
    687 #define CM_Add_ID_Ex __MINGW_NAME_AW(CM_Add_ID_Ex)
    688 #define CM_Connect_Machine __MINGW_NAME_AW(CM_Connect_Machine)
    689 #define CM_Create_DevNode __MINGW_NAME_AW(CM_Create_DevNode)
    690 #define CM_Create_DevInst __MINGW_NAME_AW(CM_Create_DevNode)
    691 #define CM_Create_DevNode_Ex __MINGW_NAME_AW(CM_Create_DevNode_Ex)
    692 #define CM_Create_DevInst_Ex __MINGW_NAME_AW(CM_Create_DevInst_Ex)
    693 #define CM_Enumerate_Enumerators __MINGW_NAME_AW(CM_Enumerate_Enumerators)
    694 #define CM_Enumerate_Enumerators_Ex __MINGW_NAME_AW(CM_Enumerate_Enumerators_Ex)
    695 #define CM_Get_Class_Name __MINGW_NAME_AW(CM_Get_Class_Name)
    696 #define CM_Get_Class_Name_Ex __MINGW_NAME_AW(CM_Get_Class_Name_Ex)
    697 #define CM_Get_Class_Key_Name __MINGW_NAME_AW(CM_Get_Class_Key_Name)
    698 #define CM_Get_Class_Key_Name_Ex __MINGW_NAME_AW(CM_Get_Class_Key_Name_Ex)
    699 #define CM_Get_Device_ID __MINGW_NAME_AW(CM_Get_Device_ID)
    700 #define CM_Get_Device_ID_Ex __MINGW_NAME_AW(CM_Get_Device_ID_Ex)
    701 #define CM_Get_Device_ID_List __MINGW_NAME_AW(CM_Get_Device_ID_List)
    702 #define CM_Get_Device_ID_List_Ex __MINGW_NAME_AW(CM_Get_Device_ID_List_Ex)
    703 #define CM_Get_Device_ID_List_Size __MINGW_NAME_AW(CM_Get_Device_ID_List_Size)
    704 #define CM_Get_Device_ID_List_Size_Ex __MINGW_NAME_AW(CM_Get_Device_ID_List_Size_Ex)
    705 #define CM_Get_DevInst_Registry_Property __MINGW_NAME_AW(CM_Get_DevNode_Registry_Property)
    706 #define CM_Get_DevInst_Registry_Property_Ex __MINGW_NAME_AW(CM_Get_DevNode_Registry_Property_Ex)
    707 #define CM_Get_DevNode_Registry_Property __MINGW_NAME_AW(CM_Get_DevNode_Registry_Property)
    708 #define CM_Get_DevNode_Registry_Property_Ex __MINGW_NAME_AW(CM_Get_DevNode_Registry_Property_Ex)
    709 #define CM_Get_DevInst_Custom_Property __MINGW_NAME_AW(CM_Get_DevNode_Custom_Property)
    710 #define CM_Get_DevInst_Custom_Property_Ex __MINGW_NAME_AW(CM_Get_DevNode_Custom_Property_Ex)
    711 #define CM_Get_DevNode_Custom_Property __MINGW_NAME_AW(CM_Get_DevNode_Custom_Property)
    712 #define CM_Get_DevNode_Custom_Property_Ex __MINGW_NAME_AW(CM_Get_DevNode_Custom_Property_Ex)
    713 #define CM_Get_Hardware_Profile_Info __MINGW_NAME_AW(CM_Get_Hardware_Profile_Info)
    714 #define CM_Get_Hardware_Profile_Info_Ex __MINGW_NAME_AW(CM_Get_Hardware_Profile_Info_Ex)
    715 #define CM_Get_HW_Prof_Flags __MINGW_NAME_AW(CM_Get_HW_Prof_Flags)
    716 #define CM_Get_HW_Prof_Flags_Ex __MINGW_NAME_AW(CM_Get_HW_Prof_Flags_Ex)
    717 #define CM_Get_Device_Interface_Alias __MINGW_NAME_AW(CM_Get_Device_Interface_Alias)
    718 #define CM_Get_Device_Interface_Alias_Ex __MINGW_NAME_AW(CM_Get_Device_Interface_Alias_Ex)
    719 #define CM_Get_Device_Interface_List __MINGW_NAME_AW(CM_Get_Device_Interface_List)
    720 #define CM_Get_Device_Interface_List_Ex __MINGW_NAME_AW(CM_Get_Device_Interface_List_Ex)
    721 #define CM_Get_Device_Interface_List_Size __MINGW_NAME_AW(CM_Get_Device_Interface_List_Size)
    722 #define CM_Get_Device_Interface_List_Size_Ex __MINGW_NAME_AW(CM_Get_Device_Interface_List_Size_Ex)
    723 #define CM_Locate_DevNode __MINGW_NAME_AW(CM_Locate_DevNode)
    724 #define CM_Locate_DevInst __MINGW_NAME_AW(CM_Locate_DevNode)
    725 #define CM_Locate_DevNode_Ex __MINGW_NAME_AW(CM_Locate_DevNode_Ex)
    726 #define CM_Locate_DevInst_Ex __MINGW_NAME_AW(CM_Locate_DevNode_Ex)
    727 #define CM_Open_Class_Key __MINGW_NAME_AW(CM_Open_Class_Key)
    728 #define CM_Open_Class_Key_Ex __MINGW_NAME_AW(CM_Open_Class_Key_Ex)
    729 #define CM_Query_And_Remove_SubTree __MINGW_NAME_AW(CM_Query_And_Remove_SubTree)
    730 #define CM_Query_And_Remove_SubTree_Ex __MINGW_NAME_AW(CM_Query_And_Remove_SubTree_Ex)
    731 #define CM_Request_Device_Eject __MINGW_NAME_AW(CM_Request_Device_Eject)
    732 #define CM_Request_Device_Eject_Ex __MINGW_NAME_AW(CM_Request_Device_Eject_Ex)
    733 #define CM_Register_Device_Interface __MINGW_NAME_AW(CM_Register_Device_Interface)
    734 #define CM_Register_Device_Interface_Ex __MINGW_NAME_AW(CM_Register_Device_Interface_Ex)
    735 #define CM_Unregister_Device_Interface __MINGW_NAME_AW(CM_Unregister_Device_Interface)
    736 #define CM_Unregister_Device_Interface_Ex __MINGW_NAME_AW(CM_Unregister_Device_Interface_Ex)
    737 #define CM_Set_DevInst_Registry_Property __MINGW_NAME_AW(CM_Set_DevNode_Registry_Property)
    738 #define CM_Set_DevInst_Registry_Property_Ex __MINGW_NAME_AW(CM_Set_DevNode_Registry_Property_Ex)
    739 #define CM_Set_DevNode_Registry_Property __MINGW_NAME_AW(CM_Set_DevNode_Registry_Property)
    740 #define CM_Set_DevNode_Registry_Property_Ex __MINGW_NAME_AW(CM_Set_DevNode_Registry_Property_Ex)
    741 #define CM_Set_HW_Prof_Flags __MINGW_NAME_AW(CM_Set_HW_Prof_Flags)
    742 #define CM_Set_HW_Prof_Flags_Ex __MINGW_NAME_AW(CM_Set_HW_Prof_Flags_Ex)
    743 #define CM_Get_Resource_Conflict_Details __MINGW_NAME_AW(CM_Get_Resource_Conflict_Details)
    744 #define CM_Get_Class_Registry_Property __MINGW_NAME_AW(CM_Get_Class_Registry_Property)
    745 #define CM_Set_Class_Registry_Property __MINGW_NAME_AW(CM_Set_Class_Registry_Property)
    746 
    747   CMAPI CONFIGRET WINAPI CM_Add_Empty_Log_Conf(PLOG_CONF plcLogConf,DEVINST dnDevInst,PRIORITY Priority,ULONG ulFlags);
    748   CMAPI CONFIGRET WINAPI CM_Add_Empty_Log_Conf_Ex(PLOG_CONF plcLogConf,DEVINST dnDevInst,PRIORITY Priority,ULONG ulFlags,HMACHINE hMachine);
    749   CMAPI CONFIGRET WINAPI CM_Add_IDA(DEVINST dnDevInst,PSTR pszID,ULONG ulFlags);
    750   CMAPI CONFIGRET WINAPI CM_Add_IDW(DEVINST dnDevInst,PWSTR pszID,ULONG ulFlags);
    751   CMAPI CONFIGRET WINAPI CM_Add_ID_ExA(DEVINST dnDevInst,PSTR pszID,ULONG ulFlags,HMACHINE hMachine);
    752   CMAPI CONFIGRET WINAPI CM_Add_ID_ExW(DEVINST dnDevInst,PWSTR pszID,ULONG ulFlags,HMACHINE hMachine);
    753   CMAPI CONFIGRET WINAPI CM_Add_Range(DWORDLONG ullStartValue,DWORDLONG ullEndValue,RANGE_LIST rlh,ULONG ulFlags);
    754   CMAPI CONFIGRET WINAPI CM_Add_Res_Des(PRES_DES prdResDes,LOG_CONF lcLogConf,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags);
    755   CMAPI CONFIGRET WINAPI CM_Add_Res_Des_Ex(PRES_DES prdResDes,LOG_CONF lcLogConf,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags,HMACHINE hMachine);
    756   CMAPI CONFIGRET WINAPI CM_Connect_MachineA(PCSTR UNCServerName,PHMACHINE phMachine);
    757   CMAPI CONFIGRET WINAPI CM_Connect_MachineW(PCWSTR UNCServerName,PHMACHINE phMachine);
    758   CMAPI CONFIGRET WINAPI CM_Create_DevNodeA(PDEVINST pdnDevInst,DEVINSTID_A pDeviceID,DEVINST dnParent,ULONG ulFlags);
    759   CMAPI CONFIGRET WINAPI CM_Create_DevNodeW(PDEVINST pdnDevInst,DEVINSTID_W pDeviceID,DEVINST dnParent,ULONG ulFlags);
    760   CMAPI CONFIGRET WINAPI CM_Create_DevNode_ExA(PDEVINST pdnDevInst,DEVINSTID_A pDeviceID,DEVINST dnParent,ULONG ulFlags,HANDLE hMachine);
    761   CMAPI CONFIGRET WINAPI CM_Create_DevNode_ExW(PDEVINST pdnDevInst,DEVINSTID_W pDeviceID,DEVINST dnParent,ULONG ulFlags,HANDLE hMachine);
    762 #define CM_Create_DevInstW CM_Create_DevNodeW
    763 #define CM_Create_DevInstA CM_Create_DevNodeA
    764 #define CM_Create_DevInst_ExW CM_Create_DevNode_ExW
    765 #define CM_Create_DevInst_ExA CM_Create_DevNode_ExA
    766   CMAPI CONFIGRET WINAPI CM_Create_Range_List(PRANGE_LIST prlh,ULONG ulFlags);
    767   CMAPI CONFIGRET WINAPI CM_Delete_Class_Key(LPGUID ClassGuid,ULONG ulFlags);
    768   CMAPI CONFIGRET WINAPI CM_Delete_Class_Key_Ex(LPGUID ClassGuid,ULONG ulFlags,HANDLE hMachine);
    769   CMAPI CONFIGRET WINAPI CM_Delete_DevNode_Key(DEVNODE dnDevNode,ULONG ulHardwareProfile,ULONG ulFlags);
    770   CMAPI CONFIGRET WINAPI CM_Delete_DevNode_Key_Ex(DEVNODE dnDevNode,ULONG ulHardwareProfile,ULONG ulFlags,HANDLE hMachine);
    771 #define CM_Delete_DevInst_Key CM_Delete_DevNode_Key
    772 #define CM_Delete_DevInst_Key_Ex CM_Delete_DevNode_Key_Ex
    773   CMAPI CONFIGRET WINAPI CM_Delete_Range(DWORDLONG ullStartValue,DWORDLONG ullEndValue,RANGE_LIST rlh,ULONG ulFlags);
    774   CMAPI CONFIGRET WINAPI CM_Detect_Resource_Conflict(DEVINST dnDevInst,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,PBOOL pbConflictDetected,ULONG ulFlags);
    775   CMAPI CONFIGRET WINAPI CM_Detect_Resource_Conflict_Ex(DEVINST dnDevInst,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,PBOOL pbConflictDetected,ULONG ulFlags,HMACHINE hMachine);
    776   CMAPI CONFIGRET WINAPI CM_Disable_DevNode(DEVINST dnDevInst,ULONG ulFlags);
    777   CMAPI CONFIGRET WINAPI CM_Disable_DevNode_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
    778 #define CM_Disable_DevInst CM_Disable_DevNode
    779 #define CM_Disable_DevInst_Ex CM_Disable_DevNode_Ex
    780   CMAPI CONFIGRET WINAPI CM_Disconnect_Machine(HMACHINE hMachine);
    781   CMAPI CONFIGRET WINAPI CM_Dup_Range_List(RANGE_LIST rlhOld,RANGE_LIST rlhNew,ULONG ulFlags);
    782   CMAPI CONFIGRET WINAPI CM_Enable_DevNode(DEVINST dnDevInst,ULONG ulFlags);
    783   CMAPI CONFIGRET WINAPI CM_Enable_DevNode_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
    784 #define CM_Enable_DevInst CM_Enable_DevNode
    785 #define CM_Enable_DevInst_Ex CM_Enable_DevNode_Ex
    786   CMAPI CONFIGRET WINAPI CM_Enumerate_Classes(ULONG ulClassIndex,LPGUID ClassGuid,ULONG ulFlags);
    787   CMAPI CONFIGRET WINAPI CM_Enumerate_Classes_Ex(ULONG ulClassIndex,LPGUID ClassGuid,ULONG ulFlags,HMACHINE hMachine);
    788   CMAPI CONFIGRET WINAPI CM_Enumerate_EnumeratorsA(ULONG ulEnumIndex,PCHAR Buffer,PULONG pulLength,ULONG ulFlags);
    789   CMAPI CONFIGRET WINAPI CM_Enumerate_EnumeratorsW(ULONG ulEnumIndex,PWCHAR Buffer,PULONG pulLength,ULONG ulFlags);
    790   CMAPI CONFIGRET WINAPI CM_Enumerate_Enumerators_ExA(ULONG ulEnumIndex,PCHAR Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    791   CMAPI CONFIGRET WINAPI CM_Enumerate_Enumerators_ExW(ULONG ulEnumIndex,PWCHAR Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    792   CMAPI CONFIGRET WINAPI CM_Find_Range(PDWORDLONG pullStart,DWORDLONG ullStart,ULONG ulLength,DWORDLONG ullAlignment,DWORDLONG ullEnd,RANGE_LIST rlh,ULONG ulFlags);
    793   CMAPI CONFIGRET WINAPI CM_First_Range(RANGE_LIST rlh,PDWORDLONG pullStart,PDWORDLONG pullEnd,PRANGE_ELEMENT preElement,ULONG ulFlags);
    794   CMAPI CONFIGRET WINAPI CM_Free_Log_Conf(LOG_CONF lcLogConfToBeFreed,ULONG ulFlags);
    795   CMAPI CONFIGRET WINAPI CM_Free_Log_Conf_Ex(LOG_CONF lcLogConfToBeFreed,ULONG ulFlags,HMACHINE hMachine);
    796   CMAPI CONFIGRET WINAPI CM_Free_Log_Conf_Handle(LOG_CONF lcLogConf);
    797   CMAPI CONFIGRET WINAPI CM_Free_Range_List(RANGE_LIST rlh,ULONG ulFlags);
    798   CMAPI CONFIGRET WINAPI CM_Free_Res_Des(PRES_DES prdResDes,RES_DES rdResDes,ULONG ulFlags);
    799   CMAPI CONFIGRET WINAPI CM_Free_Res_Des_Ex(PRES_DES prdResDes,RES_DES rdResDes,ULONG ulFlags,HMACHINE hMachine);
    800   CMAPI CONFIGRET WINAPI CM_Free_Res_Des_Handle(RES_DES rdResDes);
    801   CMAPI CONFIGRET WINAPI CM_Get_Child(PDEVINST pdnDevInst,DEVINST dnDevInst,ULONG ulFlags);
    802   CMAPI CONFIGRET WINAPI CM_Get_Child_Ex(PDEVINST pdnDevInst,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
    803   CMAPI CONFIGRET WINAPI CM_Get_Class_NameA(LPGUID ClassGuid,PCHAR Buffer,PULONG pulLength,ULONG ulFlags);
    804   CMAPI CONFIGRET WINAPI CM_Get_Class_NameW(LPGUID ClassGuid,PWCHAR Buffer,PULONG pulLength,ULONG ulFlags);
    805   CMAPI CONFIGRET WINAPI CM_Get_Class_Name_ExA(LPGUID ClassGuid,PCHAR Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    806   CMAPI CONFIGRET WINAPI CM_Get_Class_Name_ExW(LPGUID ClassGuid,PWCHAR Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    807   CMAPI CONFIGRET WINAPI CM_Get_Class_Key_NameA(LPGUID ClassGuid,LPSTR pszKeyName,PULONG pulLength,ULONG ulFlags);
    808   CMAPI CONFIGRET WINAPI CM_Get_Class_Key_NameW(LPGUID ClassGuid,LPWSTR pszKeyName,PULONG pulLength,ULONG ulFlags);
    809   CMAPI CONFIGRET WINAPI CM_Get_Class_Key_Name_ExA(LPGUID ClassGuid,LPSTR pszKeyName,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    810   CMAPI CONFIGRET WINAPI CM_Get_Class_Key_Name_ExW(LPGUID ClassGuid,LPWSTR pszKeyName,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    811   CMAPI CONFIGRET WINAPI CM_Get_Depth(PULONG pulDepth,DEVINST dnDevInst,ULONG ulFlags);
    812   CMAPI CONFIGRET WINAPI CM_Get_Depth_Ex(PULONG pulDepth,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
    813   CMAPI CONFIGRET WINAPI CM_Get_Device_IDA(DEVINST dnDevInst,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
    814   CMAPI CONFIGRET WINAPI CM_Get_Device_IDW(DEVINST dnDevInst,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
    815   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_ExA(DEVINST dnDevInst,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
    816   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_ExW(DEVINST dnDevInst,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
    817   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_ListA(PCSTR pszFilter,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
    818   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_ListW(PCWSTR pszFilter,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
    819   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_ExA(PCSTR pszFilter,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
    820   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_ExW(PCWSTR pszFilter,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
    821   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA(PULONG pulLen,PCSTR pszFilter,ULONG ulFlags);
    822   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW(PULONG pulLen,PCWSTR pszFilter,ULONG ulFlags);
    823   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExA(PULONG pulLen,PCSTR pszFilter,ULONG ulFlags,HMACHINE hMachine);
    824   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW(PULONG pulLen,PCWSTR pszFilter,ULONG ulFlags,HMACHINE hMachine);
    825   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_Size(PULONG pulLen,DEVINST dnDevInst,ULONG ulFlags);
    826   CMAPI CONFIGRET WINAPI CM_Get_Device_ID_Size_Ex(PULONG pulLen,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
    827   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyA(DEVINST dnDevInst,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags);
    828   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyW(DEVINST dnDevInst,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags);
    829   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExA(DEVINST dnDevInst,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    830   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExW(DEVINST dnDevInst,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    831 #define CM_Get_DevInst_Registry_PropertyW CM_Get_DevNode_Registry_PropertyW
    832 #define CM_Get_DevInst_Registry_PropertyA CM_Get_DevNode_Registry_PropertyA
    833 #define CM_Get_DevInst_Registry_Property_ExW CM_Get_DevNode_Registry_Property_ExW
    834 #define CM_Get_DevInst_Registry_Property_ExA CM_Get_DevNode_Registry_Property_ExA
    835   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Custom_PropertyA(DEVINST dnDevInst,PCSTR pszCustomPropertyName,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags);
    836   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Custom_PropertyW(DEVINST dnDevInst,PCWSTR pszCustomPropertyName,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags);
    837   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Custom_Property_ExA(DEVINST dnDevInst,PCSTR pszCustomPropertyName,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    838   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Custom_Property_ExW(DEVINST dnDevInst,PCWSTR pszCustomPropertyName,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    839 #define CM_Get_DevInst_Custom_PropertyW CM_Get_DevNode_Custom_PropertyW
    840 #define CM_Get_DevInst_Custom_PropertyA CM_Get_DevNode_Custom_PropertyA
    841 #define CM_Get_DevInst_Custom_Property_ExW CM_Get_DevNode_Custom_Property_ExW
    842 #define CM_Get_DevInst_Custom_Property_ExA CM_Get_DevNode_Custom_Property_ExA
    843   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Status(PULONG pulStatus,PULONG pulProblemNumber,DEVINST dnDevInst,ULONG ulFlags);
    844   CMAPI CONFIGRET WINAPI CM_Get_DevNode_Status_Ex(PULONG pulStatus,PULONG pulProblemNumber,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
    845 #define CM_Get_DevInst_Status CM_Get_DevNode_Status
    846 #define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex
    847   CMAPI CONFIGRET WINAPI CM_Get_First_Log_Conf(PLOG_CONF plcLogConf,DEVINST dnDevInst,ULONG ulFlags);
    848   CMAPI CONFIGRET WINAPI CM_Get_First_Log_Conf_Ex(PLOG_CONF plcLogConf,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
    849   CMAPI CONFIGRET WINAPI CM_Get_Global_State(PULONG pulState,ULONG ulFlags);
    850   CMAPI CONFIGRET WINAPI CM_Get_Global_State_Ex(PULONG pulState,ULONG ulFlags,HMACHINE hMachine);
    851   CMAPI CONFIGRET WINAPI CM_Get_Hardware_Profile_InfoA(ULONG ulIndex,PHWPROFILEINFO_A pHWProfileInfo,ULONG ulFlags);
    852   CMAPI CONFIGRET WINAPI CM_Get_Hardware_Profile_Info_ExA(ULONG ulIndex,PHWPROFILEINFO_A pHWProfileInfo,ULONG ulFlags,HMACHINE hMachine);
    853   CMAPI CONFIGRET WINAPI CM_Get_Hardware_Profile_InfoW(ULONG ulIndex,PHWPROFILEINFO_W pHWProfileInfo,ULONG ulFlags);
    854   CMAPI CONFIGRET WINAPI CM_Get_Hardware_Profile_Info_ExW(ULONG ulIndex,PHWPROFILEINFO_W pHWProfileInfo,ULONG ulFlags,HMACHINE hMachine);
    855   CMAPI CONFIGRET WINAPI CM_Get_HW_Prof_FlagsA(DEVINSTID_A szDevInstName,ULONG ulHardwareProfile,PULONG pulValue,ULONG ulFlags);
    856   CMAPI CONFIGRET WINAPI CM_Get_HW_Prof_FlagsW(DEVINSTID_W szDevInstName,ULONG ulHardwareProfile,PULONG pulValue,ULONG ulFlags);
    857   CMAPI CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExA(DEVINSTID_A szDevInstName,ULONG ulHardwareProfile,PULONG pulValue,ULONG ulFlags,HMACHINE hMachine);
    858   CMAPI CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExW(DEVINSTID_W szDevInstName,ULONG ulHardwareProfile,PULONG pulValue,ULONG ulFlags,HMACHINE hMachine);
    859   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_AliasA(LPCSTR pszDeviceInterface,LPGUID AliasInterfaceGuid,LPSTR pszAliasDeviceInterface,PULONG pulLength,ULONG ulFlags);
    860   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_AliasW(LPCWSTR pszDeviceInterface,LPGUID AliasInterfaceGuid,LPWSTR pszAliasDeviceInterface,PULONG pulLength,ULONG ulFlags);
    861   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_Alias_ExA(LPCSTR pszDeviceInterface,LPGUID AliasInterfaceGuid,LPSTR pszAliasDeviceInterface,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    862   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_Alias_ExW(LPCWSTR pszDeviceInterface,LPGUID AliasInterfaceGuid,LPWSTR pszAliasDeviceInterface,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    863   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_ListA(LPGUID InterfaceClassGuid,DEVINSTID_A pDeviceID,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
    864   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_ListW(LPGUID InterfaceClassGuid,DEVINSTID_W pDeviceID,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
    865   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_ExA(LPGUID InterfaceClassGuid,DEVINSTID_A pDeviceID,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
    866   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_ExW(LPGUID InterfaceClassGuid,DEVINSTID_W pDeviceID,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
    867   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_SizeA(PULONG pulLen,LPGUID InterfaceClassGuid,DEVINSTID_A pDeviceID,ULONG ulFlags);
    868   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_SizeW(PULONG pulLen,LPGUID InterfaceClassGuid,DEVINSTID_W pDeviceID,ULONG ulFlags);
    869   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExA(PULONG pulLen,LPGUID InterfaceClassGuid,DEVINSTID_A pDeviceID,ULONG ulFlags,HMACHINE hMachine);
    870   CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExW(PULONG pulLen,LPGUID InterfaceClassGuid,DEVINSTID_W pDeviceID,ULONG ulFlags,HMACHINE hMachine);
    871   CMAPI CONFIGRET WINAPI CM_Get_Log_Conf_Priority(LOG_CONF lcLogConf,PPRIORITY pPriority,ULONG ulFlags);
    872   CMAPI CONFIGRET WINAPI CM_Get_Log_Conf_Priority_Ex(LOG_CONF lcLogConf,PPRIORITY pPriority,ULONG ulFlags,HMACHINE hMachine);
    873   CMAPI CONFIGRET WINAPI CM_Get_Next_Log_Conf(PLOG_CONF plcLogConf,LOG_CONF lcLogConf,ULONG ulFlags);
    874   CMAPI CONFIGRET WINAPI CM_Get_Next_Log_Conf_Ex(PLOG_CONF plcLogConf,LOG_CONF lcLogConf,ULONG ulFlags,HMACHINE hMachine);
    875   CMAPI CONFIGRET WINAPI CM_Get_Parent(PDEVINST pdnDevInst,DEVINST dnDevInst,ULONG ulFlags);
    876   CMAPI CONFIGRET WINAPI CM_Get_Parent_Ex(PDEVINST pdnDevInst,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
    877   CMAPI CONFIGRET WINAPI CM_Get_Res_Des_Data(RES_DES rdResDes,PVOID Buffer,ULONG BufferLen,ULONG ulFlags);
    878   CMAPI CONFIGRET WINAPI CM_Get_Res_Des_Data_Ex(RES_DES rdResDes,PVOID Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
    879   CMAPI CONFIGRET WINAPI CM_Get_Res_Des_Data_Size(PULONG pulSize,RES_DES rdResDes,ULONG ulFlags);
    880   CMAPI CONFIGRET WINAPI CM_Get_Res_Des_Data_Size_Ex(PULONG pulSize,RES_DES rdResDes,ULONG ulFlags,HMACHINE hMachine);
    881   CMAPI CONFIGRET WINAPI CM_Get_Sibling(PDEVINST pdnDevInst,DEVINST DevInst,ULONG ulFlags);
    882   CMAPI CONFIGRET WINAPI CM_Get_Sibling_Ex(PDEVINST pdnDevInst,DEVINST DevInst,ULONG ulFlags,HMACHINE hMachine);
    883   CMAPI WORD WINAPI CM_Get_Version(VOID);
    884   CMAPI WORD WINAPI CM_Get_Version_Ex(HMACHINE hMachine);
    885   CMAPI WINBOOL WINAPI CM_Is_Version_Available(WORD wVersion);
    886   CMAPI WINBOOL WINAPI CM_Is_Version_Available_Ex(WORD wVersion,HMACHINE hMachine);
    887   CMAPI CONFIGRET WINAPI CM_Intersect_Range_List(RANGE_LIST rlhOld1,RANGE_LIST rlhOld2,RANGE_LIST rlhNew,ULONG ulFlags);
    888   CMAPI CONFIGRET WINAPI CM_Invert_Range_List(RANGE_LIST rlhOld,RANGE_LIST rlhNew,DWORDLONG ullMaxValue,ULONG ulFlags);
    889   CMAPI CONFIGRET WINAPI CM_Locate_DevNodeA(PDEVINST pdnDevInst,DEVINSTID_A pDeviceID,ULONG ulFlags);
    890   CMAPI CONFIGRET WINAPI CM_Locate_DevNodeW(PDEVINST pdnDevInst,DEVINSTID_W pDeviceID,ULONG ulFlags);
    891   CMAPI CONFIGRET WINAPI CM_Locate_DevNode_ExA(PDEVINST pdnDevInst,DEVINSTID_A pDeviceID,ULONG ulFlags,HMACHINE hMachine);
    892   CMAPI CONFIGRET WINAPI CM_Locate_DevNode_ExW(PDEVINST pdnDevInst,DEVINSTID_W pDeviceID,ULONG ulFlags,HMACHINE hMachine);
    893 #define CM_Locate_DevInstA CM_Locate_DevNodeA
    894 #define CM_Locate_DevInstW CM_Locate_DevNodeW
    895 #define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA
    896 #define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW
    897   CMAPI CONFIGRET WINAPI CM_Merge_Range_List(RANGE_LIST rlhOld1,RANGE_LIST rlhOld2,RANGE_LIST rlhNew,ULONG ulFlags);
    898   CMAPI CONFIGRET WINAPI CM_Modify_Res_Des(PRES_DES prdResDes,RES_DES rdResDes,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags);
    899   CMAPI CONFIGRET WINAPI CM_Modify_Res_Des_Ex(PRES_DES prdResDes,RES_DES rdResDes,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags,HMACHINE hMachine);
    900   CMAPI CONFIGRET WINAPI CM_Move_DevNode(DEVINST dnFromDevInst,DEVINST dnToDevInst,ULONG ulFlags);
    901   CMAPI CONFIGRET WINAPI CM_Move_DevNode_Ex(DEVINST dnFromDevInst,DEVINST dnToDevInst,ULONG ulFlags,HMACHINE hMachine);
    902 #define CM_Move_DevInst CM_Move_DevNode
    903 #define CM_Move_DevInst_Ex CM_Move_DevNode_Ex
    904   CMAPI CONFIGRET WINAPI CM_Next_Range(PRANGE_ELEMENT preElement,PDWORDLONG pullStart,PDWORDLONG pullEnd,ULONG ulFlags);
    905   CMAPI CONFIGRET WINAPI CM_Get_Next_Res_Des(PRES_DES prdResDes,RES_DES rdResDes,RESOURCEID ForResource,PRESOURCEID pResourceID,ULONG ulFlags);
    906   CMAPI CONFIGRET WINAPI CM_Get_Next_Res_Des_Ex(PRES_DES prdResDes,RES_DES rdResDes,RESOURCEID ForResource,PRESOURCEID pResourceID,ULONG ulFlags,HMACHINE hMachine);
    907   CMAPI CONFIGRET WINAPI CM_Open_Class_KeyA(LPGUID ClassGuid,LPCSTR pszClassName,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkClass,ULONG ulFlags);
    908   CMAPI CONFIGRET WINAPI CM_Open_Class_KeyW(LPGUID ClassGuid,LPCWSTR pszClassName,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkClass,ULONG ulFlags);
    909   CMAPI CONFIGRET WINAPI CM_Open_Class_Key_ExA(LPGUID pszClassGuid,LPCSTR pszClassName,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkClass,ULONG ulFlags,HMACHINE hMachine);
    910   CMAPI CONFIGRET WINAPI CM_Open_Class_Key_ExW(LPGUID pszClassGuid,LPCWSTR pszClassName,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkClass,ULONG ulFlags,HMACHINE hMachine);
    911   CMAPI CONFIGRET WINAPI CM_Open_DevNode_Key(DEVINST dnDevNode,REGSAM samDesired,ULONG ulHardwareProfile,REGDISPOSITION Disposition,PHKEY phkDevice,ULONG ulFlags);
    912   CMAPI CONFIGRET WINAPI CM_Open_DevNode_Key_Ex(DEVINST dnDevNode,REGSAM samDesired,ULONG ulHardwareProfile,REGDISPOSITION Disposition,PHKEY phkDevice,ULONG ulFlags,HMACHINE hMachine);
    913 #define CM_Open_DevInst_Key CM_Open_DevNode_Key
    914 #define CM_Open_DevInst_Key_Ex CM_Open_DevNode_Key_Ex
    915   CMAPI CONFIGRET WINAPI CM_Query_Arbitrator_Free_Data(PVOID pData,ULONG DataLen,DEVINST dnDevInst,RESOURCEID ResourceID,ULONG ulFlags);
    916   CMAPI CONFIGRET WINAPI CM_Query_Arbitrator_Free_Data_Ex(PVOID pData,ULONG DataLen,DEVINST dnDevInst,RESOURCEID ResourceID,ULONG ulFlags,HMACHINE hMachine);
    917   CMAPI CONFIGRET WINAPI CM_Query_Arbitrator_Free_Size(PULONG pulSize,DEVINST dnDevInst,RESOURCEID ResourceID,ULONG ulFlags);
    918   CMAPI CONFIGRET WINAPI CM_Query_Arbitrator_Free_Size_Ex(PULONG pulSize,DEVINST dnDevInst,RESOURCEID ResourceID,ULONG ulFlags,HMACHINE hMachine);
    919   CMAPI CONFIGRET WINAPI CM_Query_Remove_SubTree(DEVINST dnAncestor,ULONG ulFlags);
    920   CMAPI CONFIGRET WINAPI CM_Query_Remove_SubTree_Ex(DEVINST dnAncestor,ULONG ulFlags,HMACHINE hMachine);
    921   CMAPI CONFIGRET WINAPI CM_Query_And_Remove_SubTreeA(DEVINST dnAncestor,PPNP_VETO_TYPE pVetoType,LPSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags);
    922   CMAPI CONFIGRET WINAPI CM_Query_And_Remove_SubTree_ExA(DEVINST dnAncestor,PPNP_VETO_TYPE pVetoType,LPSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags,HMACHINE hMachine);
    923   CMAPI CONFIGRET WINAPI CM_Query_And_Remove_SubTreeW(DEVINST dnAncestor,PPNP_VETO_TYPE pVetoType,LPWSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags);
    924   CMAPI CONFIGRET WINAPI CM_Query_And_Remove_SubTree_ExW(DEVINST dnAncestor,PPNP_VETO_TYPE pVetoType,LPWSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags,HMACHINE hMachine);
    925   CMAPI CONFIGRET WINAPI CM_Request_Device_EjectA(DEVINST dnDevInst,PPNP_VETO_TYPE pVetoType,LPSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags);
    926   CMAPI CONFIGRET WINAPI CM_Request_Device_Eject_ExA(DEVINST dnDevInst,PPNP_VETO_TYPE pVetoType,LPSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags,HMACHINE hMachine);
    927   CMAPI CONFIGRET WINAPI CM_Request_Device_EjectW(DEVINST dnDevInst,PPNP_VETO_TYPE pVetoType,LPWSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags);
    928   CMAPI CONFIGRET WINAPI CM_Request_Device_Eject_ExW(DEVINST dnDevInst,PPNP_VETO_TYPE pVetoType,LPWSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags,HMACHINE hMachine);
    929   CMAPI CONFIGRET WINAPI CM_Reenumerate_DevNode(DEVINST dnDevInst,ULONG ulFlags);
    930   CMAPI CONFIGRET WINAPI CM_Reenumerate_DevNode_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
    931 #define CM_Reenumerate_DevInst CM_Reenumerate_DevNode
    932 #define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex
    933   CMAPI CONFIGRET WINAPI CM_Register_Device_InterfaceA(DEVINST dnDevInst,LPGUID InterfaceClassGuid,LPCSTR pszReference,LPSTR pszDeviceInterface,PULONG pulLength,ULONG ulFlags);
    934   CMAPI CONFIGRET WINAPI CM_Register_Device_InterfaceW(DEVINST dnDevInst,LPGUID InterfaceClassGuid,LPCWSTR pszReference,LPWSTR pszDeviceInterface,PULONG pulLength,ULONG ulFlags);
    935   CMAPI CONFIGRET WINAPI CM_Register_Device_Interface_ExA(DEVINST dnDevInst,LPGUID InterfaceClassGuid,LPCSTR pszReference,LPSTR pszDeviceInterface,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    936   CMAPI CONFIGRET WINAPI CM_Register_Device_Interface_ExW(DEVINST dnDevInst,LPGUID InterfaceClassGuid,LPCWSTR pszReference,LPWSTR pszDeviceInterface,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    937   CMAPI CONFIGRET WINAPI CM_Set_DevNode_Problem_Ex(DEVINST dnDevInst,ULONG ulProblem,ULONG ulFlags,HMACHINE hMachine);
    938   CMAPI CONFIGRET WINAPI CM_Set_DevNode_Problem(DEVINST dnDevInst,ULONG ulProblem,ULONG ulFlags);
    939 #define CM_Set_DevInst_Problem CM_Set_DevNode_Problem
    940 #define CM_Set_DevInst_Problem_Ex CM_Set_DevNode_Problem_Ex
    941   CMAPI CONFIGRET WINAPI CM_Unregister_Device_InterfaceA(LPCSTR pszDeviceInterface,ULONG ulFlags);
    942   CMAPI CONFIGRET WINAPI CM_Unregister_Device_InterfaceW(LPCWSTR pszDeviceInterface,ULONG ulFlags);
    943   CMAPI CONFIGRET WINAPI CM_Unregister_Device_Interface_ExA(LPCSTR pszDeviceInterface,ULONG ulFlags,HMACHINE hMachine);
    944   CMAPI CONFIGRET WINAPI CM_Unregister_Device_Interface_ExW(LPCWSTR pszDeviceInterface,ULONG ulFlags,HMACHINE hMachine);
    945   CMAPI CONFIGRET WINAPI CM_Register_Device_Driver(DEVINST dnDevInst,ULONG ulFlags);
    946   CMAPI CONFIGRET WINAPI CM_Register_Device_Driver_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
    947   CMAPI CONFIGRET WINAPI CM_Remove_SubTree(DEVINST dnAncestor,ULONG ulFlags);
    948   CMAPI CONFIGRET WINAPI CM_Remove_SubTree_Ex(DEVINST dnAncestor,ULONG ulFlags,HMACHINE hMachine);
    949   CMAPI CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyA(DEVINST dnDevInst,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags);
    950   CMAPI CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyW(DEVINST dnDevInst,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags);
    951   CMAPI CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExA(DEVINST dnDevInst,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags,HMACHINE hMachine);
    952   CMAPI CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExW(DEVINST dnDevInst,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags,HMACHINE hMachine);
    953 #define CM_Set_DevInst_Registry_PropertyW CM_Set_DevNode_Registry_PropertyW
    954 #define CM_Set_DevInst_Registry_PropertyA CM_Set_DevNode_Registry_PropertyA
    955 #define CM_Set_DevInst_Registry_Property_ExW CM_Set_DevNode_Registry_Property_ExW
    956 #define CM_Set_DevInst_Registry_Property_ExA CM_Set_DevNode_Registry_Property_ExA
    957   CMAPI CONFIGRET WINAPI CM_Is_Dock_Station_Present(PBOOL pbPresent);
    958   CMAPI CONFIGRET WINAPI CM_Is_Dock_Station_Present_Ex(PBOOL pbPresent,HMACHINE hMachine);
    959   CMAPI CONFIGRET WINAPI CM_Request_Eject_PC(VOID);
    960   CMAPI CONFIGRET WINAPI CM_Request_Eject_PC_Ex(HMACHINE hMachine);
    961   CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_FlagsA(DEVINSTID_A szDevInstName,ULONG ulConfig,ULONG ulValue,ULONG ulFlags);
    962   CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_FlagsW(DEVINSTID_W szDevInstName,ULONG ulConfig,ULONG ulValue,ULONG ulFlags);
    963   CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExA(DEVINSTID_A szDevInstName,ULONG ulConfig,ULONG ulValue,ULONG ulFlags,HMACHINE hMachine);
    964   CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExW(DEVINSTID_W szDevInstName,ULONG ulConfig,ULONG ulValue,ULONG ulFlags,HMACHINE hMachine);
    965   CMAPI CONFIGRET WINAPI CM_Setup_DevNode(DEVINST dnDevInst,ULONG ulFlags);
    966   CMAPI CONFIGRET WINAPI CM_Setup_DevNode_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
    967 #define CM_Setup_DevInst CM_Setup_DevNode
    968 #define CM_Setup_DevInst_Ex CM_Setup_DevNode_Ex
    969   CMAPI CONFIGRET WINAPI CM_Test_Range_Available(DWORDLONG ullStartValue,DWORDLONG ullEndValue,RANGE_LIST rlh,ULONG ulFlags);
    970   CMAPI CONFIGRET WINAPI CM_Uninstall_DevNode(DEVNODE dnPhantom,ULONG ulFlags);
    971   CMAPI CONFIGRET WINAPI CM_Uninstall_DevNode_Ex(DEVNODE dnPhantom,ULONG ulFlags,HANDLE hMachine);
    972 #define CM_Uninstall_DevInst CM_Uninstall_DevNode
    973 #define CM_Uninstall_DevInst_Ex CM_Uninstall_DevNode_Ex
    974   CMAPI CONFIGRET WINAPI CM_Run_Detection(ULONG ulFlags);
    975   CMAPI CONFIGRET WINAPI CM_Run_Detection_Ex(ULONG ulFlags,HMACHINE hMachine);
    976   CMAPI CONFIGRET WINAPI CM_Set_HW_Prof(ULONG ulHardwareProfile,ULONG ulFlags);
    977   CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_Ex(ULONG ulHardwareProfile,ULONG ulFlags,HMACHINE hMachine);
    978   CMAPI CONFIGRET WINAPI CM_Query_Resource_Conflict_List(PCONFLICT_LIST pclConflictList,DEVINST dnDevInst,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags,HMACHINE hMachine);
    979   CMAPI CONFIGRET WINAPI CM_Free_Resource_Conflict_Handle(CONFLICT_LIST clConflictList);
    980   CMAPI CONFIGRET WINAPI CM_Get_Resource_Conflict_Count(CONFLICT_LIST clConflictList,PULONG pulCount);
    981   CMAPI CONFIGRET WINAPI CM_Get_Resource_Conflict_DetailsA(CONFLICT_LIST clConflictList,ULONG ulIndex,PCONFLICT_DETAILS_A pConflictDetails);
    982   CMAPI CONFIGRET WINAPI CM_Get_Resource_Conflict_DetailsW(CONFLICT_LIST clConflictList,ULONG ulIndex,PCONFLICT_DETAILS_W pConflictDetails);
    983   CMAPI CONFIGRET WINAPI CM_Get_Class_Registry_PropertyW(LPGUID ClassGUID,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    984   CMAPI CONFIGRET WINAPI CM_Set_Class_Registry_PropertyW(LPGUID ClassGUID,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags,HMACHINE hMachine);
    985   CMAPI CONFIGRET WINAPI CM_Get_Class_Registry_PropertyA(LPGUID ClassGUID,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
    986   CMAPI CONFIGRET WINAPI CM_Set_Class_Registry_PropertyA(LPGUID ClassGUID,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags,HMACHINE hMachine);
    987 #define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents
    988   DWORD WINAPI CM_WaitNoPendingInstallEvents(DWORD dwTimeout);
    989 
    990 #define CR_SUCCESS (0x00000000)
    991 #define CR_DEFAULT (0x00000001)
    992 #define CR_OUT_OF_MEMORY (0x00000002)
    993 #define CR_INVALID_POINTER (0x00000003)
    994 #define CR_INVALID_FLAG (0x00000004)
    995 #define CR_INVALID_DEVNODE (0x00000005)
    996 #define CR_INVALID_DEVINST CR_INVALID_DEVNODE
    997 #define CR_INVALID_RES_DES (0x00000006)
    998 #define CR_INVALID_LOG_CONF (0x00000007)
    999 #define CR_INVALID_ARBITRATOR (0x00000008)
   1000 #define CR_INVALID_NODELIST (0x00000009)
   1001 #define CR_DEVNODE_HAS_REQS (0x0000000A)
   1002 #define CR_DEVINST_HAS_REQS CR_DEVNODE_HAS_REQS
   1003 #define CR_INVALID_RESOURCEID (0x0000000B)
   1004 #define CR_DLVXD_NOT_FOUND (0x0000000C)
   1005 #define CR_NO_SUCH_DEVNODE (0x0000000D)
   1006 #define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE
   1007 #define CR_NO_MORE_LOG_CONF (0x0000000E)
   1008 #define CR_NO_MORE_RES_DES (0x0000000F)
   1009 #define CR_ALREADY_SUCH_DEVNODE (0x00000010)
   1010 #define CR_ALREADY_SUCH_DEVINST CR_ALREADY_SUCH_DEVNODE
   1011 #define CR_INVALID_RANGE_LIST (0x00000011)
   1012 #define CR_INVALID_RANGE (0x00000012)
   1013 #define CR_FAILURE (0x00000013)
   1014 #define CR_NO_SUCH_LOGICAL_DEV (0x00000014)
   1015 #define CR_CREATE_BLOCKED (0x00000015)
   1016 #define CR_NOT_SYSTEM_VM (0x00000016)
   1017 #define CR_REMOVE_VETOED (0x00000017)
   1018 #define CR_APM_VETOED (0x00000018)
   1019 #define CR_INVALID_LOAD_TYPE (0x00000019)
   1020 #define CR_BUFFER_SMALL (0x0000001A)
   1021 #define CR_NO_ARBITRATOR (0x0000001B)
   1022 #define CR_NO_REGISTRY_HANDLE (0x0000001C)
   1023 #define CR_REGISTRY_ERROR (0x0000001D)
   1024 #define CR_INVALID_DEVICE_ID (0x0000001E)
   1025 #define CR_INVALID_DATA (0x0000001F)
   1026 #define CR_INVALID_API (0x00000020)
   1027 #define CR_DEVLOADER_NOT_READY (0x00000021)
   1028 #define CR_NEED_RESTART (0x00000022)
   1029 #define CR_NO_MORE_HW_PROFILES (0x00000023)
   1030 #define CR_DEVICE_NOT_THERE (0x00000024)
   1031 #define CR_NO_SUCH_VALUE (0x00000025)
   1032 #define CR_WRONG_TYPE (0x00000026)
   1033 #define CR_INVALID_PRIORITY (0x00000027)
   1034 #define CR_NOT_DISABLEABLE (0x00000028)
   1035 #define CR_FREE_RESOURCES (0x00000029)
   1036 #define CR_QUERY_VETOED (0x0000002A)
   1037 #define CR_CANT_SHARE_IRQ (0x0000002B)
   1038 #define CR_NO_DEPENDENT (0x0000002C)
   1039 #define CR_SAME_RESOURCES (0x0000002D)
   1040 #define CR_NO_SUCH_REGISTRY_KEY (0x0000002E)
   1041 #define CR_INVALID_MACHINENAME (0x0000002F)
   1042 #define CR_REMOTE_COMM_FAILURE (0x00000030)
   1043 #define CR_MACHINE_UNAVAILABLE (0x00000031)
   1044 #define CR_NO_CM_SERVICES (0x00000032)
   1045 #define CR_ACCESS_DENIED (0x00000033)
   1046 #define CR_CALL_NOT_IMPLEMENTED (0x00000034)
   1047 #define CR_INVALID_PROPERTY (0x00000035)
   1048 #define CR_DEVICE_INTERFACE_ACTIVE (0x00000036)
   1049 #define CR_NO_SUCH_DEVICE_INTERFACE (0x00000037)
   1050 #define CR_INVALID_REFERENCE_STRING (0x00000038)
   1051 #define CR_INVALID_CONFLICT_LIST (0x00000039)
   1052 #define CR_INVALID_INDEX (0x0000003A)
   1053 #define CR_INVALID_STRUCTURE_SIZE (0x0000003B)
   1054 #define NUM_CR_RESULTS (0x0000003C)
   1055 
   1056 #ifdef __cplusplus
   1057 }
   1058 #endif
   1059 #endif
   1060