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