master
   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#include <devpropdef.h>
  14
  15#ifdef __cplusplus
  16extern "C" {
  17#endif
  18
  19  typedef DWORD RETURN_TYPE;
  20  typedef RETURN_TYPE CONFIGRET;
  21  typedef CHAR *DEVNODEID_A,*DEVINSTID_A;
  22  typedef WCHAR *DEVNODEID_W,*DEVINSTID_W;
  23
  24#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
  25
  26  typedef CONST VOID *PCVOID;
  27
  28#define MAX_DEVICE_ID_LEN 200
  29#define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN
  30#define MAX_GUID_STRING_LEN 39
  31#define MAX_CLASS_NAME_LEN 32
  32#define MAX_PROFILE_LEN 80
  33#define MAX_CONFIG_VALUE 9999
  34#define MAX_INSTANCE_VALUE 9999
  35#define MAX_MEM_REGISTERS 9
  36#define MAX_IO_PORTS 20
  37#define MAX_IRQS 7
  38#define MAX_DMA_CHANNELS 7
  39
  40#define DWORD_MAX 0xFFFFFFFF
  41#define DWORDLONG_MAX 0xFFFFFFFFFFFFFFFF
  42
  43#define CONFIGMG_VERSION 0x0400
  44
  45#ifdef NT_INCLUDED
  46  __MINGW_EXTENSION typedef unsigned __int64 DWORDLONG;
  47  typedef DWORDLONG *PDWORDLONG;
  48#endif
  49
  50  typedef DWORD DEVNODE,DEVINST;
  51  typedef DEVNODE *PDEVNODE,*PDEVINST;
  52
  53  __MINGW_TYPEDEF_UAW(DEVNODEID)
  54  __MINGW_TYPEDEF_UAW(DEVINSTID)
  55
  56  typedef DWORD_PTR LOG_CONF;
  57  typedef LOG_CONF *PLOG_CONF;
  58  typedef DWORD_PTR RES_DES;
  59  typedef RES_DES *PRES_DES;
  60  typedef ULONG RESOURCEID;
  61  typedef RESOURCEID *PRESOURCEID;
  62  typedef ULONG PRIORITY;
  63  typedef PRIORITY *PPRIORITY;
  64  typedef DWORD_PTR RANGE_LIST;
  65  typedef RANGE_LIST *PRANGE_LIST;
  66  typedef DWORD_PTR RANGE_ELEMENT;
  67  typedef RANGE_ELEMENT *PRANGE_ELEMENT;
  68  typedef HANDLE HMACHINE;
  69  typedef HMACHINE *PHMACHINE;
  70  typedef ULONG_PTR CONFLICT_LIST;
  71  typedef CONFLICT_LIST *PCONFLICT_LIST;
  72
  73  typedef struct _CONFLICT_DETAILS_A {
  74    ULONG CD_ulSize;
  75    ULONG CD_ulMask;
  76    DEVINST CD_dnDevInst;
  77    RES_DES CD_rdResDes;
  78    ULONG CD_ulFlags;
  79    CHAR CD_szDescription[MAX_PATH];
  80  } CONFLICT_DETAILS_A ,*PCONFLICT_DETAILS_A;
  81
  82  typedef struct _CONFLICT_DETAILS_W {
  83    ULONG CD_ulSize;
  84    ULONG CD_ulMask;
  85    DEVINST CD_dnDevInst;
  86    RES_DES CD_rdResDes;
  87    ULONG CD_ulFlags;
  88    WCHAR CD_szDescription[MAX_PATH];
  89  } CONFLICT_DETAILS_W ,*PCONFLICT_DETAILS_W;
  90
  91  __MINGW_TYPEDEF_UAW(CONFLICT_DETAILS)
  92  __MINGW_TYPEDEF_UAW(PCONFLICT_DETAILS)
  93
  94#define CM_CDMASK_DEVINST (0x00000001)
  95#define CM_CDMASK_RESDES (0x00000002)
  96#define CM_CDMASK_FLAGS (0x00000004)
  97#define CM_CDMASK_DESCRIPTION (0x00000008)
  98#define CM_CDMASK_VALID (0x0000000F)
  99
 100#define CM_CDFLAGS_DRIVER (0x00000001)
 101#define CM_CDFLAGS_ROOT_OWNED (0x00000002)
 102#define CM_CDFLAGS_RESERVED (0x00000004)
 103
 104  typedef ULONG REGDISPOSITION;
 105
 106#include "pshpack1.h"
 107
 108#define mMD_MemoryType (0x1)
 109#define fMD_MemoryType mMD_MemoryType
 110#define fMD_ROM (0x0)
 111#define fMD_RAM (0x1)
 112
 113#define mMD_32_24 (0x2)
 114#define fMD_32_24 mMD_32_24
 115#define fMD_24 (0x0)
 116#define fMD_32 (0x2)
 117
 118#define mMD_Prefetchable (0x4)
 119#define fMD_Prefetchable mMD_Prefetchable
 120#define fMD_Pref mMD_Prefetchable
 121#define fMD_PrefetchDisallowed (0x0)
 122#define fMD_PrefetchAllowed (0x4)
 123
 124#define mMD_Readable (0x8)
 125#define fMD_Readable mMD_Readable
 126#define fMD_ReadAllowed (0x0)
 127#define fMD_ReadDisallowed (0x8)
 128
 129#define mMD_CombinedWrite (0x10)
 130#define fMD_CombinedWrite mMD_CombinedWrite
 131#define fMD_CombinedWriteDisallowed (0x0)
 132#define fMD_CombinedWriteAllowed (0x10)
 133
 134#define mMD_Cacheable (0x20)
 135#define fMD_NonCacheable (0x0)
 136#define fMD_Cacheable (0x20)
 137
 138#define fMD_WINDOW_DECODE (0x40)
 139#define fMD_MEMORY_BAR (0x80)
 140
 141  typedef struct Mem_Range_s {
 142    DWORDLONG MR_Align;
 143    ULONG MR_nBytes;
 144    DWORDLONG MR_Min;
 145    DWORDLONG MR_Max;
 146    DWORD MR_Flags;
 147    DWORD MR_Reserved;
 148  } MEM_RANGE,*PMEM_RANGE;
 149
 150  typedef struct Mem_Des_s {
 151    DWORD MD_Count;
 152    DWORD MD_Type;
 153    DWORDLONG MD_Alloc_Base;
 154    DWORDLONG MD_Alloc_End;
 155    DWORD MD_Flags;
 156    DWORD MD_Reserved;
 157  } MEM_DES,*PMEM_DES;
 158
 159  typedef struct Mem_Resource_s {
 160    MEM_DES MEM_Header;
 161    MEM_RANGE MEM_Data[ANYSIZE_ARRAY];
 162  } MEM_RESOURCE,*PMEM_RESOURCE;
 163
 164#define MType_Range sizeof(struct Mem_Range_s)
 165
 166  typedef struct Mem_Large_Range_s {
 167    DWORDLONG MLR_Align;
 168    ULONGLONG MLR_nBytes;
 169    DWORDLONG MLR_Min;
 170    DWORDLONG MLR_Max;
 171    DWORD MLR_Flags;
 172    DWORD MLR_Reserved;
 173  } MEM_LARGE_RANGE, *PMEM_LARGE_RANGE;
 174
 175  typedef struct Mem_Large_Des_s {
 176    DWORD MLD_Count;
 177    DWORD MLD_Type;
 178    DWORDLONG MLD_Alloc_Base;
 179    DWORDLONG MLD_Alloc_End;
 180    DWORD MLD_Flags;
 181    DWORD MLD_Reserved;
 182  } MEM_LARGE_DES, *PMEM_LARGE_DES;
 183
 184  typedef struct Mem_Large_Resource_s {
 185   MEM_LARGE_DES MEM_LARGE_Header;
 186   MEM_LARGE_RANGE MEM_LARGE_Data[ANYSIZE_ARRAY];
 187  } MEM_LARGE_RESOURCE, *PMEM_LARGE_RESOURCE;
 188
 189#define MLType_Range sizeof(struct Mem_Large_Range_s)
 190
 191#define fIOD_PortType (0x1)
 192#define fIOD_Memory (0x0)
 193#define fIOD_IO (0x1)
 194#define fIOD_DECODE (0x00fc)
 195#define fIOD_10_BIT_DECODE (0x0004)
 196#define fIOD_12_BIT_DECODE (0x0008)
 197#define fIOD_16_BIT_DECODE (0x0010)
 198#define fIOD_POSITIVE_DECODE (0x0020)
 199#define fIOD_PASSIVE_DECODE (0x0040)
 200#define fIOD_WINDOW_DECODE (0x0080)
 201#define fIOD_PORT_BAR (0x0100)
 202
 203#define IO_ALIAS_10_BIT_DECODE (0x00000004)
 204#define IO_ALIAS_12_BIT_DECODE (0x00000010)
 205#define IO_ALIAS_16_BIT_DECODE (0x00000000)
 206#define IO_ALIAS_POSITIVE_DECODE (0x000000FF)
 207
 208  typedef struct IO_Range_s {
 209    DWORDLONG IOR_Align;
 210    DWORD IOR_nPorts;
 211    DWORDLONG IOR_Min;
 212    DWORDLONG IOR_Max;
 213    DWORD IOR_RangeFlags;
 214    DWORDLONG IOR_Alias;
 215  } IO_RANGE,*PIO_RANGE;
 216
 217  typedef struct IO_Des_s {
 218    DWORD IOD_Count;
 219    DWORD IOD_Type;
 220    DWORDLONG IOD_Alloc_Base;
 221    DWORDLONG IOD_Alloc_End;
 222    DWORD IOD_DesFlags;
 223  } IO_DES,*PIO_DES;
 224
 225  typedef struct IO_Resource_s {
 226    IO_DES IO_Header;
 227    IO_RANGE IO_Data[ANYSIZE_ARRAY];
 228  } IO_RESOURCE,*PIO_RESOURCE;
 229
 230#define IOA_Local 0xff
 231
 232#define IOType_Range sizeof(struct IO_Range_s)
 233
 234#define mDD_Width (0x3)
 235#define fDD_BYTE (0x0)
 236#define fDD_WORD (0x1)
 237#define fDD_DWORD (0x2)
 238#define fDD_BYTE_AND_WORD (0x3)
 239
 240#define mDD_BusMaster (0x4)
 241#define fDD_NoBusMaster (0x0)
 242#define fDD_BusMaster (0x4)
 243
 244#define mDD_Type (0x18)
 245#define fDD_TypeStandard (0x00)
 246#define fDD_TypeA (0x08)
 247#define fDD_TypeB (0x10)
 248#define fDD_TypeF (0x18)
 249
 250  typedef struct DMA_Range_s {
 251    ULONG DR_Min;
 252    ULONG DR_Max;
 253    ULONG DR_Flags;
 254  } DMA_RANGE,*PDMA_RANGE;
 255
 256  typedef struct DMA_Des_s {
 257    DWORD DD_Count;
 258    DWORD DD_Type;
 259    DWORD DD_Flags;
 260    ULONG DD_Alloc_Chan;
 261  } DMA_DES,*PDMA_DES;
 262
 263  typedef struct DMA_Resource_s {
 264    DMA_DES DMA_Header;
 265    DMA_RANGE DMA_Data[ANYSIZE_ARRAY];
 266  } DMA_RESOURCE,*PDMA_RESOURCE;
 267
 268#define DType_Range sizeof(struct DMA_Range_s)
 269
 270#define mIRQD_Share (0x1)
 271#define fIRQD_Exclusive (0x0)
 272#define fIRQD_Share (0x1)
 273
 274#define fIRQD_Share_Bit 0
 275#define fIRQD_Level_Bit 1
 276
 277#define mIRQD_Edge_Level (0x2)
 278#define fIRQD_Level (0x0)
 279#define fIRQD_Edge (0x2)
 280
 281  typedef struct IRQ_Range_s {
 282    ULONG IRQR_Min;
 283    ULONG IRQR_Max;
 284#ifdef NT_PROCESSOR_GROUPS
 285    USHORT IRQR_Flags;
 286    USHORT IRQR_Rsvdz;
 287#else
 288    ULONG IRQR_Flags;
 289#endif
 290  } IRQ_RANGE,*PIRQ_RANGE;
 291
 292  typedef struct IRQ_Des_32_s {
 293    DWORD IRQD_Count;
 294    DWORD IRQD_Type;
 295#ifdef NT_PROCESSOR_GROUPS
 296    USHORT IRQD_Flags;
 297    USHORT IRQD_Group;
 298#else
 299    DWORD IRQD_Flags;
 300#endif
 301    ULONG IRQD_Alloc_Num;
 302    ULONG32 IRQD_Affinity;
 303  } IRQ_DES_32,*PIRQ_DES_32;
 304
 305  typedef struct IRQ_Des_64_s {
 306    DWORD IRQD_Count;
 307    DWORD IRQD_Type;
 308#if defined(NT_PROCESSOR_GROUPS)
 309    USHORT IRQD_Flags;
 310    USHORT IRQD_Group;
 311#else
 312    DWORD IRQD_Flags;
 313#endif
 314    ULONG IRQD_Alloc_Num;
 315    ULONG64 IRQD_Affinity;
 316  } IRQ_DES_64,*PIRQ_DES_64;
 317
 318#ifdef _WIN64
 319  typedef IRQ_DES_64 IRQ_DES;
 320  typedef PIRQ_DES_64 PIRQ_DES;
 321#else
 322  typedef IRQ_DES_32 IRQ_DES;
 323  typedef PIRQ_DES_32 PIRQ_DES;
 324#endif
 325
 326  typedef struct IRQ_Resource_32_s {
 327    IRQ_DES_32 IRQ_Header;
 328    IRQ_RANGE IRQ_Data[ANYSIZE_ARRAY];
 329  } IRQ_RESOURCE_32,*PIRQ_RESOURCE_32;
 330
 331  typedef struct IRQ_Resource_64_s {
 332    IRQ_DES_64 IRQ_Header;
 333    IRQ_RANGE IRQ_Data[ANYSIZE_ARRAY];
 334  } IRQ_RESOURCE_64,*PIRQ_RESOURCE_64;
 335
 336#ifdef _WIN64
 337  typedef IRQ_RESOURCE_64 IRQ_RESOURCE;
 338  typedef PIRQ_RESOURCE_64 PIRQ_RESOURCE;
 339#else
 340  typedef IRQ_RESOURCE_32 IRQ_RESOURCE;
 341  typedef PIRQ_RESOURCE_32 PIRQ_RESOURCE;
 342#endif
 343
 344#define IRQType_Range sizeof(struct IRQ_Range_s)
 345
 346#if WINVER >= _WIN32_WINNT_WINXP
 347#define CM_RESDES_WIDTH_DEFAULT (0x00000000)
 348#define CM_RESDES_WIDTH_32 (0x00000001)
 349#define CM_RESDES_WIDTH_64 (0x00000002)
 350#define CM_RESDES_WIDTH_BITS (0x00000003)
 351#endif
 352
 353  typedef struct DevPrivate_Range_s {
 354    DWORD PR_Data1;
 355    DWORD PR_Data2;
 356    DWORD PR_Data3;
 357  } DEVPRIVATE_RANGE,*PDEVPRIVATE_RANGE;
 358
 359  typedef struct DevPrivate_Des_s {
 360    DWORD PD_Count;
 361    DWORD PD_Type;
 362    DWORD PD_Data1;
 363    DWORD PD_Data2;
 364    DWORD PD_Data3;
 365    DWORD PD_Flags;
 366  } DEVPRIVATE_DES,*PDEVPRIVATE_DES;
 367
 368  typedef struct DevPrivate_Resource_s {
 369    DEVPRIVATE_DES PRV_Header;
 370    DEVPRIVATE_RANGE PRV_Data[ANYSIZE_ARRAY];
 371  } DEVPRIVATE_RESOURCE,*PDEVPRIVATE_RESOURCE;
 372
 373#define PType_Range sizeof(struct DevPrivate_Range_s)
 374
 375  typedef struct CS_Des_s {
 376    DWORD CSD_SignatureLength;
 377    DWORD CSD_LegacyDataOffset;
 378    DWORD CSD_LegacyDataSize;
 379    DWORD CSD_Flags;
 380    GUID CSD_ClassGuid;
 381    BYTE CSD_Signature[ANYSIZE_ARRAY];
 382  } CS_DES,*PCS_DES;
 383
 384  typedef struct CS_Resource_s {
 385    CS_DES CS_Header;
 386  } CS_RESOURCE,*PCS_RESOURCE;
 387
 388#define mPCD_IO_8_16 (0x1)
 389#define fPCD_IO_8 (0x0)
 390#define fPCD_IO_16 (0x1)
 391#define mPCD_MEM_8_16 (0x2)
 392#define fPCD_MEM_8 (0x0)
 393#define fPCD_MEM_16 (0x2)
 394#define mPCD_MEM_A_C (0xC)
 395#define fPCD_MEM1_A (0x4)
 396#define fPCD_MEM2_A (0x8)
 397#define fPCD_IO_ZW_8 (0x10)
 398#define fPCD_IO_SRC_16 (0x20)
 399#define fPCD_IO_WS_16 (0x40)
 400#define mPCD_MEM_WS (0x300)
 401#define fPCD_MEM_WS_ONE (0x100)
 402#define fPCD_MEM_WS_TWO (0x200)
 403#define fPCD_MEM_WS_THREE (0x300)
 404
 405#if WINVER >= _WIN32_WINNT_WINXP
 406#define fPCD_MEM_A (0x4)
 407
 408#define fPCD_ATTRIBUTES_PER_WINDOW (0x8000)
 409
 410#define fPCD_IO1_16 (0x00010000)
 411#define fPCD_IO1_ZW_8 (0x00020000)
 412#define fPCD_IO1_SRC_16 (0x00040000)
 413#define fPCD_IO1_WS_16 (0x00080000)
 414
 415#define fPCD_IO2_16 (0x00100000)
 416#define fPCD_IO2_ZW_8 (0x00200000)
 417#define fPCD_IO2_SRC_16 (0x00400000)
 418#define fPCD_IO2_WS_16 (0x00800000)
 419
 420#define mPCD_MEM1_WS (0x03000000)
 421#define fPCD_MEM1_WS_ONE (0x01000000)
 422#define fPCD_MEM1_WS_TWO (0x02000000)
 423#define fPCD_MEM1_WS_THREE (0x03000000)
 424#define fPCD_MEM1_16 (0x04000000)
 425
 426#define mPCD_MEM2_WS (0x30000000)
 427#define fPCD_MEM2_WS_ONE (0x10000000)
 428#define fPCD_MEM2_WS_TWO (0x20000000)
 429#define fPCD_MEM2_WS_THREE (0x30000000)
 430#define fPCD_MEM2_16 (0x40000000)
 431
 432#define PCD_MAX_MEMORY 2
 433#define PCD_MAX_IO 2
 434#endif
 435
 436  typedef struct PcCard_Des_s {
 437    DWORD PCD_Count;
 438    DWORD PCD_Type;
 439    DWORD PCD_Flags;
 440    BYTE PCD_ConfigIndex;
 441    BYTE PCD_Reserved[3];
 442    DWORD PCD_MemoryCardBase1;
 443    DWORD PCD_MemoryCardBase2;
 444#if WINVER >= _WIN32_WINNT_WINXP
 445    DWORD PCD_MemoryCardBase[PCD_MAX_MEMORY];
 446    WORD PCD_MemoryFlags[PCD_MAX_MEMORY];
 447    BYTE PCD_IoFlags[PCD_MAX_IO];
 448#endif
 449  } PCCARD_DES,*PPCCARD_DES;
 450
 451  typedef struct PcCard_Resource_s {
 452    PCCARD_DES PcCard_Header;
 453  } PCCARD_RESOURCE,*PPCCARD_RESOURCE;
 454
 455#define mPMF_AUDIO_ENABLE (0x8)
 456#define fPMF_AUDIO_ENABLE (0x8)
 457
 458  typedef struct MfCard_Des_s {
 459    DWORD PMF_Count;
 460    DWORD PMF_Type;
 461    DWORD PMF_Flags;
 462    BYTE PMF_ConfigOptions;
 463    BYTE PMF_IoResourceIndex;
 464    BYTE PMF_Reserved[2];
 465    DWORD PMF_ConfigRegisterBase;
 466  } MFCARD_DES,*PMFCARD_DES;
 467
 468  typedef struct MfCard_Resource_s {
 469    MFCARD_DES MfCard_Header;
 470  } MFCARD_RESOURCE,*PMFCARD_RESOURCE;
 471
 472  typedef struct BusNumber_Range_s {
 473    ULONG BUSR_Min;
 474    ULONG BUSR_Max;
 475    ULONG BUSR_nBusNumbers;
 476    ULONG BUSR_Flags;
 477  } BUSNUMBER_RANGE,*PBUSNUMBER_RANGE;
 478
 479  typedef struct BusNumber_Des_s {
 480    DWORD BUSD_Count;
 481    DWORD BUSD_Type;
 482    DWORD BUSD_Flags;
 483    ULONG BUSD_Alloc_Base;
 484    ULONG BUSD_Alloc_End;
 485  } BUSNUMBER_DES,*PBUSNUMBER_DES;
 486
 487  typedef struct BusNumber_Resource_s {
 488    BUSNUMBER_DES BusNumber_Header;
 489    BUSNUMBER_RANGE BusNumber_Data[ANYSIZE_ARRAY];
 490  } BUSNUMBER_RESOURCE,*PBUSNUMBER_RESOURCE;
 491
 492#define BusNumberType_Range sizeof(struct BusNumber_Range_s)
 493
 494#if WINVER >= _WIN32_WINNT_WIN8
 495
 496 typedef struct Connection_Des_s {
 497    DWORD COND_Type;
 498    DWORD COND_Flags;
 499    BYTE COND_Class;
 500    BYTE COND_ClassType;
 501    BYTE COND_Reserved1;
 502    BYTE COND_Reserved2;
 503    LARGE_INTEGER COND_Id;
 504 } CONNECTION_DES, *PCONNECTION_DES;
 505
 506  typedef struct Connection_Resource_s {
 507    CONNECTION_DES Connection_Header;
 508  } CONNECTION_RESOURCE, *PCONNECTION_RESOURCE;
 509
 510#endif
 511
 512#define CM_HWPI_NOT_DOCKABLE (0x00000000)
 513#define CM_HWPI_UNDOCKED (0x00000001)
 514#define CM_HWPI_DOCKED (0x00000002)
 515
 516  typedef struct HWProfileInfo_sA {
 517    ULONG HWPI_ulHWProfile;
 518    CHAR HWPI_szFriendlyName[MAX_PROFILE_LEN];
 519    DWORD HWPI_dwFlags;
 520  } HWPROFILEINFO_A,*PHWPROFILEINFO_A;
 521
 522  typedef struct HWProfileInfo_sW {
 523    ULONG HWPI_ulHWProfile;
 524    WCHAR HWPI_szFriendlyName[MAX_PROFILE_LEN];
 525    DWORD HWPI_dwFlags;
 526  } HWPROFILEINFO_W,*PHWPROFILEINFO_W;
 527
 528  __MINGW_TYPEDEF_UAW(HWPROFILEINFO)
 529  __MINGW_TYPEDEF_UAW(PHWPROFILEINFO)
 530
 531#include "poppack.h"
 532
 533#define ResType_All (0x00000000)
 534#define ResType_None (0x00000000)
 535#define ResType_Mem (0x00000001)
 536#define ResType_IO (0x00000002)
 537#define ResType_DMA (0x00000003)
 538#define ResType_IRQ (0x00000004)
 539#define ResType_DoNotUse (0x00000005)
 540#define ResType_BusNumber (0x00000006)
 541#define ResType_MemLarge (0x00000007)
 542#define ResType_MAX (0x00000007)
 543
 544#define ResType_Ignored_Bit (0x00008000)
 545#define ResType_ClassSpecific (0x0000FFFF)
 546#define ResType_Reserved (0x00008000)
 547#define ResType_DevicePrivate (0x00008001)
 548#define ResType_PcCardConfig (0x00008002)
 549#define ResType_MfCardConfig (0x00008003)
 550#if WINVER >= _WIN32_WINNT_WIN8
 551#define ResType_Connection (0x00008004)
 552#endif
 553
 554#define CM_ADD_RANGE_ADDIFCONFLICT (0x00000000)
 555#define CM_ADD_RANGE_DONOTADDIFCONFLICT (0x00000001)
 556#define CM_ADD_RANGE_BITS (0x00000001)
 557
 558#define BASIC_LOG_CONF 0x00000000
 559#define FILTERED_LOG_CONF 0x00000001
 560#define ALLOC_LOG_CONF 0x00000002
 561#define BOOT_LOG_CONF 0x00000003
 562#define FORCED_LOG_CONF 0x00000004
 563#define OVERRIDE_LOG_CONF 0x00000005
 564#define NUM_LOG_CONF 0x00000006
 565#define LOG_CONF_BITS 0x00000007
 566
 567#define PRIORITY_EQUAL_FIRST (0x00000008)
 568#define PRIORITY_EQUAL_LAST (0x00000000)
 569#define PRIORITY_BIT (0x00000008)
 570
 571#define RegDisposition_OpenAlways (0x00000000)
 572#define RegDisposition_OpenExisting (0x00000001)
 573#define RegDisposition_Bits (0x00000001)
 574
 575#define CM_ADD_ID_HARDWARE (0x00000000)
 576#define CM_ADD_ID_COMPATIBLE (0x00000001)
 577#define CM_ADD_ID_BITS (0x00000001)
 578
 579#define CM_CREATE_DEVNODE_NORMAL (0x00000000)
 580#define CM_CREATE_DEVNODE_NO_WAIT_INSTALL (0x00000001)
 581#define CM_CREATE_DEVNODE_PHANTOM (0x00000002)
 582#define CM_CREATE_DEVNODE_GENERATE_ID (0x00000004)
 583#define CM_CREATE_DEVNODE_DO_NOT_INSTALL (0x00000008)
 584#define CM_CREATE_DEVNODE_BITS (0x0000000F)
 585
 586#define CM_CREATE_DEVINST_NORMAL CM_CREATE_DEVNODE_NORMAL
 587#define CM_CREATE_DEVINST_NO_WAIT_INSTALL CM_CREATE_DEVNODE_NO_WAIT_INSTALL
 588#define CM_CREATE_DEVINST_PHANTOM CM_CREATE_DEVNODE_PHANTOM
 589#define CM_CREATE_DEVINST_GENERATE_ID CM_CREATE_DEVNODE_GENERATE_ID
 590#define CM_CREATE_DEVINST_DO_NOT_INSTALL CM_CREATE_DEVNODE_DO_NOT_INSTALL
 591#define CM_CREATE_DEVINST_BITS CM_CREATE_DEVNODE_BITS
 592
 593#define CM_DELETE_CLASS_ONLY (0x00000000)
 594#define CM_DELETE_CLASS_SUBKEYS (0x00000001)
 595#if WINVER >= _WIN32_WINNT_LONGHORN
 596#define CM_DELETE_CLASS_INTERFACE (0x00000002)
 597#endif
 598#define CM_DELETE_CLASS_BITS (0x00000003)
 599
 600#if WINVER >= _WIN32_WINNT_WIN8
 601#define CM_ENUMERATE_CLASSES_INSTALLER (0x00000000)
 602#define CM_ENUMERATE_CLASSES_INTERFACE (0x00000001)
 603#define CM_ENUMERATE_CLASSES_BITS (0x00000001)
 604#endif
 605
 606#define CM_DETECT_NEW_PROFILE (0x00000001)
 607#define CM_DETECT_CRASHED (0x00000002)
 608#define CM_DETECT_HWPROF_FIRST_BOOT (0x00000004)
 609#define CM_DETECT_RUN (0x80000000)
 610#define CM_DETECT_BITS (0x80000007)
 611
 612#define CM_DISABLE_POLITE (0x00000000)
 613#define CM_DISABLE_ABSOLUTE (0x00000001)
 614#define CM_DISABLE_HARDWARE (0x00000002)
 615#define CM_DISABLE_UI_NOT_OK (0x00000004)
 616#define CM_DISABLE_PERSIST (0x00000008)
 617#define CM_DISABLE_BITS (0x00000007)
 618
 619#define CM_GETIDLIST_FILTER_NONE (0x00000000)
 620#define CM_GETIDLIST_FILTER_ENUMERATOR (0x00000001)
 621#define CM_GETIDLIST_FILTER_SERVICE (0x00000002)
 622#define CM_GETIDLIST_FILTER_EJECTRELATIONS (0x00000004)
 623#define CM_GETIDLIST_FILTER_REMOVALRELATIONS (0x00000008)
 624#define CM_GETIDLIST_FILTER_POWERRELATIONS (0x00000010)
 625#define CM_GETIDLIST_FILTER_BUSRELATIONS (0x00000020)
 626#define CM_GETIDLIST_DONOTGENERATE (0x10000040)
 627#if WINVER <= _WIN32_WINNT_LONGHORN
 628#define CM_GETIDLIST_FILTER_BITS (0x1000007F)
 629#endif
 630#if WINVER >= _WIN32_WINNT_WIN7
 631#define CM_GETIDLIST_FILTER_TRANSPORTRELATIONS (0x00000080)
 632#define CM_GETIDLIST_FILTER_PRESENT (0x00000100)
 633#define CM_GETIDLIST_FILTER_CLASS (0x00000200)
 634#define CM_GETIDLIST_FILTER_BITS (0x100003FF)
 635#endif
 636
 637#define CM_GET_DEVICE_INTERFACE_LIST_PRESENT (0x00000000)
 638#define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES (0x00000001)
 639#define CM_GET_DEVICE_INTERFACE_LIST_BITS (0x00000001)
 640
 641#define CM_DRP_DEVICEDESC (0x00000001)
 642#define CM_DRP_HARDWAREID (0x00000002)
 643#define CM_DRP_COMPATIBLEIDS (0x00000003)
 644#define CM_DRP_UNUSED0 (0x00000004)
 645#define CM_DRP_SERVICE (0x00000005)
 646#define CM_DRP_UNUSED1 (0x00000006)
 647#define CM_DRP_UNUSED2 (0x00000007)
 648#define CM_DRP_CLASS (0x00000008)
 649#define CM_DRP_CLASSGUID (0x00000009)
 650#define CM_DRP_DRIVER (0x0000000A)
 651#define CM_DRP_CONFIGFLAGS (0x0000000B)
 652#define CM_DRP_MFG (0x0000000C)
 653#define CM_DRP_FRIENDLYNAME (0x0000000D)
 654#define CM_DRP_LOCATION_INFORMATION (0x0000000E)
 655#define CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME (0x0000000F)
 656#define CM_DRP_CAPABILITIES (0x00000010)
 657#define CM_DRP_UI_NUMBER (0x00000011)
 658#define CM_DRP_UPPERFILTERS (0x00000012)
 659#if WINVER >= _WIN32_WINNT_LONGHORN
 660#define CM_CRP_UPPERFILTERS CM_DRP_UPPERFILTERS
 661#endif
 662#define CM_DRP_LOWERFILTERS (0x00000013)
 663#if WINVER >= _WIN32_WINNT_LONGHORN
 664#define CM_CRP_LOWERFILTERS CM_DRP_LOWERFILTERS
 665#endif
 666#define CM_DRP_BUSTYPEGUID (0x00000014)
 667#define CM_DRP_LEGACYBUSTYPE (0x00000015)
 668#define CM_DRP_BUSNUMBER (0x00000016)
 669#define CM_DRP_ENUMERATOR_NAME (0x00000017)
 670#define CM_DRP_SECURITY (0x00000018)
 671#define CM_CRP_SECURITY CM_DRP_SECURITY
 672#define CM_DRP_SECURITY_SDS (0x00000019)
 673#define CM_CRP_SECURITY_SDS CM_DRP_SECURITY_SDS
 674#define CM_DRP_DEVTYPE (0x0000001A)
 675#define CM_CRP_DEVTYPE CM_DRP_DEVTYPE
 676#define CM_DRP_EXCLUSIVE (0x0000001B)
 677#define CM_CRP_EXCLUSIVE CM_DRP_EXCLUSIVE
 678#define CM_DRP_CHARACTERISTICS (0x0000001C)
 679#define CM_CRP_CHARACTERISTICS CM_DRP_CHARACTERISTICS
 680#define CM_DRP_ADDRESS (0x0000001D)
 681#define CM_DRP_UI_NUMBER_DESC_FORMAT (0x0000001E)
 682#if WINVER >= _WIN32_WINNT_WINXP
 683#define CM_DRP_DEVICE_POWER_DATA (0x0000001F)
 684#define CM_DRP_REMOVAL_POLICY (0x00000020)
 685#define CM_DRP_REMOVAL_POLICY_HW_DEFAULT (0x00000021)
 686#define CM_DRP_REMOVAL_POLICY_OVERRIDE (0x00000022)
 687#define CM_DRP_INSTALL_STATE (0x00000023)
 688#endif
 689#if WINVER >= _WIN32_WINNT_WS03
 690#define CM_DRP_LOCATION_PATHS (0x00000024)
 691#endif
 692#if WINVER >= _WIN32_WINNT_WIN7
 693#define CM_DRP_BASE_CONTAINERID (0x00000025)
 694#endif
 695
 696#define CM_DRP_MIN (0x00000001)
 697#define CM_CRP_MIN CM_DRP_MIN
 698#define CM_DRP_MAX (0x00000023)
 699#define CM_CRP_MAX CM_DRP_MAX
 700
 701#define CM_DEVCAP_LOCKSUPPORTED (0x00000001)
 702#define CM_DEVCAP_EJECTSUPPORTED (0x00000002)
 703#define CM_DEVCAP_REMOVABLE (0x00000004)
 704#define CM_DEVCAP_DOCKDEVICE (0x00000008)
 705#define CM_DEVCAP_UNIQUEID (0x00000010)
 706#define CM_DEVCAP_SILENTINSTALL (0x00000020)
 707#define CM_DEVCAP_RAWDEVICEOK (0x00000040)
 708#define CM_DEVCAP_SURPRISEREMOVALOK (0x00000080)
 709#define CM_DEVCAP_HARDWAREDISABLED (0x00000100)
 710#define CM_DEVCAP_NONDYNAMIC (0x00000200)
 711#define CM_DEVCAP_SECUREDEVICE (0x00000400)
 712
 713#if WINVER >= _WIN32_WINNT_WINXP
 714#define CM_REMOVAL_POLICY_EXPECT_NO_REMOVAL 1
 715#define CM_REMOVAL_POLICY_EXPECT_ORDERLY_REMOVAL 2
 716#define CM_REMOVAL_POLICY_EXPECT_SURPRISE_REMOVAL 3
 717
 718#define CM_INSTALL_STATE_INSTALLED 0
 719#define CM_INSTALL_STATE_NEEDS_REINSTALL 1
 720#define CM_INSTALL_STATE_FAILED_INSTALL 2
 721#define CM_INSTALL_STATE_FINISH_INSTALL 3
 722#endif
 723
 724#define CM_LOCATE_DEVNODE_NORMAL 0x00000000
 725#define CM_LOCATE_DEVNODE_PHANTOM 0x00000001
 726#define CM_LOCATE_DEVNODE_CANCELREMOVE 0x00000002
 727#define CM_LOCATE_DEVNODE_NOVALIDATION 0x00000004
 728#define CM_LOCATE_DEVNODE_BITS 0x00000007
 729
 730#define CM_LOCATE_DEVINST_NORMAL CM_LOCATE_DEVNODE_NORMAL
 731#define CM_LOCATE_DEVINST_PHANTOM CM_LOCATE_DEVNODE_PHANTOM
 732#define CM_LOCATE_DEVINST_CANCELREMOVE CM_LOCATE_DEVNODE_CANCELREMOVE
 733#define CM_LOCATE_DEVINST_NOVALIDATION CM_LOCATE_DEVNODE_NOVALIDATION
 734#define CM_LOCATE_DEVINST_BITS CM_LOCATE_DEVNODE_BITS
 735
 736#define CM_OPEN_CLASS_KEY_INSTALLER (0x00000000)
 737#define CM_OPEN_CLASS_KEY_INTERFACE (0x00000001)
 738#define CM_OPEN_CLASS_KEY_BITS (0x00000001)
 739
 740#define CM_REMOVE_UI_OK 0x00000000
 741#define CM_REMOVE_UI_NOT_OK 0x00000001
 742#define CM_REMOVE_NO_RESTART 0x00000002
 743#if (WINVER >= _WIN32_WINNT_WIN10)
 744#define CM_REMOVE_DISABLE 0x00000004
 745#endif
 746#define CM_REMOVE_BITS 0x00000003
 747
 748#define CM_QUERY_REMOVE_UI_OK (CM_REMOVE_UI_OK)
 749#define CM_QUERY_REMOVE_UI_NOT_OK (CM_REMOVE_UI_NOT_OK)
 750#define CM_QUERY_REMOVE_BITS (CM_QUERY_REMOVE_UI_OK|CM_QUERY_REMOVE_UI_NOT_OK)
 751
 752#define CM_REENUMERATE_NORMAL 0x00000000
 753#define CM_REENUMERATE_SYNCHRONOUS 0x00000001
 754#if WINVER >= _WIN32_WINNT_WINXP
 755#define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002
 756#define CM_REENUMERATE_ASYNCHRONOUS 0x00000004
 757#endif
 758#define CM_REENUMERATE_BITS 0x00000007
 759
 760#define CM_REGISTER_DEVICE_DRIVER_STATIC (0x00000000)
 761#define CM_REGISTER_DEVICE_DRIVER_DISABLEABLE (0x00000001)
 762#define CM_REGISTER_DEVICE_DRIVER_REMOVABLE (0x00000002)
 763#define CM_REGISTER_DEVICE_DRIVER_BITS (0x00000003)
 764
 765#define CM_REGISTRY_HARDWARE (0x00000000)
 766#define CM_REGISTRY_SOFTWARE (0x00000001)
 767#define CM_REGISTRY_USER (0x00000100)
 768#define CM_REGISTRY_CONFIG (0x00000200)
 769#define CM_REGISTRY_BITS (0x00000301)
 770
 771#define CM_SET_DEVNODE_PROBLEM_NORMAL (0x00000000)
 772#define CM_SET_DEVNODE_PROBLEM_OVERRIDE (0x00000001)
 773#define CM_SET_DEVNODE_PROBLEM_BITS (0x00000001)
 774
 775#define CM_SET_DEVINST_PROBLEM_NORMAL CM_SET_DEVNODE_PROBLEM_NORMAL
 776#define CM_SET_DEVINST_PROBLEM_OVERRIDE CM_SET_DEVNODE_PROBLEM_OVERRIDE
 777#define CM_SET_DEVINST_PROBLEM_BITS CM_SET_DEVNODE_PROBLEM_BITS
 778
 779#define CM_SET_HW_PROF_FLAGS_UI_NOT_OK (0x00000001)
 780#define CM_SET_HW_PROF_FLAGS_BITS (0x00000001)
 781
 782#define CM_SETUP_DEVNODE_READY (0x00000000)
 783#define CM_SETUP_DEVINST_READY CM_SETUP_DEVNODE_READY
 784#define CM_SETUP_DOWNLOAD (0x00000001)
 785#define CM_SETUP_WRITE_LOG_CONFS (0x00000002)
 786#define CM_SETUP_PROP_CHANGE (0x00000003)
 787#if WINVER >= _WIN32_WINNT_WINXP
 788#define CM_SETUP_DEVNODE_RESET (0x00000004)
 789#define CM_SETUP_DEVINST_RESET CM_SETUP_DEVNODE_RESET
 790#endif
 791#if WINVER >= _WIN32_WINNT_WIN8
 792#define CM_SETUP_DEVNODE_CONFIG (0x00000005)
 793#define CM_SETUP_DEVINST_CONFIG CM_SETUP_DEVNODE_CONFIG
 794#define CM_SETUP_DEVNODE_CONFIG_CLASS (0x00000006)
 795#define CM_SETUP_DEVINST_CONFIG_CLASS CM_SETUP_DEVNODE_CONFIG_CLASS
 796#endif
 797#if WINVER >= _WIN32_WINNT_WINBLUE
 798#define CM_SETUP_DEVNODE_CONFIG_EXTENSIONS (0x00000007)
 799#define CM_SETUP_DEVINST_CONFIG_EXTENSIONS CM_SETUP_DEVNODE_CONFIG_EXTENSIONS
 800#endif
 801#if WINVER >= _WIN32_WINNT_WINTHRESHOLD
 802#define CM_SETUP_DEVNODE_CONFIG_RESET (0x00000008)
 803#define CM_SETUP_DEVINST_CONFIG_RESET CM_SETUP_DEVNODE_CONFIG_RESET
 804#endif
 805#define CM_SETUP_BITS (0x00000007)
 806
 807#define CM_QUERY_ARBITRATOR_RAW (0x00000000)
 808#define CM_QUERY_ARBITRATOR_TRANSLATED (0x00000001)
 809#define CM_QUERY_ARBITRATOR_BITS (0x00000001)
 810
 811#if WINVER >= _WIN32_WINNT_WINXP
 812#define CM_CUSTOMDEVPROP_MERGE_MULTISZ (0x00000001)
 813#define CM_CUSTOMDEVPROP_BITS (0x00000001)
 814#endif
 815#define CM_NAME_ATTRIBUTE_NAME_RETRIEVED_FROM_DEVICE (0x1)
 816#define CM_NAME_ATTRIBUTE_USER_ASSIGNED_NAME (0x2)
 817
 818#if WINVER >= _WIN32_WINNT_LONGHORN
 819#define CM_CLASS_PROPERTY_INSTALLER (0x00000000)
 820#define CM_CLASS_PROPERTY_INTERFACE (0x00000001)
 821#define CM_CLASS_PROPERTY_BITS (0x00000001)
 822#endif
 823
 824#if WINVER >= _WIN32_WINNT_WIN8
 825DECLARE_HANDLE(HCMNOTIFICATION);
 826typedef HCMNOTIFICATION *PHCMNOTIFICATION;
 827
 828#define CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES 0x00000001
 829#define CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES 0x00000002
 830#define CM_NOTIFY_FILTER_VALID_FLAGS (CM_NOTIFY_FILTER_FLAG_ALL_INTERFACE_CLASSES | CM_NOTIFY_FILTER_FLAG_ALL_DEVICE_INSTANCES)
 831
 832  typedef enum _CM_NOTIFY_FILTER_TYPE {
 833    CM_NOTIFY_FILTER_TYPE_DEVICEINTERFACE = 0,
 834    CM_NOTIFY_FILTER_TYPE_DEVICEHANDLE,
 835    CM_NOTIFY_FILTER_TYPE_DEVICEINSTANCE,
 836    CM_NOTIFY_FILTER_TYPE_MAX
 837  } CM_NOTIFY_FILTER_TYPE, *PCM_NOTIFY_FILTER_TYPE;
 838
 839  typedef struct _CM_NOTIFY_FILTER {
 840    DWORD cbSize;
 841    DWORD Flags;
 842    CM_NOTIFY_FILTER_TYPE FilterType;
 843    DWORD Reserved;
 844    union {
 845      struct {
 846        GUID ClassGuid;
 847      } DeviceInterface;
 848      struct {
 849        HANDLE  hTarget;
 850      } DeviceHandle;
 851      struct {
 852        WCHAR InstanceId[MAX_DEVICE_ID_LEN];
 853      } DeviceInstance;
 854    } u;
 855  } CM_NOTIFY_FILTER, *PCM_NOTIFY_FILTER;
 856
 857  typedef enum _CM_NOTIFY_ACTION {
 858    CM_NOTIFY_ACTION_DEVICEINTERFACEARRIVAL = 0,
 859    CM_NOTIFY_ACTION_DEVICEINTERFACEREMOVAL,
 860    CM_NOTIFY_ACTION_DEVICEQUERYREMOVE,
 861    CM_NOTIFY_ACTION_DEVICEQUERYREMOVEFAILED,
 862    CM_NOTIFY_ACTION_DEVICEREMOVEPENDING,
 863    CM_NOTIFY_ACTION_DEVICEREMOVECOMPLETE,
 864    CM_NOTIFY_ACTION_DEVICECUSTOMEVENT,
 865    CM_NOTIFY_ACTION_DEVICEINSTANCEENUMERATED,
 866    CM_NOTIFY_ACTION_DEVICEINSTANCESTARTED,
 867    CM_NOTIFY_ACTION_DEVICEINSTANCEREMOVED,
 868    CM_NOTIFY_ACTION_MAX
 869  } CM_NOTIFY_ACTION, *PCM_NOTIFY_ACTION;
 870
 871  typedef struct _CM_NOTIFY_EVENT_DATA {
 872    CM_NOTIFY_FILTER_TYPE FilterType;
 873    DWORD Reserved;
 874    union {
 875      struct {
 876        GUID ClassGuid;
 877        WCHAR SymbolicLink[ANYSIZE_ARRAY];
 878      } DeviceInterface;
 879      struct {
 880        GUID EventGuid;
 881        LONG NameOffset;
 882        DWORD DataSize;
 883        BYTE Data[ANYSIZE_ARRAY];
 884      } DeviceHandle;
 885      struct {
 886        WCHAR InstanceId[ANYSIZE_ARRAY];
 887      } DeviceInstance;
 888    } u;
 889  } CM_NOTIFY_EVENT_DATA, *PCM_NOTIFY_EVENT_DATA;
 890
 891typedef DWORD (CALLBACK *PCM_NOTIFY_CALLBACK)(HCMNOTIFICATION hNotify, PVOID Context, CM_NOTIFY_ACTION Action, PCM_NOTIFY_EVENT_DATA EventData, DWORD EventDataSize);
 892
 893#endif /* WINVER >= _WIN32_WINNT_WIN8 */
 894
 895#define CM_Add_ID __MINGW_NAME_AW(CM_Add_ID)
 896#define CM_Add_ID_Ex __MINGW_NAME_AW(CM_Add_ID_Ex)
 897#define CM_Connect_Machine __MINGW_NAME_AW(CM_Connect_Machine)
 898#define CM_Create_DevNode __MINGW_NAME_AW(CM_Create_DevNode)
 899#define CM_Create_DevInst __MINGW_NAME_AW(CM_Create_DevNode)
 900#define CM_Create_DevNode_Ex __MINGW_NAME_AW(CM_Create_DevNode_Ex)
 901#define CM_Create_DevInst_Ex __MINGW_NAME_AW(CM_Create_DevInst_Ex)
 902#define CM_Enumerate_Enumerators __MINGW_NAME_AW(CM_Enumerate_Enumerators)
 903#define CM_Enumerate_Enumerators_Ex __MINGW_NAME_AW(CM_Enumerate_Enumerators_Ex)
 904#define CM_Get_Class_Name __MINGW_NAME_AW(CM_Get_Class_Name)
 905#define CM_Get_Class_Name_Ex __MINGW_NAME_AW(CM_Get_Class_Name_Ex)
 906#define CM_Get_Class_Key_Name __MINGW_NAME_AW(CM_Get_Class_Key_Name)
 907#define CM_Get_Class_Key_Name_Ex __MINGW_NAME_AW(CM_Get_Class_Key_Name_Ex)
 908#define CM_Get_Device_ID __MINGW_NAME_AW(CM_Get_Device_ID)
 909#define CM_Get_Device_ID_Ex __MINGW_NAME_AW(CM_Get_Device_ID_Ex)
 910#define CM_Get_Device_ID_List __MINGW_NAME_AW(CM_Get_Device_ID_List)
 911#define CM_Get_Device_ID_List_Ex __MINGW_NAME_AW(CM_Get_Device_ID_List_Ex)
 912#define CM_Get_Device_ID_List_Size __MINGW_NAME_AW(CM_Get_Device_ID_List_Size)
 913#define CM_Get_Device_ID_List_Size_Ex __MINGW_NAME_AW(CM_Get_Device_ID_List_Size_Ex)
 914#define CM_Get_DevInst_Registry_Property __MINGW_NAME_AW(CM_Get_DevNode_Registry_Property)
 915#define CM_Get_DevInst_Registry_Property_Ex __MINGW_NAME_AW(CM_Get_DevNode_Registry_Property_Ex)
 916#define CM_Get_DevNode_Registry_Property __MINGW_NAME_AW(CM_Get_DevNode_Registry_Property)
 917#define CM_Get_DevNode_Registry_Property_Ex __MINGW_NAME_AW(CM_Get_DevNode_Registry_Property_Ex)
 918#define CM_Get_DevInst_Custom_Property __MINGW_NAME_AW(CM_Get_DevNode_Custom_Property)
 919#define CM_Get_DevInst_Custom_Property_Ex __MINGW_NAME_AW(CM_Get_DevNode_Custom_Property_Ex)
 920#define CM_Get_DevNode_Custom_Property __MINGW_NAME_AW(CM_Get_DevNode_Custom_Property)
 921#define CM_Get_DevNode_Custom_Property_Ex __MINGW_NAME_AW(CM_Get_DevNode_Custom_Property_Ex)
 922#define CM_Get_Hardware_Profile_Info __MINGW_NAME_AW(CM_Get_Hardware_Profile_Info)
 923#define CM_Get_Hardware_Profile_Info_Ex __MINGW_NAME_AW(CM_Get_Hardware_Profile_Info_Ex)
 924#define CM_Get_HW_Prof_Flags __MINGW_NAME_AW(CM_Get_HW_Prof_Flags)
 925#define CM_Get_HW_Prof_Flags_Ex __MINGW_NAME_AW(CM_Get_HW_Prof_Flags_Ex)
 926#define CM_Get_Device_Interface_Alias __MINGW_NAME_AW(CM_Get_Device_Interface_Alias)
 927#define CM_Get_Device_Interface_Alias_Ex __MINGW_NAME_AW(CM_Get_Device_Interface_Alias_Ex)
 928#define CM_Get_Device_Interface_List_Ex __MINGW_NAME_AW(CM_Get_Device_Interface_List_Ex)
 929#define CM_Get_Device_Interface_List_Size_Ex __MINGW_NAME_AW(CM_Get_Device_Interface_List_Size_Ex)
 930#define CM_Locate_DevNode __MINGW_NAME_AW(CM_Locate_DevNode)
 931#define CM_Locate_DevInst __MINGW_NAME_AW(CM_Locate_DevNode)
 932#define CM_Locate_DevNode_Ex __MINGW_NAME_AW(CM_Locate_DevNode_Ex)
 933#define CM_Locate_DevInst_Ex __MINGW_NAME_AW(CM_Locate_DevNode_Ex)
 934#define CM_Open_Class_Key __MINGW_NAME_AW(CM_Open_Class_Key)
 935#define CM_Open_Class_Key_Ex __MINGW_NAME_AW(CM_Open_Class_Key_Ex)
 936#define CM_Query_And_Remove_SubTree __MINGW_NAME_AW(CM_Query_And_Remove_SubTree)
 937#define CM_Query_And_Remove_SubTree_Ex __MINGW_NAME_AW(CM_Query_And_Remove_SubTree_Ex)
 938#define CM_Request_Device_Eject __MINGW_NAME_AW(CM_Request_Device_Eject)
 939#define CM_Request_Device_Eject_Ex __MINGW_NAME_AW(CM_Request_Device_Eject_Ex)
 940#define CM_Register_Device_Interface __MINGW_NAME_AW(CM_Register_Device_Interface)
 941#define CM_Register_Device_Interface_Ex __MINGW_NAME_AW(CM_Register_Device_Interface_Ex)
 942#define CM_Unregister_Device_Interface __MINGW_NAME_AW(CM_Unregister_Device_Interface)
 943#define CM_Unregister_Device_Interface_Ex __MINGW_NAME_AW(CM_Unregister_Device_Interface_Ex)
 944#define CM_Set_DevInst_Registry_Property __MINGW_NAME_AW(CM_Set_DevNode_Registry_Property)
 945#define CM_Set_DevInst_Registry_Property_Ex __MINGW_NAME_AW(CM_Set_DevNode_Registry_Property_Ex)
 946#define CM_Set_DevNode_Registry_Property __MINGW_NAME_AW(CM_Set_DevNode_Registry_Property)
 947#define CM_Set_DevNode_Registry_Property_Ex __MINGW_NAME_AW(CM_Set_DevNode_Registry_Property_Ex)
 948#define CM_Set_HW_Prof_Flags __MINGW_NAME_AW(CM_Set_HW_Prof_Flags)
 949#define CM_Set_HW_Prof_Flags_Ex __MINGW_NAME_AW(CM_Set_HW_Prof_Flags_Ex)
 950#define CM_Get_Resource_Conflict_Details __MINGW_NAME_AW(CM_Get_Resource_Conflict_Details)
 951#define CM_Get_Class_Registry_Property __MINGW_NAME_AW(CM_Get_Class_Registry_Property)
 952#define CM_Set_Class_Registry_Property __MINGW_NAME_AW(CM_Set_Class_Registry_Property)
 953
 954  CMAPI CONFIGRET WINAPI CM_Add_Empty_Log_Conf(PLOG_CONF plcLogConf,DEVINST dnDevInst,PRIORITY Priority,ULONG ulFlags);
 955  CMAPI CONFIGRET WINAPI CM_Add_Empty_Log_Conf_Ex(PLOG_CONF plcLogConf,DEVINST dnDevInst,PRIORITY Priority,ULONG ulFlags,HMACHINE hMachine);
 956  CMAPI CONFIGRET WINAPI CM_Add_IDA(DEVINST dnDevInst,PSTR pszID,ULONG ulFlags);
 957  CMAPI CONFIGRET WINAPI CM_Add_IDW(DEVINST dnDevInst,PWSTR pszID,ULONG ulFlags);
 958  CMAPI CONFIGRET WINAPI CM_Add_ID_ExA(DEVINST dnDevInst,PSTR pszID,ULONG ulFlags,HMACHINE hMachine);
 959  CMAPI CONFIGRET WINAPI CM_Add_ID_ExW(DEVINST dnDevInst,PWSTR pszID,ULONG ulFlags,HMACHINE hMachine);
 960  CMAPI CONFIGRET WINAPI CM_Add_Range(DWORDLONG ullStartValue,DWORDLONG ullEndValue,RANGE_LIST rlh,ULONG ulFlags);
 961  CMAPI CONFIGRET WINAPI CM_Add_Res_Des(PRES_DES prdResDes,LOG_CONF lcLogConf,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags);
 962  CMAPI CONFIGRET WINAPI CM_Add_Res_Des_Ex(PRES_DES prdResDes,LOG_CONF lcLogConf,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags,HMACHINE hMachine);
 963  CMAPI CONFIGRET WINAPI CM_Connect_MachineA(PCSTR UNCServerName,PHMACHINE phMachine);
 964  CMAPI CONFIGRET WINAPI CM_Connect_MachineW(PCWSTR UNCServerName,PHMACHINE phMachine);
 965  CMAPI CONFIGRET WINAPI CM_Create_DevNodeA(PDEVINST pdnDevInst,DEVINSTID_A pDeviceID,DEVINST dnParent,ULONG ulFlags);
 966  CMAPI CONFIGRET WINAPI CM_Create_DevNodeW(PDEVINST pdnDevInst,DEVINSTID_W pDeviceID,DEVINST dnParent,ULONG ulFlags);
 967  CMAPI CONFIGRET WINAPI CM_Create_DevNode_ExA(PDEVINST pdnDevInst,DEVINSTID_A pDeviceID,DEVINST dnParent,ULONG ulFlags,HANDLE hMachine);
 968  CMAPI CONFIGRET WINAPI CM_Create_DevNode_ExW(PDEVINST pdnDevInst,DEVINSTID_W pDeviceID,DEVINST dnParent,ULONG ulFlags,HANDLE hMachine);
 969#define CM_Create_DevInstW CM_Create_DevNodeW
 970#define CM_Create_DevInstA CM_Create_DevNodeA
 971#define CM_Create_DevInst_ExW CM_Create_DevNode_ExW
 972#define CM_Create_DevInst_ExA CM_Create_DevNode_ExA
 973  CMAPI CONFIGRET WINAPI CM_Create_Range_List(PRANGE_LIST prlh,ULONG ulFlags);
 974  CMAPI CONFIGRET WINAPI CM_Delete_Class_Key(LPGUID ClassGuid,ULONG ulFlags);
 975  CMAPI CONFIGRET WINAPI CM_Delete_Class_Key_Ex(LPGUID ClassGuid,ULONG ulFlags,HANDLE hMachine);
 976  CMAPI CONFIGRET WINAPI CM_Delete_DevNode_Key(DEVNODE dnDevNode,ULONG ulHardwareProfile,ULONG ulFlags);
 977  CMAPI CONFIGRET WINAPI CM_Delete_DevNode_Key_Ex(DEVNODE dnDevNode,ULONG ulHardwareProfile,ULONG ulFlags,HANDLE hMachine);
 978#define CM_Delete_DevInst_Key CM_Delete_DevNode_Key
 979#define CM_Delete_DevInst_Key_Ex CM_Delete_DevNode_Key_Ex
 980  CMAPI CONFIGRET WINAPI CM_Delete_Range(DWORDLONG ullStartValue,DWORDLONG ullEndValue,RANGE_LIST rlh,ULONG ulFlags);
 981  CMAPI CONFIGRET WINAPI CM_Detect_Resource_Conflict(DEVINST dnDevInst,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,PBOOL pbConflictDetected,ULONG ulFlags);
 982  CMAPI CONFIGRET WINAPI CM_Detect_Resource_Conflict_Ex(DEVINST dnDevInst,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,PBOOL pbConflictDetected,ULONG ulFlags,HMACHINE hMachine);
 983  CMAPI CONFIGRET WINAPI CM_Disable_DevNode(DEVINST dnDevInst,ULONG ulFlags);
 984  CMAPI CONFIGRET WINAPI CM_Disable_DevNode_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
 985#define CM_Disable_DevInst CM_Disable_DevNode
 986#define CM_Disable_DevInst_Ex CM_Disable_DevNode_Ex
 987  CMAPI CONFIGRET WINAPI CM_Disconnect_Machine(HMACHINE hMachine);
 988  CMAPI CONFIGRET WINAPI CM_Dup_Range_List(RANGE_LIST rlhOld,RANGE_LIST rlhNew,ULONG ulFlags);
 989  CMAPI CONFIGRET WINAPI CM_Enable_DevNode(DEVINST dnDevInst,ULONG ulFlags);
 990  CMAPI CONFIGRET WINAPI CM_Enable_DevNode_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
 991#define CM_Enable_DevInst CM_Enable_DevNode
 992#define CM_Enable_DevInst_Ex CM_Enable_DevNode_Ex
 993  CMAPI CONFIGRET WINAPI CM_Enumerate_Classes(ULONG ulClassIndex,LPGUID ClassGuid,ULONG ulFlags);
 994  CMAPI CONFIGRET WINAPI CM_Enumerate_Classes_Ex(ULONG ulClassIndex,LPGUID ClassGuid,ULONG ulFlags,HMACHINE hMachine);
 995  CMAPI CONFIGRET WINAPI CM_Enumerate_EnumeratorsA(ULONG ulEnumIndex,PCHAR Buffer,PULONG pulLength,ULONG ulFlags);
 996  CMAPI CONFIGRET WINAPI CM_Enumerate_EnumeratorsW(ULONG ulEnumIndex,PWCHAR Buffer,PULONG pulLength,ULONG ulFlags);
 997  CMAPI CONFIGRET WINAPI CM_Enumerate_Enumerators_ExA(ULONG ulEnumIndex,PCHAR Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
 998  CMAPI CONFIGRET WINAPI CM_Enumerate_Enumerators_ExW(ULONG ulEnumIndex,PWCHAR Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
 999  CMAPI CONFIGRET WINAPI CM_Find_Range(PDWORDLONG pullStart,DWORDLONG ullStart,ULONG ulLength,DWORDLONG ullAlignment,DWORDLONG ullEnd,RANGE_LIST rlh,ULONG ulFlags);
1000  CMAPI CONFIGRET WINAPI CM_First_Range(RANGE_LIST rlh,PDWORDLONG pullStart,PDWORDLONG pullEnd,PRANGE_ELEMENT preElement,ULONG ulFlags);
1001  CMAPI CONFIGRET WINAPI CM_Free_Log_Conf(LOG_CONF lcLogConfToBeFreed,ULONG ulFlags);
1002  CMAPI CONFIGRET WINAPI CM_Free_Log_Conf_Ex(LOG_CONF lcLogConfToBeFreed,ULONG ulFlags,HMACHINE hMachine);
1003  CMAPI CONFIGRET WINAPI CM_Free_Log_Conf_Handle(LOG_CONF lcLogConf);
1004  CMAPI CONFIGRET WINAPI CM_Free_Range_List(RANGE_LIST rlh,ULONG ulFlags);
1005  CMAPI CONFIGRET WINAPI CM_Free_Res_Des(PRES_DES prdResDes,RES_DES rdResDes,ULONG ulFlags);
1006  CMAPI CONFIGRET WINAPI CM_Free_Res_Des_Ex(PRES_DES prdResDes,RES_DES rdResDes,ULONG ulFlags,HMACHINE hMachine);
1007  CMAPI CONFIGRET WINAPI CM_Free_Res_Des_Handle(RES_DES rdResDes);
1008  CMAPI CONFIGRET WINAPI CM_Get_Child(PDEVINST pdnDevInst,DEVINST dnDevInst,ULONG ulFlags);
1009  CMAPI CONFIGRET WINAPI CM_Get_Child_Ex(PDEVINST pdnDevInst,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
1010  CMAPI CONFIGRET WINAPI CM_Get_Class_NameA(LPGUID ClassGuid,PCHAR Buffer,PULONG pulLength,ULONG ulFlags);
1011  CMAPI CONFIGRET WINAPI CM_Get_Class_NameW(LPGUID ClassGuid,PWCHAR Buffer,PULONG pulLength,ULONG ulFlags);
1012  CMAPI CONFIGRET WINAPI CM_Get_Class_Name_ExA(LPGUID ClassGuid,PCHAR Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
1013  CMAPI CONFIGRET WINAPI CM_Get_Class_Name_ExW(LPGUID ClassGuid,PWCHAR Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
1014  CMAPI CONFIGRET WINAPI CM_Get_Class_Key_NameA(LPGUID ClassGuid,LPSTR pszKeyName,PULONG pulLength,ULONG ulFlags);
1015  CMAPI CONFIGRET WINAPI CM_Get_Class_Key_NameW(LPGUID ClassGuid,LPWSTR pszKeyName,PULONG pulLength,ULONG ulFlags);
1016  CMAPI CONFIGRET WINAPI CM_Get_Class_Key_Name_ExA(LPGUID ClassGuid,LPSTR pszKeyName,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
1017  CMAPI CONFIGRET WINAPI CM_Get_Class_Key_Name_ExW(LPGUID ClassGuid,LPWSTR pszKeyName,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
1018  CMAPI CONFIGRET WINAPI CM_Get_Depth(PULONG pulDepth,DEVINST dnDevInst,ULONG ulFlags);
1019  CMAPI CONFIGRET WINAPI CM_Get_Depth_Ex(PULONG pulDepth,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
1020  CMAPI CONFIGRET WINAPI CM_Get_Device_IDA(DEVINST dnDevInst,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
1021  CMAPI CONFIGRET WINAPI CM_Get_Device_IDW(DEVINST dnDevInst,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
1022  CMAPI CONFIGRET WINAPI CM_Get_Device_ID_ExA(DEVINST dnDevInst,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
1023  CMAPI CONFIGRET WINAPI CM_Get_Device_ID_ExW(DEVINST dnDevInst,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
1024  CMAPI CONFIGRET WINAPI CM_Get_Device_ID_ListA(PCSTR pszFilter,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
1025  CMAPI CONFIGRET WINAPI CM_Get_Device_ID_ListW(PCWSTR pszFilter,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
1026  CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_ExA(PCSTR pszFilter,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
1027  CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_ExW(PCWSTR pszFilter,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
1028  CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA(PULONG pulLen,PCSTR pszFilter,ULONG ulFlags);
1029  CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW(PULONG pulLen,PCWSTR pszFilter,ULONG ulFlags);
1030  CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExA(PULONG pulLen,PCSTR pszFilter,ULONG ulFlags,HMACHINE hMachine);
1031  CMAPI CONFIGRET WINAPI CM_Get_Device_ID_List_Size_ExW(PULONG pulLen,PCWSTR pszFilter,ULONG ulFlags,HMACHINE hMachine);
1032  CMAPI CONFIGRET WINAPI CM_Get_Device_ID_Size(PULONG pulLen,DEVINST dnDevInst,ULONG ulFlags);
1033  CMAPI CONFIGRET WINAPI CM_Get_Device_ID_Size_Ex(PULONG pulLen,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
1034  CMAPI CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyA(DEVINST dnDevInst,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags);
1035  CMAPI CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyW(DEVINST dnDevInst,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags);
1036  CMAPI CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExA(DEVINST dnDevInst,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
1037  CMAPI CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExW(DEVINST dnDevInst,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
1038#define CM_Get_DevInst_Registry_PropertyW CM_Get_DevNode_Registry_PropertyW
1039#define CM_Get_DevInst_Registry_PropertyA CM_Get_DevNode_Registry_PropertyA
1040#define CM_Get_DevInst_Registry_Property_ExW CM_Get_DevNode_Registry_Property_ExW
1041#define CM_Get_DevInst_Registry_Property_ExA CM_Get_DevNode_Registry_Property_ExA
1042  CMAPI CONFIGRET WINAPI CM_Get_DevNode_Custom_PropertyA(DEVINST dnDevInst,PCSTR pszCustomPropertyName,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags);
1043  CMAPI CONFIGRET WINAPI CM_Get_DevNode_Custom_PropertyW(DEVINST dnDevInst,PCWSTR pszCustomPropertyName,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags);
1044  CMAPI CONFIGRET WINAPI CM_Get_DevNode_Custom_Property_ExA(DEVINST dnDevInst,PCSTR pszCustomPropertyName,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
1045  CMAPI CONFIGRET WINAPI CM_Get_DevNode_Custom_Property_ExW(DEVINST dnDevInst,PCWSTR pszCustomPropertyName,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
1046#define CM_Get_DevInst_Custom_PropertyW CM_Get_DevNode_Custom_PropertyW
1047#define CM_Get_DevInst_Custom_PropertyA CM_Get_DevNode_Custom_PropertyA
1048#define CM_Get_DevInst_Custom_Property_ExW CM_Get_DevNode_Custom_Property_ExW
1049#define CM_Get_DevInst_Custom_Property_ExA CM_Get_DevNode_Custom_Property_ExA
1050
1051#if (WINVER >= _WIN32_WINNT_LONGHORN)
1052  CMAPI CONFIGRET WINAPI CM_Get_DevNode_PropertyW(DEVINST dnDevInst,const DEVPROPKEY *PropertyKey,DEVPROPTYPE *PropertyType,PBYTE PropertyBuffer,PULONG PropertyBufferSize,ULONG ulFlags);
1053#ifdef UNICODE
1054#define CM_Get_DevNode_Property CM_Get_DevNode_PropertyW
1055#endif
1056  CMAPI CONFIGRET WINAPI CM_Get_DevNode_Property_ExW(DEVINST dnDevInst,const DEVPROPKEY *PropertyKey,DEVPROPTYPE *PropertyType,PBYTE PropertyBuffer,PULONG PropertyBufferSize,ULONG ulFlags,HMACHINE hMachine);
1057#ifdef UNICODE
1058#define CM_Get_DevNode_Property_Ex CM_Get_DevNode_Property_ExW
1059#endif
1060  CMAPI CONFIGRET WINAPI CM_Get_DevNode_Property_Keys(DEVINST dnDevInst,DEVPROPKEY *PropertyKeyArray,PULONG PropertyKeyCount,ULONG ulFlags);
1061  CMAPI CONFIGRET WINAPI CM_Get_DevNode_Property_Keys_Ex(DEVINST dnDevInst,DEVPROPKEY *PropertyKeyArray,PULONG PropertyKeyCount,ULONG ulFlags,HMACHINE hMachine);
1062#endif /* (WINVER >= _WIN32_WINNT_LONGHORN) */
1063
1064  CMAPI CONFIGRET WINAPI CM_Get_DevNode_Status(PULONG pulStatus,PULONG pulProblemNumber,DEVINST dnDevInst,ULONG ulFlags);
1065  CMAPI CONFIGRET WINAPI CM_Get_DevNode_Status_Ex(PULONG pulStatus,PULONG pulProblemNumber,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
1066#define CM_Get_DevInst_Status CM_Get_DevNode_Status
1067#define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex
1068  CMAPI CONFIGRET WINAPI CM_Get_First_Log_Conf(PLOG_CONF plcLogConf,DEVINST dnDevInst,ULONG ulFlags);
1069  CMAPI CONFIGRET WINAPI CM_Get_First_Log_Conf_Ex(PLOG_CONF plcLogConf,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
1070  CMAPI CONFIGRET WINAPI CM_Get_Global_State(PULONG pulState,ULONG ulFlags);
1071  CMAPI CONFIGRET WINAPI CM_Get_Global_State_Ex(PULONG pulState,ULONG ulFlags,HMACHINE hMachine);
1072
1073#define CM_GLOBAL_STATE_CAN_DO_UI (0x00000001)
1074#define CM_GLOBAL_STATE_ON_BIG_STACK (0x00000002)
1075#define CM_GLOBAL_STATE_SERVICES_AVAILABLE (0x00000004)
1076#define CM_GLOBAL_STATE_SHUTTING_DOWN (0x00000008)
1077#define CM_GLOBAL_STATE_DETECTION_PENDING (0x00000010)
1078#if (WINVER >= _WIN32_WINNT_WIN7)
1079#define CM_GLOBAL_STATE_REBOOT_REQUIRED (0x00000020)
1080#endif
1081
1082  CMAPI CONFIGRET WINAPI CM_Get_Hardware_Profile_InfoA(ULONG ulIndex,PHWPROFILEINFO_A pHWProfileInfo,ULONG ulFlags);
1083  CMAPI CONFIGRET WINAPI CM_Get_Hardware_Profile_Info_ExA(ULONG ulIndex,PHWPROFILEINFO_A pHWProfileInfo,ULONG ulFlags,HMACHINE hMachine);
1084  CMAPI CONFIGRET WINAPI CM_Get_Hardware_Profile_InfoW(ULONG ulIndex,PHWPROFILEINFO_W pHWProfileInfo,ULONG ulFlags);
1085  CMAPI CONFIGRET WINAPI CM_Get_Hardware_Profile_Info_ExW(ULONG ulIndex,PHWPROFILEINFO_W pHWProfileInfo,ULONG ulFlags,HMACHINE hMachine);
1086  CMAPI CONFIGRET WINAPI CM_Get_HW_Prof_FlagsA(DEVINSTID_A szDevInstName,ULONG ulHardwareProfile,PULONG pulValue,ULONG ulFlags);
1087  CMAPI CONFIGRET WINAPI CM_Get_HW_Prof_FlagsW(DEVINSTID_W szDevInstName,ULONG ulHardwareProfile,PULONG pulValue,ULONG ulFlags);
1088  CMAPI CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExA(DEVINSTID_A szDevInstName,ULONG ulHardwareProfile,PULONG pulValue,ULONG ulFlags,HMACHINE hMachine);
1089  CMAPI CONFIGRET WINAPI CM_Get_HW_Prof_Flags_ExW(DEVINSTID_W szDevInstName,ULONG ulHardwareProfile,PULONG pulValue,ULONG ulFlags,HMACHINE hMachine);
1090  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_AliasA(LPCSTR pszDeviceInterface,LPGUID AliasInterfaceGuid,LPSTR pszAliasDeviceInterface,PULONG pulLength,ULONG ulFlags);
1091  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_AliasW(LPCWSTR pszDeviceInterface,LPGUID AliasInterfaceGuid,LPWSTR pszAliasDeviceInterface,PULONG pulLength,ULONG ulFlags);
1092  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_Alias_ExA(LPCSTR pszDeviceInterface,LPGUID AliasInterfaceGuid,LPSTR pszAliasDeviceInterface,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
1093  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_Alias_ExW(LPCWSTR pszDeviceInterface,LPGUID AliasInterfaceGuid,LPWSTR pszAliasDeviceInterface,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
1094  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_ExA(LPGUID InterfaceClassGuid,DEVINSTID_A pDeviceID,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
1095  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_ExW(LPGUID InterfaceClassGuid,DEVINSTID_W pDeviceID,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
1096  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExA(PULONG pulLen,LPGUID InterfaceClassGuid,DEVINSTID_A pDeviceID,ULONG ulFlags,HMACHINE hMachine);
1097  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExW(PULONG pulLen,LPGUID InterfaceClassGuid,DEVINSTID_W pDeviceID,ULONG ulFlags,HMACHINE hMachine);
1098
1099#if (WINVER >= _WIN32_WINNT_LONGHORN)
1100  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_PropertyW(LPCWSTR pszDeviceInterface,const DEVPROPKEY *PropertyKey,DEVPROPTYPE *PropertyType,PBYTE PropertyBuffer,PULONG PropertyBufferSize,ULONG ulFlags);
1101#ifdef UNICODE
1102#define CM_Get_Device_Interface_Property CM_Get_Device_Interface_PropertyW
1103#endif
1104  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_Property_ExW(LPCWSTR pszDeviceInterface,const DEVPROPKEY *PropertyKey,DEVPROPTYPE *PropertyType,PBYTE PropertyBuffer,PULONG PropertyBufferSize,ULONG ulFlags,HMACHINE hMachine);
1105#ifdef UNICODE
1106#define CM_Get_Device_Interface_Property_Ex CM_Get_Device_Interface_Property_ExW
1107#endif
1108  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_Property_KeysW(LPCWSTR pszDeviceInterface,DEVPROPKEY *PropertyKeyArray,PULONG PropertyKeyCount,ULONG ulFlags);
1109#ifdef UNICODE
1110#define CM_Get_Device_Interface_Property_Keys CM_Get_Device_Interface_Property_KeysW
1111#endif
1112  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_Property_Keys_ExW(LPCWSTR pszDeviceInterface,DEVPROPKEY *PropertyKeyArray,PULONG PropertyKeyCount,ULONG ulFlags,HMACHINE hMachine);
1113#ifdef UNICODE
1114#define CM_Get_Device_Interface_Property_Keys_Ex CM_Get_Device_Interface_Property_Keys_ExW
1115#endif
1116#endif /* (WINVER >= _WIN32_WINNT_LONGHORN) */
1117
1118  CMAPI CONFIGRET WINAPI CM_Get_Log_Conf_Priority(LOG_CONF lcLogConf,PPRIORITY pPriority,ULONG ulFlags);
1119  CMAPI CONFIGRET WINAPI CM_Get_Log_Conf_Priority_Ex(LOG_CONF lcLogConf,PPRIORITY pPriority,ULONG ulFlags,HMACHINE hMachine);
1120  CMAPI CONFIGRET WINAPI CM_Get_Next_Log_Conf(PLOG_CONF plcLogConf,LOG_CONF lcLogConf,ULONG ulFlags);
1121  CMAPI CONFIGRET WINAPI CM_Get_Next_Log_Conf_Ex(PLOG_CONF plcLogConf,LOG_CONF lcLogConf,ULONG ulFlags,HMACHINE hMachine);
1122  CMAPI CONFIGRET WINAPI CM_Get_Parent(PDEVINST pdnDevInst,DEVINST dnDevInst,ULONG ulFlags);
1123  CMAPI CONFIGRET WINAPI CM_Get_Parent_Ex(PDEVINST pdnDevInst,DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
1124  CMAPI CONFIGRET WINAPI CM_Get_Res_Des_Data(RES_DES rdResDes,PVOID Buffer,ULONG BufferLen,ULONG ulFlags);
1125  CMAPI CONFIGRET WINAPI CM_Get_Res_Des_Data_Ex(RES_DES rdResDes,PVOID Buffer,ULONG BufferLen,ULONG ulFlags,HMACHINE hMachine);
1126  CMAPI CONFIGRET WINAPI CM_Get_Res_Des_Data_Size(PULONG pulSize,RES_DES rdResDes,ULONG ulFlags);
1127  CMAPI CONFIGRET WINAPI CM_Get_Res_Des_Data_Size_Ex(PULONG pulSize,RES_DES rdResDes,ULONG ulFlags,HMACHINE hMachine);
1128  CMAPI CONFIGRET WINAPI CM_Get_Sibling(PDEVINST pdnDevInst,DEVINST DevInst,ULONG ulFlags);
1129  CMAPI CONFIGRET WINAPI CM_Get_Sibling_Ex(PDEVINST pdnDevInst,DEVINST DevInst,ULONG ulFlags,HMACHINE hMachine);
1130  CMAPI WORD WINAPI CM_Get_Version(VOID);
1131  CMAPI WORD WINAPI CM_Get_Version_Ex(HMACHINE hMachine);
1132  CMAPI WINBOOL WINAPI CM_Is_Version_Available(WORD wVersion);
1133  CMAPI WINBOOL WINAPI CM_Is_Version_Available_Ex(WORD wVersion,HMACHINE hMachine);
1134  CMAPI CONFIGRET WINAPI CM_Intersect_Range_List(RANGE_LIST rlhOld1,RANGE_LIST rlhOld2,RANGE_LIST rlhNew,ULONG ulFlags);
1135  CMAPI CONFIGRET WINAPI CM_Invert_Range_List(RANGE_LIST rlhOld,RANGE_LIST rlhNew,DWORDLONG ullMaxValue,ULONG ulFlags);
1136  CMAPI CONFIGRET WINAPI CM_Locate_DevNodeA(PDEVINST pdnDevInst,DEVINSTID_A pDeviceID,ULONG ulFlags);
1137  CMAPI CONFIGRET WINAPI CM_Locate_DevNodeW(PDEVINST pdnDevInst,DEVINSTID_W pDeviceID,ULONG ulFlags);
1138  CMAPI CONFIGRET WINAPI CM_Locate_DevNode_ExA(PDEVINST pdnDevInst,DEVINSTID_A pDeviceID,ULONG ulFlags,HMACHINE hMachine);
1139  CMAPI CONFIGRET WINAPI CM_Locate_DevNode_ExW(PDEVINST pdnDevInst,DEVINSTID_W pDeviceID,ULONG ulFlags,HMACHINE hMachine);
1140#define CM_Locate_DevInstA CM_Locate_DevNodeA
1141#define CM_Locate_DevInstW CM_Locate_DevNodeW
1142#define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA
1143#define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW
1144  CMAPI CONFIGRET WINAPI CM_Merge_Range_List(RANGE_LIST rlhOld1,RANGE_LIST rlhOld2,RANGE_LIST rlhNew,ULONG ulFlags);
1145  CMAPI CONFIGRET WINAPI CM_Modify_Res_Des(PRES_DES prdResDes,RES_DES rdResDes,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags);
1146  CMAPI CONFIGRET WINAPI CM_Modify_Res_Des_Ex(PRES_DES prdResDes,RES_DES rdResDes,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags,HMACHINE hMachine);
1147  CMAPI CONFIGRET WINAPI CM_Move_DevNode(DEVINST dnFromDevInst,DEVINST dnToDevInst,ULONG ulFlags);
1148  CMAPI CONFIGRET WINAPI CM_Move_DevNode_Ex(DEVINST dnFromDevInst,DEVINST dnToDevInst,ULONG ulFlags,HMACHINE hMachine);
1149#define CM_Move_DevInst CM_Move_DevNode
1150#define CM_Move_DevInst_Ex CM_Move_DevNode_Ex
1151  CMAPI CONFIGRET WINAPI CM_Next_Range(PRANGE_ELEMENT preElement,PDWORDLONG pullStart,PDWORDLONG pullEnd,ULONG ulFlags);
1152  CMAPI CONFIGRET WINAPI CM_Get_Next_Res_Des(PRES_DES prdResDes,RES_DES rdResDes,RESOURCEID ForResource,PRESOURCEID pResourceID,ULONG ulFlags);
1153  CMAPI CONFIGRET WINAPI CM_Get_Next_Res_Des_Ex(PRES_DES prdResDes,RES_DES rdResDes,RESOURCEID ForResource,PRESOURCEID pResourceID,ULONG ulFlags,HMACHINE hMachine);
1154  CMAPI CONFIGRET WINAPI CM_Open_Class_KeyA(LPGUID ClassGuid,LPCSTR pszClassName,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkClass,ULONG ulFlags);
1155  CMAPI CONFIGRET WINAPI CM_Open_Class_KeyW(LPGUID ClassGuid,LPCWSTR pszClassName,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkClass,ULONG ulFlags);
1156  CMAPI CONFIGRET WINAPI CM_Open_Class_Key_ExA(LPGUID pszClassGuid,LPCSTR pszClassName,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkClass,ULONG ulFlags,HMACHINE hMachine);
1157  CMAPI CONFIGRET WINAPI CM_Open_Class_Key_ExW(LPGUID pszClassGuid,LPCWSTR pszClassName,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkClass,ULONG ulFlags,HMACHINE hMachine);
1158  CMAPI CONFIGRET WINAPI CM_Open_DevNode_Key(DEVINST dnDevNode,REGSAM samDesired,ULONG ulHardwareProfile,REGDISPOSITION Disposition,PHKEY phkDevice,ULONG ulFlags);
1159  CMAPI CONFIGRET WINAPI CM_Open_DevNode_Key_Ex(DEVINST dnDevNode,REGSAM samDesired,ULONG ulHardwareProfile,REGDISPOSITION Disposition,PHKEY phkDevice,ULONG ulFlags,HMACHINE hMachine);
1160#define CM_Open_DevInst_Key CM_Open_DevNode_Key
1161#define CM_Open_DevInst_Key_Ex CM_Open_DevNode_Key_Ex
1162
1163#if (WINVER >= _WIN32_WINNT_LONGHORN)
1164  CMAPI CONFIGRET WINAPI CM_Open_Device_Interface_KeyA(LPCSTR pszDeviceInterface,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkDeviceInterface,ULONG ulFlags);
1165  CMAPI CONFIGRET WINAPI CM_Open_Device_Interface_KeyW(LPCWSTR pszDeviceInterface,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkDeviceInterface,ULONG ulFlags);
1166#define CM_Open_Device_Interface_Key __MINGW_NAME_AW(CM_Open_Device_Interface_Key)
1167  CMAPI CONFIGRET WINAPI CM_Open_Device_Interface_Key_ExA(LPCSTR pszDeviceInterface,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkDeviceInterface,ULONG ulFlags,HMACHINE hMachine);
1168  CMAPI CONFIGRET WINAPI CM_Open_Device_Interface_Key_ExW(LPCWSTR pszDeviceInterface,REGSAM samDesired,REGDISPOSITION Disposition,PHKEY phkDeviceInterface,ULONG ulFlags,HMACHINE hMachine);
1169#define CM_Open_Device_Interface_Key_Ex __MINGW_NAME_AW(CM_Open_Device_Interface_Key_Ex)
1170  CMAPI CONFIGRET WINAPI CM_Delete_Device_Interface_KeyA(LPCSTR pszDeviceInterface,ULONG ulFlags);
1171  CMAPI CONFIGRET WINAPI CM_Delete_Device_Interface_KeyW(LPCWSTR pszDeviceInterface,ULONG ulFlags);
1172#define CM_Delete_Device_Interface_Key __MINGW_NAME_AW(CM_Delete_Device_Interface_Key)
1173  CMAPI CONFIGRET WINAPI CM_Delete_Device_Interface_Key_ExA(LPCSTR pszDeviceInterface,ULONG ulFlags,HMACHINE hMachine);
1174  CMAPI CONFIGRET WINAPI CM_Delete_Device_Interface_Key_ExW(LPCWSTR pszDeviceInterface,ULONG ulFlags,HMACHINE hMachine);
1175#define CM_Delete_Device_Interface_Key_Ex __MINGW_NAME_AW(CM_Delete_Device_Interface_Key_Ex)
1176#endif /* (WINVER >= _WIN32_WINNT_LONGHORN) */
1177
1178  CMAPI CONFIGRET WINAPI CM_Query_Arbitrator_Free_Data(PVOID pData,ULONG DataLen,DEVINST dnDevInst,RESOURCEID ResourceID,ULONG ulFlags);
1179  CMAPI CONFIGRET WINAPI CM_Query_Arbitrator_Free_Data_Ex(PVOID pData,ULONG DataLen,DEVINST dnDevInst,RESOURCEID ResourceID,ULONG ulFlags,HMACHINE hMachine);
1180  CMAPI CONFIGRET WINAPI CM_Query_Arbitrator_Free_Size(PULONG pulSize,DEVINST dnDevInst,RESOURCEID ResourceID,ULONG ulFlags);
1181  CMAPI CONFIGRET WINAPI CM_Query_Arbitrator_Free_Size_Ex(PULONG pulSize,DEVINST dnDevInst,RESOURCEID ResourceID,ULONG ulFlags,HMACHINE hMachine);
1182  CMAPI CONFIGRET WINAPI CM_Query_Remove_SubTree(DEVINST dnAncestor,ULONG ulFlags);
1183  CMAPI CONFIGRET WINAPI CM_Query_Remove_SubTree_Ex(DEVINST dnAncestor,ULONG ulFlags,HMACHINE hMachine);
1184  CMAPI CONFIGRET WINAPI CM_Query_And_Remove_SubTreeA(DEVINST dnAncestor,PPNP_VETO_TYPE pVetoType,LPSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags);
1185  CMAPI CONFIGRET WINAPI CM_Query_And_Remove_SubTree_ExA(DEVINST dnAncestor,PPNP_VETO_TYPE pVetoType,LPSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags,HMACHINE hMachine);
1186  CMAPI CONFIGRET WINAPI CM_Query_And_Remove_SubTreeW(DEVINST dnAncestor,PPNP_VETO_TYPE pVetoType,LPWSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags);
1187  CMAPI CONFIGRET WINAPI CM_Query_And_Remove_SubTree_ExW(DEVINST dnAncestor,PPNP_VETO_TYPE pVetoType,LPWSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags,HMACHINE hMachine);
1188  CMAPI CONFIGRET WINAPI CM_Request_Device_EjectA(DEVINST dnDevInst,PPNP_VETO_TYPE pVetoType,LPSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags);
1189  CMAPI CONFIGRET WINAPI CM_Request_Device_Eject_ExA(DEVINST dnDevInst,PPNP_VETO_TYPE pVetoType,LPSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags,HMACHINE hMachine);
1190  CMAPI CONFIGRET WINAPI CM_Request_Device_EjectW(DEVINST dnDevInst,PPNP_VETO_TYPE pVetoType,LPWSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags);
1191  CMAPI CONFIGRET WINAPI CM_Request_Device_Eject_ExW(DEVINST dnDevInst,PPNP_VETO_TYPE pVetoType,LPWSTR pszVetoName,ULONG ulNameLength,ULONG ulFlags,HMACHINE hMachine);
1192  CMAPI CONFIGRET WINAPI CM_Reenumerate_DevNode(DEVINST dnDevInst,ULONG ulFlags);
1193  CMAPI CONFIGRET WINAPI CM_Reenumerate_DevNode_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
1194#define CM_Reenumerate_DevInst CM_Reenumerate_DevNode
1195#define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex
1196  CMAPI CONFIGRET WINAPI CM_Register_Device_InterfaceA(DEVINST dnDevInst,LPGUID InterfaceClassGuid,LPCSTR pszReference,LPSTR pszDeviceInterface,PULONG pulLength,ULONG ulFlags);
1197  CMAPI CONFIGRET WINAPI CM_Register_Device_InterfaceW(DEVINST dnDevInst,LPGUID InterfaceClassGuid,LPCWSTR pszReference,LPWSTR pszDeviceInterface,PULONG pulLength,ULONG ulFlags);
1198  CMAPI CONFIGRET WINAPI CM_Register_Device_Interface_ExA(DEVINST dnDevInst,LPGUID InterfaceClassGuid,LPCSTR pszReference,LPSTR pszDeviceInterface,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
1199  CMAPI CONFIGRET WINAPI CM_Register_Device_Interface_ExW(DEVINST dnDevInst,LPGUID InterfaceClassGuid,LPCWSTR pszReference,LPWSTR pszDeviceInterface,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
1200  CMAPI CONFIGRET WINAPI CM_Set_DevNode_Problem_Ex(DEVINST dnDevInst,ULONG ulProblem,ULONG ulFlags,HMACHINE hMachine);
1201  CMAPI CONFIGRET WINAPI CM_Set_DevNode_Problem(DEVINST dnDevInst,ULONG ulProblem,ULONG ulFlags);
1202#define CM_Set_DevInst_Problem CM_Set_DevNode_Problem
1203#define CM_Set_DevInst_Problem_Ex CM_Set_DevNode_Problem_Ex
1204  CMAPI CONFIGRET WINAPI CM_Unregister_Device_InterfaceA(LPCSTR pszDeviceInterface,ULONG ulFlags);
1205  CMAPI CONFIGRET WINAPI CM_Unregister_Device_InterfaceW(LPCWSTR pszDeviceInterface,ULONG ulFlags);
1206  CMAPI CONFIGRET WINAPI CM_Unregister_Device_Interface_ExA(LPCSTR pszDeviceInterface,ULONG ulFlags,HMACHINE hMachine);
1207  CMAPI CONFIGRET WINAPI CM_Unregister_Device_Interface_ExW(LPCWSTR pszDeviceInterface,ULONG ulFlags,HMACHINE hMachine);
1208  CMAPI CONFIGRET WINAPI CM_Register_Device_Driver(DEVINST dnDevInst,ULONG ulFlags);
1209  CMAPI CONFIGRET WINAPI CM_Register_Device_Driver_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
1210  CMAPI CONFIGRET WINAPI CM_Remove_SubTree(DEVINST dnAncestor,ULONG ulFlags);
1211  CMAPI CONFIGRET WINAPI CM_Remove_SubTree_Ex(DEVINST dnAncestor,ULONG ulFlags,HMACHINE hMachine);
1212
1213#if (WINVER >= _WIN32_WINNT_LONGHORN)
1214  CMAPI CONFIGRET WINAPI CM_Set_DevNode_PropertyW(DEVINST dnDevInst,const DEVPROPKEY *PropertyKey,DEVPROPTYPE PropertyType,const PBYTE PropertyBuffer,ULONG PropertyBufferSize,ULONG ulFlags);
1215#ifdef UNICODE
1216#define CM_Set_DevNode_Property CM_Set_DevNode_PropertyW
1217#endif
1218  CMAPI CONFIGRET WINAPI CM_Set_DevNode_Property_ExW(DEVINST dnDevInst,const DEVPROPKEY *PropertyKey,DEVPROPTYPE PropertyType,const PBYTE PropertyBuffer,ULONG PropertyBufferSize,ULONG ulFlags,HMACHINE hMachine);
1219#ifdef UNICODE
1220#define CM_Set_DevNode_Property_Ex CM_Set_DevNode_Property_ExW
1221#endif
1222#endif /* (WINVER >= _WIN32_WINNT_LONGHORN) */
1223
1224  CMAPI CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyA(DEVINST dnDevInst,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags);
1225  CMAPI CONFIGRET WINAPI CM_Set_DevNode_Registry_PropertyW(DEVINST dnDevInst,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags);
1226  CMAPI CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExA(DEVINST dnDevInst,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags,HMACHINE hMachine);
1227  CMAPI CONFIGRET WINAPI CM_Set_DevNode_Registry_Property_ExW(DEVINST dnDevInst,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags,HMACHINE hMachine);
1228
1229#if (WINVER >= _WIN32_WINNT_LONGHORN)
1230  CMAPI CONFIGRET WINAPI CM_Set_Device_Interface_PropertyW(LPCWSTR pszDeviceInterface,const DEVPROPKEY *PropertyKey,DEVPROPTYPE PropertyType,const PBYTE PropertyBuffer,ULONG PropertyBufferSize,ULONG ulFlags);
1231#ifdef UNICODE
1232#define CM_Set_Device_Interface_Property CM_Set_Device_Interface_PropertyW
1233#endif
1234  CMAPI CONFIGRET WINAPI CM_Set_Device_Interface_Property_ExW(LPCWSTR pszDeviceInterface,const DEVPROPKEY *PropertyKey,DEVPROPTYPE PropertyType,const PBYTE PropertyBuffer,ULONG PropertyBufferSize,ULONG ulFlags,HMACHINE hMachine);
1235#ifdef UNICODE
1236#define CM_Set_Device_Interface_Property_Ex CM_Set_Device_Interface_Property_ExW
1237#endif
1238#endif /* (WINVER >= _WIN32_WINNT_LONGHORN) */
1239
1240#define CM_Set_DevInst_Registry_PropertyW CM_Set_DevNode_Registry_PropertyW
1241#define CM_Set_DevInst_Registry_PropertyA CM_Set_DevNode_Registry_PropertyA
1242#define CM_Set_DevInst_Registry_Property_ExW CM_Set_DevNode_Registry_Property_ExW
1243#define CM_Set_DevInst_Registry_Property_ExA CM_Set_DevNode_Registry_Property_ExA
1244  CMAPI CONFIGRET WINAPI CM_Is_Dock_Station_Present(PBOOL pbPresent);
1245  CMAPI CONFIGRET WINAPI CM_Is_Dock_Station_Present_Ex(PBOOL pbPresent,HMACHINE hMachine);
1246  CMAPI CONFIGRET WINAPI CM_Request_Eject_PC(VOID);
1247  CMAPI CONFIGRET WINAPI CM_Request_Eject_PC_Ex(HMACHINE hMachine);
1248  CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_FlagsA(DEVINSTID_A szDevInstName,ULONG ulConfig,ULONG ulValue,ULONG ulFlags);
1249  CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_FlagsW(DEVINSTID_W szDevInstName,ULONG ulConfig,ULONG ulValue,ULONG ulFlags);
1250  CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExA(DEVINSTID_A szDevInstName,ULONG ulConfig,ULONG ulValue,ULONG ulFlags,HMACHINE hMachine);
1251  CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_Flags_ExW(DEVINSTID_W szDevInstName,ULONG ulConfig,ULONG ulValue,ULONG ulFlags,HMACHINE hMachine);
1252  CMAPI CONFIGRET WINAPI CM_Setup_DevNode(DEVINST dnDevInst,ULONG ulFlags);
1253  CMAPI CONFIGRET WINAPI CM_Setup_DevNode_Ex(DEVINST dnDevInst,ULONG ulFlags,HMACHINE hMachine);
1254#define CM_Setup_DevInst CM_Setup_DevNode
1255#define CM_Setup_DevInst_Ex CM_Setup_DevNode_Ex
1256  CMAPI CONFIGRET WINAPI CM_Test_Range_Available(DWORDLONG ullStartValue,DWORDLONG ullEndValue,RANGE_LIST rlh,ULONG ulFlags);
1257  CMAPI CONFIGRET WINAPI CM_Uninstall_DevNode(DEVNODE dnPhantom,ULONG ulFlags);
1258  CMAPI CONFIGRET WINAPI CM_Uninstall_DevNode_Ex(DEVNODE dnPhantom,ULONG ulFlags,HANDLE hMachine);
1259#define CM_Uninstall_DevInst CM_Uninstall_DevNode
1260#define CM_Uninstall_DevInst_Ex CM_Uninstall_DevNode_Ex
1261  CMAPI CONFIGRET WINAPI CM_Run_Detection(ULONG ulFlags);
1262  CMAPI CONFIGRET WINAPI CM_Run_Detection_Ex(ULONG ulFlags,HMACHINE hMachine);
1263
1264#if (WINVER >= _WIN32_WINNT_LONGHORN)
1265  CONFIGRET CM_Apply_PowerScheme(VOID);
1266  CONFIGRET CM_Write_UserPowerKey(const GUID *SchemeGuid,const GUID *SubGroupOfPowerSettingsGuid,const GUID *PowerSettingGuid,ULONG AccessFlags,ULONG Type,UCHAR *Buffer,DWORD BufferSize,PDWORD Error);
1267  CONFIGRET CM_Set_ActiveScheme(const GUID *SchemeGuid,PDWORD Error);
1268  CONFIGRET CM_Restore_DefaultPowerScheme(const GUID *SchemeGuid,PDWORD Error);
1269  CONFIGRET CM_RestoreAll_DefaultPowerSchemes(PDWORD Error);
1270  CONFIGRET CM_Duplicate_PowerScheme(const GUID *SourceSchemeGuid,GUID **DestinationSchemeGuid,PDWORD Error);
1271  CONFIGRET CM_Delete_PowerScheme(const GUID *SchemeGuid,PDWORD Error);
1272  CONFIGRET CM_Import_PowerScheme(LPCWSTR ImportFileNamePath,GUID **DestinationSchemeGuid,PDWORD Error);
1273#endif /* (WINVER >= _WIN32_WINNT_LONGHORN) */
1274
1275  CMAPI CONFIGRET WINAPI CM_Set_HW_Prof(ULONG ulHardwareProfile,ULONG ulFlags);
1276  CMAPI CONFIGRET WINAPI CM_Set_HW_Prof_Ex(ULONG ulHardwareProfile,ULONG ulFlags,HMACHINE hMachine);
1277  CMAPI CONFIGRET WINAPI CM_Query_Resource_Conflict_List(PCONFLICT_LIST pclConflictList,DEVINST dnDevInst,RESOURCEID ResourceID,PCVOID ResourceData,ULONG ResourceLen,ULONG ulFlags,HMACHINE hMachine);
1278  CMAPI CONFIGRET WINAPI CM_Free_Resource_Conflict_Handle(CONFLICT_LIST clConflictList);
1279  CMAPI CONFIGRET WINAPI CM_Get_Resource_Conflict_Count(CONFLICT_LIST clConflictList,PULONG pulCount);
1280  CMAPI CONFIGRET WINAPI CM_Get_Resource_Conflict_DetailsA(CONFLICT_LIST clConflictList,ULONG ulIndex,PCONFLICT_DETAILS_A pConflictDetails);
1281  CMAPI CONFIGRET WINAPI CM_Get_Resource_Conflict_DetailsW(CONFLICT_LIST clConflictList,ULONG ulIndex,PCONFLICT_DETAILS_W pConflictDetails);
1282
1283#if (WINVER >= _WIN32_WINNT_LONGHORN)
1284  CMAPI CONFIGRET WINAPI CM_Get_Class_PropertyW(LPCGUID ClassGUID,const DEVPROPKEY *PropertyKey,DEVPROPTYPE *PropertyType,PBYTE PropertyBuffer,PULONG PropertyBufferSize,ULONG ulFlags);
1285#ifdef UNICODE
1286#define CM_Get_Class_Property CM_Get_Class_PropertyW
1287#endif
1288  CMAPI CONFIGRET WINAPI CM_Get_Class_Property_ExW(LPCGUID ClassGUID,const DEVPROPKEY *PropertyKey,DEVPROPTYPE *PropertyType,PBYTE PropertyBuffer,PULONG PropertyBufferSize,ULONG ulFlags,HMACHINE hMachine);
1289#ifdef UNICODE
1290#define CM_Get_Class_Property_Ex CM_Get_Class_Property_ExW
1291#endif
1292  CMAPI CONFIGRET WINAPI CM_Get_Class_Property_Keys(LPCGUID ClassGUID,DEVPROPKEY *PropertyKeyArray,PULONG PropertyKeyCount,ULONG ulFlags);
1293  CMAPI CONFIGRET WINAPI CM_Get_Class_Property_Keys_Ex(LPCGUID ClassGUID,DEVPROPKEY *PropertyKeyArray,PULONG PropertyKeyCount,ULONG ulFlags,HMACHINE hMachine);
1294  CMAPI CONFIGRET WINAPI CM_Set_Class_PropertyW(LPCGUID ClassGUID,const DEVPROPKEY *PropertyKey,DEVPROPTYPE PropertyType,const PBYTE PropertyBuffer,ULONG PropertyBufferSize,ULONG ulFlags);
1295#ifdef UNICODE
1296#define CM_Set_Class_Property CM_Set_Class_PropertyW
1297#endif
1298  CMAPI CONFIGRET WINAPI CM_Set_Class_Property_ExW(LPCGUID ClassGUID,const DEVPROPKEY *PropertyKey,DEVPROPTYPE PropertyType,const PBYTE PropertyBuffer,ULONG PropertyBufferSize,ULONG ulFlags,HMACHINE hMachine);
1299#ifdef UNICODE
1300#define CM_Set_Class_Property_Ex CM_Set_Class_Property_ExW
1301#endif
1302#endif /* (WINVER >= _WIN32_WINNT_LONGHORN) */
1303
1304  CMAPI CONFIGRET WINAPI CM_Get_Class_Registry_PropertyW(LPGUID ClassGUID,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
1305  CMAPI CONFIGRET WINAPI CM_Set_Class_Registry_PropertyW(LPGUID ClassGUID,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags,HMACHINE hMachine);
1306  CMAPI CONFIGRET WINAPI CM_Get_Class_Registry_PropertyA(LPGUID ClassGUID,ULONG ulProperty,PULONG pulRegDataType,PVOID Buffer,PULONG pulLength,ULONG ulFlags,HMACHINE hMachine);
1307  CMAPI CONFIGRET WINAPI CM_Set_Class_Registry_PropertyA(LPGUID ClassGUID,ULONG ulProperty,PCVOID Buffer,ULONG ulLength,ULONG ulFlags,HMACHINE hMachine);
1308#define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents
1309  DWORD WINAPI CM_WaitNoPendingInstallEvents(DWORD dwTimeout);
1310
1311#if WINVER >= _WIN32_WINNT_WIN8
1312
1313  CMAPI CONFIGRET WINAPI CM_Register_Notification(PCM_NOTIFY_FILTER pFilter, PVOID pContext, PCM_NOTIFY_CALLBACK pCallback, PHCMNOTIFICATION pNotifyContext);
1314  CMAPI CONFIGRET WINAPI CM_Unregister_Notification(HCMNOTIFICATION NotifyContext);
1315
1316#endif /* WINVER >= _WIN32_WINNT_WIN8 */
1317
1318#if (WINVER >= _WIN32_WINNT_WIN7)
1319  CMAPI DWORD WINAPI CM_MapCrToWin32Err(CONFIGRET CmReturnCode,DWORD DefaultErr);
1320#endif
1321
1322#define CR_SUCCESS (0x00000000)
1323#define CR_DEFAULT (0x00000001)
1324#define CR_OUT_OF_MEMORY (0x00000002)
1325#define CR_INVALID_POINTER (0x00000003)
1326#define CR_INVALID_FLAG (0x00000004)
1327#define CR_INVALID_DEVNODE (0x00000005)
1328#define CR_INVALID_DEVINST CR_INVALID_DEVNODE
1329#define CR_INVALID_RES_DES (0x00000006)
1330#define CR_INVALID_LOG_CONF (0x00000007)
1331#define CR_INVALID_ARBITRATOR (0x00000008)
1332#define CR_INVALID_NODELIST (0x00000009)
1333#define CR_DEVNODE_HAS_REQS (0x0000000A)
1334#define CR_DEVINST_HAS_REQS CR_DEVNODE_HAS_REQS
1335#define CR_INVALID_RESOURCEID (0x0000000B)
1336#define CR_DLVXD_NOT_FOUND (0x0000000C)
1337#define CR_NO_SUCH_DEVNODE (0x0000000D)
1338#define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE
1339#define CR_NO_MORE_LOG_CONF (0x0000000E)
1340#define CR_NO_MORE_RES_DES (0x0000000F)
1341#define CR_ALREADY_SUCH_DEVNODE (0x00000010)
1342#define CR_ALREADY_SUCH_DEVINST CR_ALREADY_SUCH_DEVNODE
1343#define CR_INVALID_RANGE_LIST (0x00000011)
1344#define CR_INVALID_RANGE (0x00000012)
1345#define CR_FAILURE (0x00000013)
1346#define CR_NO_SUCH_LOGICAL_DEV (0x00000014)
1347#define CR_CREATE_BLOCKED (0x00000015)
1348#define CR_NOT_SYSTEM_VM (0x00000016)
1349#define CR_REMOVE_VETOED (0x00000017)
1350#define CR_APM_VETOED (0x00000018)
1351#define CR_INVALID_LOAD_TYPE (0x00000019)
1352#define CR_BUFFER_SMALL (0x0000001A)
1353#define CR_NO_ARBITRATOR (0x0000001B)
1354#define CR_NO_REGISTRY_HANDLE (0x0000001C)
1355#define CR_REGISTRY_ERROR (0x0000001D)
1356#define CR_INVALID_DEVICE_ID (0x0000001E)
1357#define CR_INVALID_DATA (0x0000001F)
1358#define CR_INVALID_API (0x00000020)
1359#define CR_DEVLOADER_NOT_READY (0x00000021)
1360#define CR_NEED_RESTART (0x00000022)
1361#define CR_NO_MORE_HW_PROFILES (0x00000023)
1362#define CR_DEVICE_NOT_THERE (0x00000024)
1363#define CR_NO_SUCH_VALUE (0x00000025)
1364#define CR_WRONG_TYPE (0x00000026)
1365#define CR_INVALID_PRIORITY (0x00000027)
1366#define CR_NOT_DISABLEABLE (0x00000028)
1367#define CR_FREE_RESOURCES (0x00000029)
1368#define CR_QUERY_VETOED (0x0000002A)
1369#define CR_CANT_SHARE_IRQ (0x0000002B)
1370#define CR_NO_DEPENDENT (0x0000002C)
1371#define CR_SAME_RESOURCES (0x0000002D)
1372#define CR_NO_SUCH_REGISTRY_KEY (0x0000002E)
1373#define CR_INVALID_MACHINENAME (0x0000002F)
1374#define CR_REMOTE_COMM_FAILURE (0x00000030)
1375#define CR_MACHINE_UNAVAILABLE (0x00000031)
1376#define CR_NO_CM_SERVICES (0x00000032)
1377#define CR_ACCESS_DENIED (0x00000033)
1378#define CR_CALL_NOT_IMPLEMENTED (0x00000034)
1379#define CR_INVALID_PROPERTY (0x00000035)
1380#define CR_DEVICE_INTERFACE_ACTIVE (0x00000036)
1381#define CR_NO_SUCH_DEVICE_INTERFACE (0x00000037)
1382#define CR_INVALID_REFERENCE_STRING (0x00000038)
1383#define CR_INVALID_CONFLICT_LIST (0x00000039)
1384#define CR_INVALID_INDEX (0x0000003A)
1385#define CR_INVALID_STRUCTURE_SIZE (0x0000003B)
1386#define NUM_CR_RESULTS (0x0000003C)
1387
1388#endif /* WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) */
1389
1390#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
1391#define CM_Get_Device_Interface_List __MINGW_NAME_AW(CM_Get_Device_Interface_List)
1392#define CM_Get_Device_Interface_List_Size __MINGW_NAME_AW(CM_Get_Device_Interface_List_Size)
1393
1394  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_ListA(LPGUID InterfaceClassGuid,DEVINSTID_A pDeviceID,PCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
1395  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_ListW(LPGUID InterfaceClassGuid,DEVINSTID_W pDeviceID,PWCHAR Buffer,ULONG BufferLen,ULONG ulFlags);
1396  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_SizeA(PULONG pulLen,LPGUID InterfaceClassGuid,DEVINSTID_A pDeviceID,ULONG ulFlags);
1397  CMAPI CONFIGRET WINAPI CM_Get_Device_Interface_List_SizeW(PULONG pulLen,LPGUID InterfaceClassGuid,DEVINSTID_W pDeviceID,ULONG ulFlags);
1398#endif
1399
1400#ifdef __cplusplus
1401}
1402#endif
1403#endif