cfgmgr32.h
上传用户:gzccxsp
上传日期:2015-07-14
资源大小:182k
文件大小:83k
源码类别:

MacOS编程

开发平台:

Visual C++

  1. /*++
  2. Copyright (c) 1989-1997  Microsoft Corporation
  3. Module Name:
  4.     cfgmgr32.h
  5. Abstract:
  6.     This module contains the user APIs for the Configuration Manager,
  7.     along with any public data structures needed to call these APIs.
  8. Author:
  9.     Paula Tomlinson (paulat) 06/19/1995
  10. Revision History:
  11. --*/
  12. #ifndef _CFGMGR32_
  13. #define _CFGMGR32_
  14. #include "cfg.h"
  15. #ifndef GUID_DEFINED
  16. #define GUID_DEFINED
  17. typedef struct _GUID
  18. {
  19.     unsigned long Data1;
  20.     unsigned short Data2;
  21.     unsigned short Data3;
  22.     unsigned char Data4[8];
  23. } GUID;
  24. #endif /* GUID_DEFINED */
  25. #ifndef __LPGUID_DEFINED__
  26. #define __LPGUID_DEFINED__
  27. typedef GUID *LPGUID;
  28. #endif
  29. #if !defined (_CFGMGR32_)
  30. #define CMAPI     DECLSPEC_IMPORT
  31. #else
  32. #define CMAPI
  33. #endif
  34. typedef  CONST VOID *PCVOID;
  35. //--------------------------------------------------------------
  36. // General size definitions
  37. //--------------------------------------------------------------
  38. #define MAX_DEVICE_ID_LEN     200
  39. #define MAX_DEVNODE_ID_LEN    MAX_DEVICE_ID_LEN
  40. #define MAX_GUID_STRING_LEN   39          // 38 chars + terminator null
  41. #define MAX_CLASS_NAME_LEN    32
  42. #define MAX_PROFILE_LEN       80
  43. #define MAX_CONFIG_VALUE      9999
  44. #define MAX_INSTANCE_VALUE    9999
  45. #define MAX_MEM_REGISTERS     9     // Win95 compatibility--not applicable to 32-bit ConfigMgr
  46. #define MAX_IO_PORTS          20    // Win95 compatibility--not applicable to 32-bit ConfigMgr
  47. #define MAX_IRQS              7     // Win95 compatibility--not applicable to 32-bit ConfigMgr
  48. #define MAX_DMA_CHANNELS      7     // Win95 compatibility--not applicable to 32-bit ConfigMgr
  49. #define DWORD_MAX             0xFFFFFFFF
  50. #define DWORDLONG_MAX         0xFFFFFFFFFFFFFFFF
  51. #define CONFIGMG_VERSION      0x0400
  52. //--------------------------------------------------------------
  53. // Data types
  54. //--------------------------------------------------------------
  55. //
  56. // Work around weirdness with Win32 typedef...
  57. //
  58. #ifdef NT_INCLUDED
  59. //
  60. // __int64 is only supported by 2.0 and later midl.
  61. // __midl is set by the 2.0 midl and not by 1.0 midl.
  62. //
  63. #if (!defined(MIDL_PASS) || defined(__midl)) && (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64))
  64. typedef unsigned __int64 DWORDLONG;
  65. #else
  66. typedef double DWORDLONG;
  67. #endif
  68. typedef DWORDLONG *PDWORDLONG;
  69. #endif /* NT_INCLUDED */
  70. //
  71. // Standardized Return Value data type
  72. //
  73. typedef DWORD        RETURN_TYPE;
  74. typedef RETURN_TYPE  CONFIGRET;
  75. //
  76. // Device Instance Handle data type
  77. //
  78. typedef DWORD       DEVNODE, DEVINST;
  79. typedef DEVNODE    *PDEVNODE, *PDEVINST;
  80. //
  81. // Device Instance Identifier data type
  82. // The device instance ID specifies the registry path, relative to the
  83. // Enum key , for a device instance.  For example:  Root*PNP0500000.
  84. //
  85. typedef CHAR          *DEVNODEID_A, *DEVINSTID_A; // Device ID ANSI name.
  86. typedef WCHAR         *DEVNODEID_W, *DEVINSTID_W; // Device ID Unicode name.
  87. #ifdef UNICODE
  88. typedef DEVNODEID_W DEVNODEID;
  89. typedef DEVINSTID_W DEVINSTID;
  90. #else
  91. typedef DEVNODEID_A DEVNODEID;
  92. typedef DEVINSTID_A DEVINSTID;
  93. #endif
  94. //
  95. // Logical Configuration Handle data type
  96. //
  97. typedef DWORD        LOG_CONF;
  98. typedef LOG_CONF    *PLOG_CONF;
  99. //
  100. // Resource Descriptor Handle data type
  101. //
  102. typedef DWORD        RES_DES;
  103. typedef RES_DES     *PRES_DES;
  104. //
  105. // Resource ID data type (may take any of the ResType_* values)
  106. //
  107. typedef ULONG        RESOURCEID;
  108. typedef RESOURCEID  *PRESOURCEID;
  109. //
  110. // Priority data type (may take any of the LCPRI_* values)
  111. //
  112. typedef ULONG        PRIORITY;
  113. typedef PRIORITY     *PPRIORITY;
  114. //
  115. // Range List Handle data type
  116. //
  117. typedef DWORD              RANGE_LIST;
  118. typedef RANGE_LIST        *PRANGE_LIST;
  119. //
  120. // Range Element Handle data type
  121. //
  122. typedef DWORD              RANGE_ELEMENT;
  123. typedef RANGE_ELEMENT     *PRANGE_ELEMENT;
  124. typedef  HANDLE             HMACHINE;
  125. typedef  HMACHINE          *PHMACHINE;
  126. typedef  ULONG             REGDISPOSITION;
  127. //
  128. // use 1 byte packing for the data structures
  129. //
  130. #include "pshpack1.h"
  131. //--------------------------------------------------------------
  132. // Memory resource
  133. //--------------------------------------------------------------
  134. //
  135. // Define the attribute flags for memory ranges.  Each bit flag is
  136. // identified by a constant bitmask.  Following the bitmask definition,
  137. // are the two possible values.
  138. //
  139. #define mMD_MemoryType              (0x1) // Bitmask, whether memory is writable
  140. #define fMD_MemoryType              mMD_MemoryType // compatibility
  141. #define fMD_ROM                     (0x0) // Memory range is read-only
  142. #define fMD_RAM                     (0x1) // Memory range may be written to
  143. #define mMD_32_24                   (0x2) // Bitmask, memory is 24 or 32-bit
  144. #define fMD_32_24                   mMD_32_24 // compatibility
  145. #define fMD_24                      (0x0) // Memory range is 24-bit
  146. #define fMD_32                      (0x2) // Memory range is 32-bit
  147. #define mMD_Prefetchable            (0x4) // Bitmask,whether memory prefetchable
  148. #define fMD_Prefetchable            mMD_Prefetchable // compatibility
  149. #define fMD_Pref                    mMD_Prefetchable // compatibility
  150. #define fMD_PrefetchDisallowed      (0x0) // Memory range is not prefetchable
  151. #define fMD_PrefetchAllowed         (0x4) // Memory range is prefetchable
  152. #define mMD_Readable                (0x8) // Bitmask,whether memory is readable
  153. #define fMD_Readable                mMD_Readable // compatibility
  154. #define fMD_ReadAllowed             (0x0) // Memory range is readable
  155. #define fMD_ReadDisallowed          (0x8) // Memory range is write-only
  156. #define mMD_CombinedWrite           (0x10) // Bitmask,supports write-behind
  157. #define fMD_CombinedWrite           mMD_CombinedWrite // compatibility
  158. #define fMD_CombinedWriteDisallowed (0x0)  // no combined-write caching
  159. #define fMD_CombinedWriteAllowed    (0x10) // supports combined-write caching
  160. #define mMD_Cacheable               (0x20) // Bitmask,whether memory is cacheable
  161. #define fMD_NonCacheable            (0x0)  // Memory range is non-cacheable
  162. #define fMD_Cacheable               (0x20) // Memory range is cacheable
  163. //
  164. // MEM_RANGE Structure
  165. //
  166. typedef struct Mem_Range_s {
  167.    DWORDLONG MR_Align;     // specifies mask for base alignment
  168.    ULONG     MR_nBytes;    // specifies number of bytes required
  169.    DWORDLONG MR_Min;       // specifies minimum address of the range
  170.    DWORDLONG MR_Max;       // specifies maximum address of the range
  171.    DWORD     MR_Flags;     // specifies flags describing range (fMD flags)
  172.    DWORD     MR_Reserved;
  173. } MEM_RANGE, *PMEM_RANGE;
  174. //
  175. // MEM_DES structure
  176. //
  177. typedef struct Mem_Des_s {
  178.    DWORD     MD_Count;        // number of MEM_RANGE structs in MEM_RESOURCE
  179.    DWORD     MD_Type;         // size (in bytes) of MEM_RANGE (MType_Range)
  180.    DWORDLONG MD_Alloc_Base;   // base memory address of range allocated
  181.    DWORDLONG MD_Alloc_End;    // end of allocated range
  182.    DWORD     MD_Flags;        // flags describing allocated range (fMD flags)
  183.    DWORD     MD_Reserved;
  184. } MEM_DES, *PMEM_DES;
  185. //
  186. // MEM_RESOURCE structure
  187. //
  188. typedef struct Mem_Resource_s {
  189.    MEM_DES   MEM_Header;               // info about memory range list
  190.    MEM_RANGE MEM_Data[ANYSIZE_ARRAY];  // list of memory ranges
  191. } MEM_RESOURCE, *PMEM_RESOURCE;
  192. //
  193. // Define the size of each range structure
  194. //
  195. #define MType_Range     sizeof(struct Mem_Range_s)
  196. //--------------------------------------------------------------
  197. // I/O Port Resource
  198. //--------------------------------------------------------------
  199. //
  200. // Define the attribute flags for port resources.  Each bit flag is
  201. // identified by a constant bitmask.  Following the bitmask definition,
  202. // are the two possible values.
  203. //
  204. #define fIOD_PortType   (0x1) // Bitmask,whether port is IO or memory
  205. #define fIOD_Memory     (0x0) // Port resource really uses memory
  206. #define fIOD_IO         (0x1) // Port resource uses IO ports
  207. #define IO_ALIAS_10_BIT_DECODE      (0x00000004)
  208. #define IO_ALIAS_12_BIT_DECODE      (0x00000010)
  209. #define IO_ALIAS_16_BIT_DECODE      (0x00000000)
  210. #define IO_ALIAS_POSITIVE_DECODE    (0x000000FF)
  211. //
  212. // IO_RANGE structure
  213. //
  214. typedef struct IO_Range_s {
  215.    DWORDLONG IOR_Align;      // mask for base alignment
  216.    DWORD     IOR_nPorts;     // number of ports
  217.    DWORDLONG IOR_Min;        // minimum port address
  218.    DWORDLONG IOR_Max;        // maximum port address
  219.    DWORD     IOR_RangeFlags; // flags for this port range
  220.    DWORDLONG IOR_Alias;      // multiplier that generates aliases for port(s)
  221. } IO_RANGE, *PIO_RANGE;
  222. //
  223. // IO_DES structure
  224. //
  225. typedef struct IO_Des_s {
  226.    DWORD     IOD_Count;          // number of IO_RANGE structs in IO_RESOURCE
  227.    DWORD     IOD_Type;           // size (in bytes) of IO_RANGE (IOType_Range)
  228.    DWORDLONG IOD_Alloc_Base;     // base of allocated port range
  229.    DWORDLONG IOD_Alloc_End;      // end of allocated port range
  230.    DWORD     IOD_DesFlags;       // flags relating to allocated port range
  231. } IO_DES, *PIO_DES;
  232. //
  233. // IO_RESOURCE
  234. //
  235. typedef struct IO_Resource_s {
  236.    IO_DES   IO_Header;                 // info about I/O port range list
  237.    IO_RANGE IO_Data[ANYSIZE_ARRAY];    // list of I/O port ranges
  238. } IO_RESOURCE, *PIO_RESOURCE;
  239. #define IOA_Local       0xff
  240. //
  241. // Define the size of each range structure
  242. //
  243. #define IOType_Range    sizeof(struct IO_Range_s)
  244. //--------------------------------------------------------------
  245. // DMA Resource
  246. //--------------------------------------------------------------
  247. //
  248. // Define the attribute flags for a DMA resource range.  Each bit flag is
  249. // identified with a constant bitmask.  Following the bitmask definition
  250. // are the possible values.
  251. //
  252. #define mDD_Width         (0x3)    // Bitmask, width of the DMA channel:
  253. #define fDD_BYTE          (0x0)    //   8-bit DMA channel
  254. #define fDD_WORD          (0x1)    //   16-bit DMA channel
  255. #define fDD_DWORD         (0x2)    //   32-bit DMA channel
  256. #define fDD_BYTE_AND_WORD (0x3)    //   8-bit and 16-bit DMA channel
  257. #define mDD_BusMaster     (0x4)    // Bitmask, whether bus mastering is supported
  258. #define fDD_NoBusMaster   (0x0)    //   no bus mastering
  259. #define fDD_BusMaster     (0x4)    //   bus mastering
  260. #define mDD_Type         (0x18)    // Bitmask, specifies type of DMA
  261. #define fDD_TypeStandard (0x00)    //   standard DMA
  262. #define fDD_TypeA        (0x08)    //   Type-A DMA
  263. #define fDD_TypeB        (0x10)    //   Type-B DMA
  264. #define fDD_TypeF        (0x18)    //   Type-F DMA
  265. //
  266. // DMA_RANGE structure
  267. //
  268. typedef struct DMA_Range_s {
  269.    ULONG DR_Min;     // minimum DMA port in the range
  270.    ULONG DR_Max;     // maximum DMA port in the range
  271.    ULONG DR_Flags;   // flags describing the range (fDD flags)
  272. } DMA_RANGE, *PDMA_RANGE;
  273. //
  274. // DMA_DES structure
  275. //
  276. typedef struct DMA_Des_s {
  277.    DWORD  DD_Count;       // number of DMA_RANGE structs in DMA_RESOURCE
  278.    DWORD  DD_Type;        // size (in bytes) of DMA_RANGE struct (DType_Range)
  279.    DWORD  DD_Flags;       // Flags describing DMA channel (fDD flags)
  280.    ULONG  DD_Alloc_Chan;  // Specifies the DMA channel that was allocated
  281. } DMA_DES, *PDMA_DES;
  282. //
  283. // DMA_RESOURCE
  284. //
  285. typedef struct DMA_Resource_s {
  286.    DMA_DES   DMA_Header;               // info about DMA channel range list
  287.    DMA_RANGE DMA_Data[ANYSIZE_ARRAY];  // list of DMA ranges
  288. } DMA_RESOURCE, *PDMA_RESOURCE;
  289. //
  290. // Define the size of each range structure
  291. //
  292. #define DType_Range     sizeof(struct DMA_Range_s)
  293. //--------------------------------------------------------------
  294. // Interrupt Resource
  295. //--------------------------------------------------------------
  296. //
  297. // Define the attribute flags for an interrupt resource range.  Each bit flag
  298. // is identified with a constant bitmask.  Following the bitmask definition
  299. // are the possible values.
  300. //
  301. #define mIRQD_Share        (0x1) // Bitmask,whether the IRQ may be shared:
  302. #define fIRQD_Exclusive    (0x0) //   The IRQ may not be shared
  303. #define fIRQD_Share        (0x1) //   The IRQ may be shared
  304. #define fIRQD_Share_Bit    0     // compatibility
  305. #define fIRQD_Level_Bit    1     // compatibility
  306. //
  307. // ** NOTE: 16-bit ConfigMgr uses fIRQD_Level_Bit being set to indicate that the
  308. // ** interrupt is _level-sensitive_.  For 32-bit ConfigMgr, if this bit is set,
  309. // ** then the interrupt is _edge-sensitive_.
  310. //
  311. #define mIRQD_Edge_Level   (0x2) // Bitmask,whether edge or level triggered:
  312. #define fIRQD_Level        (0x0) //   The IRQ is level-sensitive
  313. #define fIRQD_Edge         (0x2) //   The IRQ is edge-sensitive
  314. //
  315. // IRQ_RANGE
  316. //
  317. typedef struct IRQ_Range_s {
  318.    ULONG IRQR_Min;      // minimum IRQ in the range
  319.    ULONG IRQR_Max;      // maximum IRQ in the range
  320.    ULONG IRQR_Flags;    // flags describing the range (fIRQD flags)
  321. } IRQ_RANGE, *PIRQ_RANGE;
  322. //
  323. // IRQ_DES structure
  324. //
  325. typedef struct IRQ_Des_s {
  326.    DWORD IRQD_Count;       // number of IRQ_RANGE structs in IRQ_RESOURCE
  327.    DWORD IRQD_Type;        // size (in bytes) of IRQ_RANGE (IRQType_Range)
  328.    DWORD IRQD_Flags;       // flags describing the IRQ (fIRQD flags)
  329.    ULONG IRQD_Alloc_Num;   // specifies the IRQ that was allocated
  330.    ULONG IRQD_Affinity;
  331. } IRQ_DES, *PIRQ_DES;
  332. //
  333. // IRQ_RESOURCE structure
  334. //
  335. typedef struct IRQ_Resource_s {
  336.    IRQ_DES   IRQ_Header;               // info about IRQ range list
  337.    IRQ_RANGE IRQ_Data[ANYSIZE_ARRAY];  // list of IRQ ranges
  338. } IRQ_RESOURCE, *PIRQ_RESOURCE;
  339. //
  340. // Define the size of each range structure
  341. //
  342. #define IRQType_Range   sizeof(struct IRQ_Range_s)
  343. //--------------------------------------------------------------
  344. // Device Private Resource
  345. //--------------------------------------------------------------
  346. //
  347. // DEVICEPRIVATE_RANGE structure
  348. //
  349. typedef struct DevPrivate_Range_s {
  350.    DWORD    PR_Data1;     // mask for base alignment
  351.    DWORD    PR_Data2;     // number of bytes
  352.    DWORD    PR_Data3;     // minimum address
  353. } DEVPRIVATE_RANGE, *PDEVPRIVATE_RANGE;
  354. //
  355. // DEVPRIVATE_DES structure
  356. //
  357. typedef struct DevPrivate_Des_s {
  358.    DWORD     PD_Count;
  359.    DWORD     PD_Type;
  360.    DWORD     PD_Data1;
  361.    DWORD     PD_Data2;
  362.    DWORD     PD_Data3;
  363.    DWORD     PD_Flags;
  364. } DEVPRIVATE_DES, *PDEVPRIVATE_DES;
  365. //
  366. // DEVPRIVATE_RESOURCE
  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 the size of each range structure
  374. //
  375. #define PType_Range    sizeof(struct DevPrivate_Range_s)
  376. //--------------------------------------------------------------
  377. // Class-Specific Resource
  378. //--------------------------------------------------------------
  379. typedef struct CS_Des_s {
  380.    DWORD    CSD_SignatureLength;
  381.    DWORD    CSD_LegacyDataOffset;
  382.    DWORD    CSD_LegacyDataSize;
  383.    DWORD    CSD_Flags;
  384.    GUID     CSD_ClassGuid;
  385.    BYTE     CSD_Signature[ANYSIZE_ARRAY];
  386. } CS_DES, *PCS_DES;
  387. typedef struct CS_Resource_s {
  388.    CS_DES   CS_Header;
  389. } CS_RESOURCE, *PCS_RESOURCE;
  390. //--------------------------------------------------------------
  391. // PC Card Configuration Resource
  392. //--------------------------------------------------------------
  393. //
  394. // Define the attribute flags for a PC Card configuration resource descriptor.
  395. // Each bit flag is identified with a constant bitmask.  Following the bitmask
  396. // definition are the possible values.
  397. //
  398. #define mPCD_8_16       (0x1)   // Bitmask, whether I/O is 8 or 16 bits
  399. #define fPCD_8          (0x0)   // I/O is 8-bit
  400. #define fPCD_16         (0x1)   // I/O is 16-bit
  401. typedef struct PcCard_Des_s {
  402.     DWORD    PCD_Flags;
  403.     BYTE     PCD_ConfigIndex;
  404.     BYTE     PCD_Reserved[3];
  405.     DWORD    PCD_MemoryCardBase1;
  406.     DWORD    PCD_MemoryCardBase2;
  407. } PCCARD_DES, *PPCCARD_DES;
  408. typedef struct PcCard_Resource_s {
  409.    PCCARD_DES   PcCard_Header;
  410. } PCCARD_RESOURCE, *PPCCARD_RESOURCE;
  411. //--------------------------------------------------------------
  412. // Bus Number Resource
  413. //--------------------------------------------------------------
  414. //
  415. // Define the attribute flags for a Bus Number resource descriptor.
  416. // Each bit flag is identified with a constant bitmask.  Following the bitmask
  417. // definition are the possible values.
  418. //
  419. // Currently unused.
  420. //
  421. //
  422. // BUSNUMBER_RANGE
  423. //
  424. typedef struct BusNumber_Range_s {
  425.    ULONG BUSR_Min;          // minimum Bus Number in the range
  426.    ULONG BUSR_Max;          // maximum Bus Number in the range
  427.    ULONG BUSR_nBusNumbers;  // specifies number of buses required
  428.    ULONG BUSR_Flags;        // flags describing the range (currently unused)
  429. } BUSNUMBER_RANGE, *PBUSNUMBER_RANGE;
  430. //
  431. // BUSNUMBER_DES structure
  432. //
  433. typedef struct BusNumber_Des_s {
  434.    DWORD BUSD_Count;       // number of BUSNUMBER_RANGE structs in BUSNUMBER_RESOURCE
  435.    DWORD BUSD_Type;        // size (in bytes) of BUSNUMBER_RANGE (BusNumberType_Range)
  436.    DWORD BUSD_Flags;       // flags describing the range (currently unused)
  437.    ULONG BUSD_Alloc_Base;  // specifies the first Bus that was allocated
  438.    ULONG BUSD_Alloc_End;   // specifies the last Bus number that was allocated
  439. } BUSNUMBER_DES, *PBUSNUMBER_DES;
  440. //
  441. // BUSNUMBER_RESOURCE structure
  442. //
  443. typedef struct BusNumber_Resource_s {
  444.    BUSNUMBER_DES   BusNumber_Header;               // info about Bus Number range list
  445.    BUSNUMBER_RANGE BusNumber_Data[ANYSIZE_ARRAY];  // list of Bus Number ranges
  446. } BUSNUMBER_RESOURCE, *PBUSNUMBER_RESOURCE;
  447. //
  448. // Define the size of each range structure
  449. //
  450. #define BusNumberType_Range   sizeof(struct BusNumber_Range_s)
  451. //--------------------------------------------------------------
  452. // Hardware Profile Information
  453. //--------------------------------------------------------------
  454. //
  455. // Define flags relating to hardware profiles
  456. //
  457. #define CM_HWPI_NOT_DOCKABLE  (0x00000000)   // machine is not dockable
  458. #define CM_HWPI_UNDOCKED      (0x00000001)   // hw profile for docked config
  459. #define CM_HWPI_DOCKED        (0x00000002)   // hw profile for undocked config
  460. //
  461. // HWPROFILEINFO structure
  462. //
  463. typedef struct HWProfileInfo_sA {
  464.    ULONG  HWPI_ulHWProfile;                      // handle of hw profile
  465.    CHAR   HWPI_szFriendlyName[MAX_PROFILE_LEN];  // friendly name of hw profile
  466.    DWORD  HWPI_dwFlags;                          // profile flags (CM_HWPI_*)
  467. } HWPROFILEINFO_A, *PHWPROFILEINFO_A;
  468. typedef struct HWProfileInfo_sW {
  469.    ULONG  HWPI_ulHWProfile;                      // handle of hw profile
  470.    WCHAR  HWPI_szFriendlyName[MAX_PROFILE_LEN];  // friendly name of hw profile
  471.    DWORD  HWPI_dwFlags;                          // profile flags (CM_HWPI_*)
  472. } HWPROFILEINFO_W, *PHWPROFILEINFO_W;
  473. #ifdef UNICODE
  474. typedef HWPROFILEINFO_W   HWPROFILEINFO;
  475. typedef PHWPROFILEINFO_W  PHWPROFILEINFO;
  476. #else
  477. typedef HWPROFILEINFO_A   HWPROFILEINFO;
  478. typedef PHWPROFILEINFO_A  PHWPROFILEINFO;
  479. #endif
  480. //
  481. // revert back to normal default packing
  482. //
  483. #include "poppack.h"
  484. //--------------------------------------------------------------
  485. // Miscellaneous
  486. //--------------------------------------------------------------
  487. //
  488. // Resource types
  489. //
  490. #define ResType_All           (0x00000000)   // Return all resource types
  491. #define ResType_None          (0x00000000)   // Arbitration always succeeded
  492. #define ResType_Mem           (0x00000001)   // Physical address resource
  493. #define ResType_IO            (0x00000002)   // Physical I/O address resource
  494. #define ResType_DMA           (0x00000003)   // DMA channels resource
  495. #define ResType_IRQ           (0x00000004)   // IRQ resource
  496. #define ResType_DoNotUse      (0x00000005)   // Used as spacer to sync subsequent ResTypes w/NT
  497. #define ResType_BusNumber     (0x00000006)   // bus number resource
  498. #define ResType_MAX           (0x00000006)   // Maximum known (arbitrated) ResType
  499. #define ResType_Ignored_Bit   (0x00008000)   // Ignore this resource
  500. #define ResType_ClassSpecific (0x0000FFFF)   // class-specific resource
  501. #define ResType_Reserved      (0x00008000)   // reserved for internal use
  502. #define ResType_DevicePrivate (0x00008001)   // device private data
  503. #define ResType_PcCardConfig  (0x00008002)   // PC Card configuration data
  504. //
  505. // Flags specifying options for ranges that conflict with ranges already in
  506. // the range list (CM_Add_Range)
  507. //
  508. #define CM_ADD_RANGE_ADDIFCONFLICT        (0x00000000) // merg with conflicting range
  509. #define CM_ADD_RANGE_DONOTADDIFCONFLICT   (0x00000001) // error if range conflicts
  510. #define CM_ADD_RANGE_BITS                 (0x00000001)
  511. //
  512. // Logical Config Flags (specified in call to CM_Get_First_Log_Conf
  513. //
  514. #define BASIC_LOG_CONF    0x00000000  // Specifies the req list.
  515. #define FILTERED_LOG_CONF 0x00000001  // Specifies the filtered req list.
  516. #define ALLOC_LOG_CONF    0x00000002  // Specifies the Alloc Element.
  517. #define BOOT_LOG_CONF     0x00000003  // Specifies the RM Alloc Element.
  518. #define FORCED_LOG_CONF   0x00000004  // Specifies the Forced Log Conf
  519. #define OVERRIDE_LOG_CONF 0x00000005  // Specifies the Override req list.
  520. #define NUM_LOG_CONF      0x00000006  // Number of Log Conf type
  521. #define LOG_CONF_BITS     0x00000007  // The bits of the log conf type.
  522. #define PRIORITY_EQUAL_FIRST  (0x00000008) // Same priority, new one first
  523. #define PRIORITY_EQUAL_LAST   (0x00000000) // Same priority, new one last
  524. #define PRIORITY_BIT          (0x00000008)
  525. //
  526. // Registry disposition values
  527. // (specified in call to CM_Open_DevNode_Key and CM_Open_Class_Key)
  528. //
  529. #define RegDisposition_OpenAlways   (0x00000000)   // open if exists else create
  530. #define RegDisposition_OpenExisting (0x00000001)   // open key only if exists
  531. #define RegDisposition_Bits         (0x00000001)
  532. //
  533. // ulFlags values for CM API routines
  534. //
  535. //
  536. // Flags for CM_Add_ID
  537. //
  538. #define CM_ADD_ID_HARDWARE                (0x00000000)
  539. #define CM_ADD_ID_COMPATIBLE              (0x00000001)
  540. #define CM_ADD_ID_BITS                    (0x00000001)
  541. //
  542. // Device Node creation flags
  543. //
  544. #define CM_CREATE_DEVNODE_NORMAL          (0x00000000)   // install later
  545. #define CM_CREATE_DEVNODE_NO_WAIT_INSTALL (0x00000001)   // NOT SUPPORTED ON NT
  546. #define CM_CREATE_DEVNODE_PHANTOM         (0x00000002)
  547. #define CM_CREATE_DEVNODE_GENERATE_ID     (0x00000004)
  548. #define CM_CREATE_DEVNODE_DO_NOT_INSTALL  (0x00000008)
  549. #define CM_CREATE_DEVNODE_BITS            (0x0000000F)
  550. #define CM_CREATE_DEVINST_NORMAL          CM_CREATE_DEVNODE_NORMAL
  551. #define CM_CREATE_DEVINST_NO_WAIT_INSTALL CM_CREATE_DEVNODE_NO_WAIT_INSTALL
  552. #define CM_CREATE_DEVINST_PHANTOM         CM_CREATE_DEVNODE_PHANTOM
  553. #define CM_CREATE_DEVINST_GENERATE_ID     CM_CREATE_DEVNODE_GENERATE_ID
  554. #define CM_CREATE_DEVINST_DO_NOT_INSTALL  CM_CREATE_DEVNODE_DO_NOT_INSTALL
  555. #define CM_CREATE_DEVINST_BITS            CM_CREATE_DEVNODE_BITS
  556. //
  557. // Flags for CM_Delete_Class_Key
  558. //
  559. #define CM_DELETE_CLASS_ONLY        (0x00000000)
  560. #define CM_DELETE_CLASS_SUBKEYS     (0x00000001)
  561. #define CM_DELETE_CLASS_BITS        (0x00000001)
  562. //
  563. // Detection reason flags (specified in call to CM_Run_Detection)
  564. //
  565. #define CM_DETECT_NEW_PROFILE       (0x00000001) // detection for new hw profile
  566. #define CM_DETECT_CRASHED           (0x00000002) // Previous detection crashed
  567. #define CM_DETECT_HWPROF_FIRST_BOOT (0x00000004)
  568. #define CM_DETECT_RUN               (0x80000000)
  569. #define CM_DETECT_BITS              (0x80000007)
  570. #define CM_DISABLE_POLITE           (0x00000000)    // Ask the driver
  571. #define CM_DISABLE_ABSOLUTE         (0x00000001)    // Don't ask the driver
  572. #define CM_DISABLE_HARDWARE         (0x00000002)    // Don't ask the driver, and won't be restarteable
  573. #define CM_DISABLE_BITS             (0x00000003)    // The bits for the disable function
  574. //
  575. // Flags for CM_Get_Device_ID_List, CM_Get_Device_ID_List_Size
  576. //
  577. #define CM_GETIDLIST_FILTER_NONE                (0x00000000)
  578. #define CM_GETIDLIST_FILTER_ENUMERATOR          (0x00000001)
  579. #define CM_GETIDLIST_FILTER_SERVICE             (0x00000002)
  580. #define CM_GETIDLIST_FILTER_EJECTRELATIONS      (0x00000004)
  581. #define CM_GETIDLIST_FILTER_REMOVALRELATIONS    (0x00000008)
  582. #define CM_GETIDLIST_FILTER_POWERRELATIONS      (0x00000010)
  583. #define CM_GETIDLIST_FILTER_BUSRELATIONS        (0x00000020)
  584. #define CM_GETIDLIST_DONOTGENERATE              (0x10000040)
  585. #define CM_GETIDLIST_FILTER_BITS                (0x1000007F)
  586. //
  587. // Flags for CM_Get_Device_Interface_List, CM_Get_Device_Interface_List_Size
  588. //
  589. #define CM_GET_DEVICE_INTERFACE_LIST_PRESENT     (0x00000000)  // only currently 'live' device interfaces
  590. #define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES (0x00000001)  // all registered device interfaces, live or not
  591. #define CM_GET_DEVICE_INTERFACE_LIST_BITS        (0x00000001)
  592. //
  593. // Registry properties (specified in call to CM_Get_DevInst_Registry_Property,
  594. // some are allowed in calls to CM_Set_DevInst_Registry_Property)
  595. //
  596. #define CM_DRP_DEVICEDESC                  (0x00000001) // DeviceDesc REG_SZ property (RW)
  597. #define CM_DRP_HARDWAREID                  (0x00000002) // HardwareID REG_MULTI_SZ property (RW)
  598. #define CM_DRP_COMPATIBLEIDS               (0x00000003) // CompatibleIDs REG_MULTI_SZ property (RW)
  599. #define CM_DRP_NTDEVICEPATHS               (0x00000004) // Unsupported, DO NOT USE
  600. #define CM_DRP_SERVICE                     (0x00000005) // Service REG_SZ property (RW)
  601. #define CM_DRP_CONFIGURATION               (0x00000006) // Configuration REG_RESOURCE_LIST property (R)
  602. #define CM_DRP_CONFIGURATIONVECTOR         (0x00000007) // ConfigurationVector REG_RESOURCE_REQUIREMENTS_LIST property (R)
  603. #define CM_DRP_CLASS                       (0x00000008) // Class REG_SZ property (RW)
  604. #define CM_DRP_CLASSGUID                   (0x00000009) // ClassGUID REG_SZ property (RW)
  605. #define CM_DRP_DRIVER                      (0x0000000A) // Driver REG_SZ property (RW)
  606. #define CM_DRP_CONFIGFLAGS                 (0x0000000B) // ConfigFlags REG_DWORD property (RW)
  607. #define CM_DRP_MFG                         (0x0000000C) // Mfg REG_SZ property (RW)
  608. #define CM_DRP_FRIENDLYNAME                (0x0000000D) // FriendlyName REG_SZ property (RW)
  609. #define CM_DRP_LOCATION_INFORMATION        (0x0000000E) // LocationInformation REG_SZ property (RW)
  610. #define CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME (0x0000000F) // PhysicalDeviceObjectName REG_SZ property (R)
  611. #define CM_DRP_CAPABILITIES                (0x00000010) // Capabilities REG_DWORD property (R)
  612. #define CM_DRP_UI_NUMBER                   (0x00000011) // UiNumber REG_DWORD property (R)
  613. #define CM_DRP_UPPERFILTERS                (0x00000012) // UpperFilters REG_MULTI_SZ property (RW)
  614. #define CM_DRP_LOWERFILTERS                (0x00000013) // LowerFilters REG_MULTI_SZ property (RW)
  615. #define CM_DRP_BUSTYPEGUID                 (0x00000014) // Bus Type Guid, GUID, (R)
  616. #define CM_DRP_LEGACYBUSTYPE               (0x00000015) // Legacy bus type, INTERFACE_TYPE, (R)
  617. #define CM_DRP_BUSNUMBER                   (0x00000016) // Bus Number, DWORD, (R)
  618. #define CM_DRP_ENUMERATOR_NAME             (0x00000017) // Enumerator REG_SZ property, (R)
  619. #define CM_DRP_MIN                         (0x00000001)
  620. #define CM_DRP_MAX                         (0x00000017)
  621. //
  622. // Capabilities bits (the capability value is returned from calling
  623. // CM_Get_DevInst_Registry_Property with CM_DRP_CAPABILITIES flag)
  624. //
  625. #define CM_DEVCAP_LOCKSUPPORTED     (0x00000001)
  626. #define CM_DEVCAP_EJECTSUPPORTED    (0x00000002)
  627. #define CM_DEVCAP_REMOVABLE         (0x00000004)
  628. #define CM_DEVCAP_DOCKDEVICE        (0x00000008)
  629. #define CM_DEVCAP_UNIQUEID          (0x00000010)
  630. #define CM_DEVCAP_SILENTINSTALL     (0x00000020)
  631. #define CM_DEVCAP_RAWDEVICEOK       (0x00000040)
  632. #define CM_DEVCAP_SURPRISEREMOVALOK (0x00000080)
  633. //
  634. // Flags for CM_Locate_DevNode
  635. //
  636. #define CM_LOCATE_DEVNODE_NORMAL       0x00000000
  637. #define CM_LOCATE_DEVNODE_PHANTOM      0x00000001
  638. #define CM_LOCATE_DEVNODE_CANCELREMOVE 0x00000002
  639. #define CM_LOCATE_DEVNODE_NOVALIDATION 0x00000004
  640. #define CM_LOCATE_DEVNODE_BITS         0x00000007
  641. #define CM_LOCATE_DEVINST_NORMAL       CM_LOCATE_DEVNODE_NORMAL
  642. #define CM_LOCATE_DEVINST_PHANTOM      CM_LOCATE_DEVNODE_PHANTOM
  643. #define CM_LOCATE_DEVINST_CANCELREMOVE CM_LOCATE_DEVNODE_CANCELREMOVE
  644. #define CM_LOCATE_DEVINST_NOVALIDATION CM_LOCATE_DEVNODE_NOVALIDATION
  645. #define CM_LOCATE_DEVINST_BITS         CM_LOCATE_DEVNODE_BITS
  646. //
  647. // Flags for CM_Open_Class_Key
  648. //
  649. #define CM_OPEN_CLASS_KEY_INSTALLER        (0x00000000)
  650. #define CM_OPEN_CLASS_KEY_INTERFACE        (0x00000001)
  651. #define CM_OPEN_CLASS_KEY_BITS             (0x00000001)
  652. //
  653. // Remove subtree and Query remove subtree flags
  654. //
  655. #define CM_QUERY_REMOVE_UI_OK       0x00000000
  656. #define CM_QUERY_REMOVE_UI_NOT_OK   0x00000001
  657. #define CM_QUERY_REMOVE_BITS        0x00000001
  658. #define CM_REMOVE_UI_OK             0x00000000
  659. #define CM_REMOVE_UI_NOT_OK         0x00000001
  660. #define CM_REMOVE_BITS              0x00000001
  661. //
  662. // Flags for CM_Reenumerate_DevNode
  663. //
  664. #define CM_REENUMERATE_NORMAL       0x00000000
  665. #define CM_REENUMERATE_SYNCHRONOUS  0x00000001
  666. #define CM_REENUMERATE_BITS         0x00000001
  667. //
  668. // Flags for CM_Register_Device_Driver
  669. //
  670. #define CM_REGISTER_DEVICE_DRIVER_STATIC        (0x00000000)
  671. #define CM_REGISTER_DEVICE_DRIVER_DISABLEABLE   (0x00000001)
  672. #define CM_REGISTER_DEVICE_DRIVER_REMOVABLE     (0x00000002)
  673. #define CM_REGISTER_DEVICE_DRIVER_BITS          (0x00000003)
  674. //
  675. // Registry Branch Locations (for CM_Open_DevNode_Key)
  676. //
  677. #define CM_REGISTRY_HARDWARE        (0x00000000)
  678. #define CM_REGISTRY_SOFTWARE        (0x00000001)
  679. #define CM_REGISTRY_USER            (0x00000100)
  680. #define CM_REGISTRY_CONFIG          (0x00000200)
  681. #define CM_REGISTRY_BITS            (0x00000301)
  682. //
  683. // Flags for CM_Set_DevNode_Problem
  684. //
  685. #define CM_SET_DEVNODE_PROBLEM_NORMAL    (0x00000000)  // only set problem if currently no problem
  686. #define CM_SET_DEVNODE_PROBLEM_OVERRIDE  (0x00000001)  // override current problem with new problem
  687. #define CM_SET_DEVNODE_PROBLEM_BITS      (0x00000001)
  688. #define CM_SET_DEVINST_PROBLEM_NORMAL    CM_SET_DEVNODE_PROBLEM_NORMAL
  689. #define CM_SET_DEVINST_PROBLEM_OVERRIDE  CM_SET_DEVNODE_PROBLEM_OVERRIDE
  690. #define CM_SET_DEVINST_PROBLEM_BITS      CM_SET_DEVNODE_PROBLEM_BITS
  691. //
  692. // Re-enable and configuration actions (specified in call to CM_Setup_DevInst)
  693. //
  694. #define CM_SETUP_DEVNODE_READY   (0x00000000) // Reenable problem devinst
  695. #define CM_SETUP_DEVINST_READY   CM_SETUP_DEVNODE_READY
  696. #define CM_SETUP_DOWNLOAD        (0x00000001) // Get info about devinst
  697. #define CM_SETUP_WRITE_LOG_CONFS (0x00000002)
  698. #define CM_SETUP_PROP_CHANGE     (0x00000003)
  699. #define CM_SETUP_BITS            (0x00000003)
  700. //
  701. // Flags for CM_Query_Arbitrator_Free_Data and
  702. // CM_Query_Arbitrator_Free_Data_Size.
  703. //
  704. #define CM_QUERY_ARBITRATOR_RAW         (0x00000000)
  705. #define CM_QUERY_ARBITRATOR_TRANSLATED  (0x00000001)
  706. #define CM_QUERY_ARBITRATOR_BITS        (0x00000001)
  707. //--------------------------------------------------------------
  708. // Function prototypes
  709. //--------------------------------------------------------------
  710. CMAPI
  711. CONFIGRET
  712. WINAPI
  713. CM_Add_Empty_Log_Conf(
  714.              OUT PLOG_CONF plcLogConf,
  715.              IN  DEVINST   dnDevInst,
  716.              IN  PRIORITY  Priority,
  717.              IN  ULONG     ulFlags
  718.              );
  719. CMAPI
  720. CONFIGRET
  721. WINAPI
  722. CM_Add_Empty_Log_Conf_Ex(
  723.              OUT PLOG_CONF plcLogConf,
  724.              IN  DEVINST   dnDevInst,
  725.              IN  PRIORITY  Priority,
  726.              IN  ULONG     ulFlags,
  727.              IN  HMACHINE  hMachine
  728.              );
  729. CMAPI
  730. CONFIGRET
  731. WINAPI
  732. CM_Add_IDA(
  733.              IN DEVINST dnDevInst,
  734.              IN PSTR    pszID,
  735.              IN ULONG   ulFlags
  736.              );
  737. CMAPI
  738. CONFIGRET
  739. WINAPI
  740. CM_Add_IDW(
  741.              IN DEVINST dnDevInst,
  742.              IN PWSTR   pszID,
  743.              IN ULONG   ulFlags
  744.              );
  745. CMAPI
  746. CONFIGRET
  747. WINAPI
  748. CM_Add_ID_ExA(
  749.              IN DEVINST  dnDevInst,
  750.              IN PSTR     pszID,
  751.              IN ULONG    ulFlags,
  752.              IN HMACHINE hMachine
  753.              );
  754. CMAPI
  755. CONFIGRET
  756. WINAPI
  757. CM_Add_ID_ExW(
  758.              IN DEVINST  dnDevInst,
  759.              IN PWSTR    pszID,
  760.              IN ULONG    ulFlags,
  761.              IN HMACHINE hMachine
  762.              );
  763. #ifdef UNICODE
  764. #define CM_Add_ID             CM_Add_IDW
  765. #define CM_Add_ID_Ex          CM_Add_ID_ExW
  766. #else
  767. #define CM_Add_ID             CM_Add_IDA
  768. #define CM_Add_ID_Ex          CM_Add_ID_ExA
  769. #endif // UNICODE
  770. CMAPI
  771. CONFIGRET
  772. WINAPI
  773. CM_Add_Range(
  774.              IN DWORDLONG  ullStartValue,
  775.              IN DWORDLONG  ullEndValue,
  776.              IN RANGE_LIST rlh,
  777.              IN ULONG      ulFlags
  778.              );
  779. CMAPI
  780. CONFIGRET
  781. WINAPI
  782. CM_Add_Res_Des(
  783.              OUT PRES_DES  prdResDes,
  784.              IN LOG_CONF   lcLogConf,
  785.              IN RESOURCEID ResourceID,
  786.              IN PCVOID     ResourceData,
  787.              IN ULONG      ResourceLen,
  788.              IN ULONG      ulFlags
  789.              );
  790. CMAPI
  791. CONFIGRET
  792. WINAPI
  793. CM_Add_Res_Des_Ex(
  794.              OUT PRES_DES  prdResDes,
  795.              IN LOG_CONF   lcLogConf,
  796.              IN RESOURCEID ResourceID,
  797.              IN PCVOID     ResourceData,
  798.              IN ULONG      ResourceLen,
  799.              IN ULONG      ulFlags,
  800.              IN HMACHINE   hMachine
  801.              );
  802. CMAPI
  803. CONFIGRET
  804. WINAPI
  805. CM_Connect_MachineA(
  806.              IN  PCSTR     UNCServerName,
  807.              OUT PHMACHINE phMachine
  808.              );
  809. CMAPI
  810. CONFIGRET
  811. WINAPI
  812. CM_Connect_MachineW(
  813.              IN  PCWSTR    UNCServerName,
  814.              OUT PHMACHINE phMachine
  815.              );
  816. #ifdef UNICODE
  817. #define CM_Connect_Machine       CM_Connect_MachineW
  818. #else
  819. #define CM_Connect_Machine       CM_Connect_MachineA
  820. #endif // UNICODE
  821. CMAPI
  822. CONFIGRET
  823. WINAPI
  824. CM_Create_DevNodeA(
  825.              OUT PDEVINST    pdnDevInst,
  826.              IN  DEVINSTID_A pDeviceID,
  827.              IN  DEVINST     dnParent,
  828.              IN  ULONG       ulFlags
  829.              );
  830. CMAPI
  831. CONFIGRET
  832. WINAPI
  833. CM_Create_DevNodeW(
  834.              OUT PDEVINST    pdnDevInst,
  835.              IN  DEVINSTID_W pDeviceID,
  836.              IN  DEVINST     dnParent,
  837.              IN  ULONG       ulFlags
  838.              );
  839. CMAPI
  840. CONFIGRET
  841. WINAPI
  842. CM_Create_DevNode_ExA(
  843.              OUT PDEVINST    pdnDevInst,
  844.              IN  DEVINSTID_A pDeviceID,
  845.              IN  DEVINST     dnParent,
  846.              IN  ULONG       ulFlags,
  847.              IN  HANDLE      hMachine
  848.              );
  849. CMAPI
  850. CONFIGRET
  851. WINAPI
  852. CM_Create_DevNode_ExW(
  853.              OUT PDEVINST    pdnDevInst,
  854.              IN  DEVINSTID_W pDeviceID,
  855.              IN  DEVINST     dnParent,
  856.              IN  ULONG       ulFlags,
  857.              IN  HANDLE      hMachine
  858.              );
  859. #define CM_Create_DevInstW       CM_Create_DevNodeW
  860. #define CM_Create_DevInstA       CM_Create_DevNodeA
  861. #define CM_Create_DevInst_ExW    CM_Create_DevNode_ExW
  862. #define CM_Create_DevInst_ExA    CM_Create_DevNode_ExA
  863. #ifdef UNICODE
  864. #define CM_Create_DevNode        CM_Create_DevNodeW
  865. #define CM_Create_DevInst        CM_Create_DevNodeW
  866. #define CM_Create_DevNode_Ex     CM_Create_DevNode_ExW
  867. #define CM_Create_DevInst_Ex     CM_Create_DevInst_ExW
  868. #else
  869. #define CM_Create_DevNode        CM_Create_DevNodeA
  870. #define CM_Create_DevInst        CM_Create_DevNodeA
  871. #define CM_Create_DevNode_Ex     CM_Create_DevNode_ExA
  872. #define CM_Create_DevInst_Ex     CM_Create_DevNode_ExA
  873. #endif // UNICODE
  874. CMAPI
  875. CONFIGRET
  876. WINAPI
  877. CM_Create_Range_List(
  878.              OUT PRANGE_LIST prlh,
  879.              IN  ULONG       ulFlags
  880.              );
  881. CMAPI
  882. CONFIGRET
  883. WINAPI
  884. CM_Delete_Class_Key(
  885.              IN  LPGUID     ClassGuid,
  886.              IN  ULONG      ulFlags
  887.              );
  888. CMAPI
  889. CONFIGRET
  890. WINAPI
  891. CM_Delete_Class_Key_Ex(
  892.              IN  LPGUID     ClassGuid,
  893.              IN  ULONG      ulFlags,
  894.              IN  HANDLE     hMachine
  895.              );
  896. CMAPI
  897. CONFIGRET
  898. WINAPI
  899. CM_Delete_DevNode_Key(
  900.              IN DEVNODE dnDevNode,
  901.              IN ULONG   ulHardwareProfile,
  902.              IN ULONG   ulFlags
  903.              );
  904. CMAPI
  905. CONFIGRET
  906. WINAPI
  907. CM_Delete_DevNode_Key_Ex(
  908.              IN DEVNODE dnDevNode,
  909.              IN ULONG   ulHardwareProfile,
  910.              IN ULONG   ulFlags,
  911.              IN HANDLE  hMachine
  912.              );
  913. #define CM_Delete_DevInst_Key       CM_Delete_DevNode_Key
  914. #define CM_Delete_DevInst_Key_Ex    CM_Delete_DevNode_Key_Ex
  915. CMAPI
  916. CONFIGRET
  917. WINAPI
  918. CM_Delete_Range(
  919.              IN DWORDLONG  ullStartValue,
  920.              IN DWORDLONG  ullEndValue,
  921.              IN RANGE_LIST rlh,
  922.              IN ULONG      ulFlags
  923.              );
  924. CMAPI
  925. CONFIGRET
  926. WINAPI
  927. CM_Detect_Resource_Conflict(
  928.              IN  DEVINST    dnDevInst,
  929.              IN  RESOURCEID ResourceID,
  930.              IN  PCVOID     ResourceData,
  931.              IN  ULONG      ResourceLen,
  932.              OUT PBOOL      pbConflictDetected,
  933.              IN  ULONG      ulFlags
  934.              );
  935. CMAPI
  936. CONFIGRET
  937. WINAPI
  938. CM_Detect_Resource_Conflict_Ex(
  939.              IN  DEVINST    dnDevInst,
  940.              IN  RESOURCEID ResourceID,
  941.              IN  PCVOID     ResourceData,
  942.              IN  ULONG      ResourceLen,
  943.              OUT PBOOL      pbConflictDetected,
  944.              IN  ULONG      ulFlags,
  945.              IN  HMACHINE   hMachine
  946.              );
  947. CMAPI
  948. CONFIGRET
  949. WINAPI
  950. CM_Disable_DevNode(
  951.              IN DEVINST  dnDevInst,
  952.              IN ULONG    ulFlags
  953.              );
  954. CMAPI
  955. CONFIGRET
  956. WINAPI
  957. CM_Disable_DevNode_Ex(
  958.              IN DEVINST  dnDevInst,
  959.              IN ULONG    ulFlags,
  960.              IN HMACHINE hMachine
  961.              );
  962. #define CM_Disable_DevInst       CM_Disable_DevNode
  963. #define CM_Disable_DevInst_Ex    CM_Disable_DevNode_Ex
  964. CMAPI
  965. CONFIGRET
  966. WINAPI
  967. CM_Disconnect_Machine(
  968.              IN HMACHINE   hMachine
  969.              );
  970. CMAPI
  971. CONFIGRET
  972. WINAPI
  973. CM_Dup_Range_List(
  974.              IN RANGE_LIST rlhOld,
  975.              IN RANGE_LIST rlhNew,
  976.              IN ULONG      ulFlags
  977.              );
  978. CMAPI
  979. CONFIGRET
  980. WINAPI
  981. CM_Enable_DevNode(
  982.              IN DEVINST  dnDevInst,
  983.              IN ULONG    ulFlags
  984.              );
  985. CMAPI
  986. CONFIGRET
  987. WINAPI
  988. CM_Enable_DevNode_Ex(
  989.              IN DEVINST  dnDevInst,
  990.              IN ULONG    ulFlags,
  991.              IN HMACHINE hMachine
  992.              );
  993. #define CM_Enable_DevInst        CM_Enable_DevNode
  994. #define CM_Enable_DevInst_Ex     CM_Enable_DevNode_Ex
  995. CMAPI
  996. CONFIGRET
  997. WINAPI
  998. CM_Enumerate_Classes(
  999.              IN  ULONG      ulClassIndex,
  1000.              OUT LPGUID     ClassGuid,
  1001.              IN  ULONG      ulFlags
  1002.              );
  1003. CMAPI
  1004. CONFIGRET
  1005. WINAPI
  1006. CM_Enumerate_Classes_Ex(
  1007.              IN  ULONG      ulClassIndex,
  1008.              OUT LPGUID     ClassGuid,
  1009.              IN  ULONG      ulFlags,
  1010.              IN  HMACHINE   hMachine
  1011.              );
  1012. CMAPI
  1013. CONFIGRET
  1014. WINAPI
  1015. CM_Enumerate_EnumeratorsA(
  1016.              IN ULONG      ulEnumIndex,
  1017.              OUT PCHAR     Buffer,
  1018.              IN OUT PULONG pulLength,
  1019.              IN ULONG      ulFlags
  1020.              );
  1021. CMAPI
  1022. CONFIGRET
  1023. WINAPI
  1024. CM_Enumerate_EnumeratorsW(
  1025.              IN ULONG      ulEnumIndex,
  1026.              OUT PWCHAR    Buffer,
  1027.              IN OUT PULONG pulLength,
  1028.              IN ULONG      ulFlags
  1029.              );
  1030. CMAPI
  1031. CONFIGRET
  1032. WINAPI
  1033. CM_Enumerate_Enumerators_ExA(
  1034.              IN ULONG      ulEnumIndex,
  1035.              OUT PCHAR     Buffer,
  1036.              IN OUT PULONG pulLength,
  1037.              IN ULONG      ulFlags,
  1038.              IN HMACHINE   hMachine
  1039.              );
  1040. CMAPI
  1041. CONFIGRET
  1042. WINAPI
  1043. CM_Enumerate_Enumerators_ExW(
  1044.              IN ULONG      ulEnumIndex,
  1045.              OUT PWCHAR    Buffer,
  1046.              IN OUT PULONG pulLength,
  1047.              IN ULONG      ulFlags,
  1048.              IN HMACHINE   hMachine
  1049.              );
  1050. #ifdef UNICODE
  1051. #define CM_Enumerate_Enumerators       CM_Enumerate_EnumeratorsW
  1052. #define CM_Enumerate_Enumerators_Ex    CM_Enumerate_Enumerators_ExW
  1053. #else
  1054. #define CM_Enumerate_Enumerators       CM_Enumerate_EnumeratorsA
  1055. #define CM_Enumerate_Enumerators_Ex    CM_Enumerate_Enumerators_ExA
  1056. #endif // UNICODE
  1057. CMAPI
  1058. CONFIGRET
  1059. WINAPI
  1060. CM_Find_Range(
  1061.              OUT PDWORDLONG pullStart,
  1062.              IN  DWORDLONG  ullStart,
  1063.              IN  ULONG      ulLength,
  1064.              IN  DWORDLONG  ullAlignment,
  1065.              IN  DWORDLONG  ullEnd,
  1066.              IN  RANGE_LIST rlh,
  1067.              IN  ULONG      ulFlags
  1068.              );
  1069. CMAPI
  1070. CONFIGRET
  1071. WINAPI
  1072. CM_First_Range(
  1073.              IN  RANGE_LIST     rlh,
  1074.              OUT PDWORDLONG     pullStart,
  1075.              OUT PDWORDLONG     pullEnd,
  1076.              OUT PRANGE_ELEMENT preElement,
  1077.              IN  ULONG          ulFlags
  1078.              );
  1079. CMAPI
  1080. CONFIGRET
  1081. WINAPI
  1082. CM_Free_Log_Conf(
  1083.              IN LOG_CONF lcLogConfToBeFreed,
  1084.              IN ULONG    ulFlags
  1085.              );
  1086. CMAPI
  1087. CONFIGRET
  1088. WINAPI
  1089. CM_Free_Log_Conf_Ex(
  1090.              IN LOG_CONF lcLogConfToBeFreed,
  1091.              IN ULONG    ulFlags,
  1092.              IN HMACHINE hMachine
  1093.              );
  1094. CMAPI
  1095. CONFIGRET
  1096. WINAPI
  1097. CM_Free_Log_Conf_Handle(
  1098.             IN  LOG_CONF  lcLogConf
  1099.             );
  1100. CMAPI
  1101. CONFIGRET
  1102. WINAPI
  1103. CM_Free_Range_List(
  1104.              IN RANGE_LIST rlh,
  1105.              IN ULONG      ulFlags
  1106.              );
  1107. CMAPI
  1108. CONFIGRET
  1109. WINAPI
  1110. CM_Free_Res_Des(
  1111.              IN PRES_DES prdResDes,
  1112.              IN RES_DES  rdResDes,
  1113.              IN ULONG    ulFlags
  1114.              );
  1115. CMAPI
  1116. CONFIGRET
  1117. WINAPI
  1118. CM_Free_Res_Des_Ex(
  1119.              IN PRES_DES prdResDes,
  1120.              IN RES_DES  rdResDes,
  1121.              IN ULONG    ulFlags,
  1122.              IN HMACHINE hMachine
  1123.              );
  1124. CMAPI
  1125. CONFIGRET
  1126. WINAPI
  1127. CM_Free_Res_Des_Handle(
  1128.             IN  RES_DES    rdResDes
  1129.             );
  1130. CMAPI
  1131. CONFIGRET
  1132. WINAPI
  1133. CM_Get_Child(
  1134.              OUT PDEVINST pdnDevInst,
  1135.              IN  DEVINST  dnDevInst,
  1136.              IN  ULONG    ulFlags
  1137.              );
  1138. CMAPI
  1139. CONFIGRET
  1140. WINAPI
  1141. CM_Get_Child_Ex(
  1142.              OUT PDEVINST pdnDevInst,
  1143.              IN  DEVINST  dnDevInst,
  1144.              IN  ULONG    ulFlags,
  1145.              IN  HMACHINE hMachine
  1146.              );
  1147. CMAPI
  1148. CONFIGRET
  1149. WINAPI
  1150. CM_Get_Class_NameA(
  1151.              IN  LPGUID     ClassGuid,
  1152.              OUT PCHAR      Buffer,
  1153.              IN OUT PULONG  pulLength,
  1154.              IN  ULONG      ulFlags
  1155.              );
  1156. CMAPI
  1157. CONFIGRET
  1158. WINAPI
  1159. CM_Get_Class_NameW(
  1160.              IN  LPGUID     ClassGuid,
  1161.              OUT PWCHAR     Buffer,
  1162.              IN OUT PULONG  pulLength,
  1163.              IN  ULONG      ulFlags
  1164.              );
  1165. CMAPI
  1166. CONFIGRET
  1167. WINAPI
  1168. CM_Get_Class_Name_ExA(
  1169.              IN  LPGUID     ClassGuid,
  1170.              OUT PCHAR      Buffer,
  1171.              IN OUT PULONG  pulLength,
  1172.              IN  ULONG      ulFlags,
  1173.              IN  HMACHINE   hMachine
  1174.              );
  1175. CMAPI
  1176. CONFIGRET
  1177. WINAPI
  1178. CM_Get_Class_Name_ExW(
  1179.              IN  LPGUID     ClassGuid,
  1180.              OUT PWCHAR     Buffer,
  1181.              IN OUT PULONG  pulLength,
  1182.              IN  ULONG      ulFlags,
  1183.              IN  HMACHINE   hMachine
  1184.              );
  1185. #ifdef UNICODE
  1186. #define CM_Get_Class_Name        CM_Get_Class_NameW
  1187. #define CM_Get_Class_Name_Ex     CM_Get_Class_Name_ExW
  1188. #else
  1189. #define CM_Get_Class_Name        CM_Get_Class_NameA
  1190. #define CM_Get_Class_Name_Ex     CM_Get_Class_Name_ExA
  1191. #endif // UNICODE
  1192. CMAPI
  1193. CONFIGRET
  1194. WINAPI
  1195. CM_Get_Class_Key_NameA(
  1196.              IN  LPGUID     ClassGuid,
  1197.              OUT LPSTR      pszKeyName,
  1198.              IN OUT PULONG  pulLength,
  1199.              IN  ULONG      ulFlags
  1200.              );
  1201. CMAPI
  1202. CONFIGRET
  1203. WINAPI
  1204. CM_Get_Class_Key_NameW(
  1205.              IN  LPGUID     ClassGuid,
  1206.              OUT LPWSTR     pszKeyName,
  1207.              IN OUT PULONG  pulLength,
  1208.              IN  ULONG      ulFlags
  1209.              );
  1210. CMAPI
  1211. CONFIGRET
  1212. WINAPI
  1213. CM_Get_Class_Key_Name_ExA(
  1214.              IN  LPGUID     ClassGuid,
  1215.              OUT LPSTR      pszKeyName,
  1216.              IN OUT PULONG  pulLength,
  1217.              IN  ULONG      ulFlags,
  1218.              IN  HMACHINE   hMachine
  1219.              );
  1220. CMAPI
  1221. CONFIGRET
  1222. WINAPI
  1223. CM_Get_Class_Key_Name_ExW(
  1224.              IN  LPGUID     ClassGuid,
  1225.              OUT LPWSTR     pszKeyName,
  1226.              IN OUT PULONG  pulLength,
  1227.              IN  ULONG      ulFlags,
  1228.              IN  HMACHINE   hMachine
  1229.              );
  1230. #ifdef UNICODE
  1231. #define CM_Get_Class_Key_Name        CM_Get_Class_Key_NameW
  1232. #define CM_Get_Class_Key_Name_Ex     CM_Get_Class_Key_Name_ExW
  1233. #else
  1234. #define CM_Get_Class_Key_Name        CM_Get_Class_Key_NameA
  1235. #define CM_Get_Class_Key_Name_Ex     CM_Get_Class_Key_Name_ExA
  1236. #endif // UNICODE
  1237. CMAPI
  1238. CONFIGRET
  1239. WINAPI
  1240. CM_Get_Depth(
  1241.              OUT PULONG  pulDepth,
  1242.              IN  DEVINST dnDevInst,
  1243.              IN  ULONG   ulFlags
  1244.              );
  1245. CMAPI
  1246. CONFIGRET
  1247. WINAPI
  1248. CM_Get_Depth_Ex(
  1249.              OUT PULONG   pulDepth,
  1250.              IN  DEVINST  dnDevInst,
  1251.              IN  ULONG    ulFlags,
  1252.              IN  HMACHINE hMachine
  1253.              );
  1254. CMAPI
  1255. CONFIGRET
  1256. WINAPI
  1257. CM_Get_Device_IDA(
  1258.              IN  DEVINST  dnDevInst,
  1259.              OUT PCHAR    Buffer,
  1260.              IN  ULONG    BufferLen,
  1261.              IN  ULONG    ulFlags
  1262.              );
  1263. CMAPI
  1264. CONFIGRET
  1265. WINAPI
  1266. CM_Get_Device_IDW(
  1267.              IN  DEVINST  dnDevInst,
  1268.              OUT PWCHAR   Buffer,
  1269.              IN  ULONG    BufferLen,
  1270.              IN  ULONG    ulFlags
  1271.              );
  1272. CMAPI
  1273. CONFIGRET
  1274. WINAPI
  1275. CM_Get_Device_ID_ExA(
  1276.              IN  DEVINST  dnDevInst,
  1277.              OUT PCHAR    Buffer,
  1278.              IN  ULONG    BufferLen,
  1279.              IN  ULONG    ulFlags,
  1280.              IN  HMACHINE hMachine
  1281.              );
  1282. CMAPI
  1283. CONFIGRET
  1284. WINAPI
  1285. CM_Get_Device_ID_ExW(
  1286.              IN  DEVINST  dnDevInst,
  1287.              OUT PWCHAR   Buffer,
  1288.              IN  ULONG    BufferLen,
  1289.              IN  ULONG    ulFlags,
  1290.              IN  HMACHINE hMachine
  1291.              );
  1292. #ifdef UNICODE
  1293. #define CM_Get_Device_ID         CM_Get_Device_IDW
  1294. #define CM_Get_Device_ID_Ex      CM_Get_Device_ID_ExW
  1295. #else
  1296. #define CM_Get_Device_ID         CM_Get_Device_IDA
  1297. #define CM_Get_Device_ID_Ex      CM_Get_Device_ID_ExA
  1298. #endif // UNICODE
  1299. CMAPI
  1300. CONFIGRET
  1301. WINAPI
  1302. CM_Get_Device_ID_ListA(
  1303.              IN PCSTR    pszFilter,    OPTIONAL
  1304.              OUT PCHAR   Buffer,
  1305.              IN ULONG    BufferLen,
  1306.              IN ULONG    ulFlags
  1307.              );
  1308. CMAPI
  1309. CONFIGRET
  1310. WINAPI
  1311. CM_Get_Device_ID_ListW(
  1312.              IN PCWSTR   pszFilter,    OPTIONAL
  1313.              OUT PWCHAR  Buffer,
  1314.              IN ULONG    BufferLen,
  1315.              IN ULONG    ulFlags
  1316.              );
  1317. CMAPI
  1318. CONFIGRET
  1319. WINAPI
  1320. CM_Get_Device_ID_List_ExA(
  1321.              IN PCSTR    pszFilter,    OPTIONAL
  1322.              OUT PCHAR   Buffer,
  1323.              IN ULONG    BufferLen,
  1324.              IN ULONG    ulFlags,
  1325.              IN HMACHINE hMachine
  1326.              );
  1327. CMAPI
  1328. CONFIGRET
  1329. WINAPI
  1330. CM_Get_Device_ID_List_ExW(
  1331.              IN PCWSTR   pszFilter,    OPTIONAL
  1332.              OUT PWCHAR  Buffer,
  1333.              IN ULONG    BufferLen,
  1334.              IN ULONG    ulFlags,
  1335.              IN HMACHINE hMachine
  1336.              );
  1337. #ifdef UNICODE
  1338. #define CM_Get_Device_ID_List       CM_Get_Device_ID_ListW
  1339. #define CM_Get_Device_ID_List_Ex    CM_Get_Device_ID_List_ExW
  1340. #else
  1341. #define CM_Get_Device_ID_List       CM_Get_Device_ID_ListA
  1342. #define CM_Get_Device_ID_List_Ex    CM_Get_Device_ID_List_ExA
  1343. #endif // UNICODE
  1344. CMAPI
  1345. CONFIGRET
  1346. WINAPI
  1347. CM_Get_Device_ID_List_SizeA(
  1348.              OUT PULONG  pulLen,
  1349.              IN PCSTR    pszFilter,   OPTIONAL
  1350.              IN ULONG    ulFlags
  1351.              );
  1352. CMAPI
  1353. CONFIGRET
  1354. WINAPI
  1355. CM_Get_Device_ID_List_SizeW(
  1356.              OUT PULONG  pulLen,
  1357.              IN PCWSTR   pszFilter,   OPTIONAL
  1358.              IN ULONG    ulFlags
  1359.              );
  1360. CMAPI
  1361. CONFIGRET
  1362. WINAPI
  1363. CM_Get_Device_ID_List_Size_ExA(
  1364.              OUT PULONG  pulLen,
  1365.              IN PCSTR    pszFilter,   OPTIONAL
  1366.              IN ULONG    ulFlags,
  1367.              IN HMACHINE hMachine
  1368.              );
  1369. CMAPI
  1370. CONFIGRET
  1371. WINAPI
  1372. CM_Get_Device_ID_List_Size_ExW(
  1373.              OUT PULONG  pulLen,
  1374.              IN PCWSTR   pszFilter,   OPTIONAL
  1375.              IN ULONG    ulFlags,
  1376.              IN HMACHINE hMachine
  1377.              );
  1378. #ifdef UNICODE
  1379. #define CM_Get_Device_ID_List_Size    CM_Get_Device_ID_List_SizeW
  1380. #define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExW
  1381. #else
  1382. #define CM_Get_Device_ID_List_Size    CM_Get_Device_ID_List_SizeA
  1383. #define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExA
  1384. #endif // UNICODE
  1385. CMAPI
  1386. CONFIGRET
  1387. WINAPI
  1388. CM_Get_Device_ID_Size(
  1389.              OUT PULONG   pulLen,
  1390.              IN  DEVINST  dnDevInst,
  1391.              IN  ULONG    ulFlags
  1392.              );
  1393. CMAPI
  1394. CONFIGRET
  1395. WINAPI
  1396. CM_Get_Device_ID_Size_Ex(
  1397.              OUT PULONG   pulLen,
  1398.              IN  DEVINST  dnDevInst,
  1399.              IN  ULONG    ulFlags,
  1400.              IN  HMACHINE hMachine
  1401.              );
  1402. CMAPI
  1403. CONFIGRET
  1404. WINAPI
  1405. CM_Get_DevNode_Registry_PropertyA(
  1406.              IN  DEVINST     dnDevInst,
  1407.              IN  ULONG       ulProperty,
  1408.              OUT PULONG      pulRegDataType,   OPTIONAL
  1409.              OUT PVOID       Buffer,           OPTIONAL
  1410.              IN  OUT PULONG  pulLength,
  1411.              IN  ULONG       ulFlags
  1412.              );
  1413. CMAPI
  1414. CONFIGRET
  1415. WINAPI
  1416. CM_Get_DevNode_Registry_PropertyW(
  1417.              IN  DEVINST     dnDevInst,
  1418.              IN  ULONG       ulProperty,
  1419.              OUT PULONG      pulRegDataType,   OPTIONAL
  1420.              OUT PVOID       Buffer,           OPTIONAL
  1421.              IN  OUT PULONG  pulLength,
  1422.              IN  ULONG       ulFlags
  1423.              );
  1424. CMAPI
  1425. CONFIGRET
  1426. WINAPI
  1427. CM_Get_DevNode_Registry_Property_ExA(
  1428.              IN  DEVINST     dnDevInst,
  1429.              IN  ULONG       ulProperty,
  1430.              OUT PULONG      pulRegDataType,   OPTIONAL
  1431.              OUT PVOID       Buffer,           OPTIONAL
  1432.              IN  OUT PULONG  pulLength,
  1433.              IN  ULONG       ulFlags,
  1434.              IN  HMACHINE    hMachine
  1435.              );
  1436. CMAPI
  1437. CONFIGRET
  1438. WINAPI
  1439. CM_Get_DevNode_Registry_Property_ExW(
  1440.              IN  DEVINST     dnDevInst,
  1441.              IN  ULONG       ulProperty,
  1442.              OUT PULONG      pulRegDataType,   OPTIONAL
  1443.              OUT PVOID       Buffer,           OPTIONAL
  1444.              IN  OUT PULONG  pulLength,
  1445.              IN  ULONG       ulFlags,
  1446.              IN  HMACHINE    hMachine
  1447.              );
  1448. #define CM_Get_DevInst_Registry_PropertyW     CM_Get_DevNode_Registry_PropertyW
  1449. #define CM_Get_DevInst_Registry_PropertyA     CM_Get_DevNode_Registry_PropertyA
  1450. #define CM_Get_DevInst_Registry_Property_ExW  CM_Get_DevNode_Registry_Property_ExW
  1451. #define CM_Get_DevInst_Registry_Property_ExA  CM_Get_DevNode_Registry_Property_ExA
  1452. #ifdef UNICODE
  1453. #define CM_Get_DevInst_Registry_Property      CM_Get_DevNode_Registry_PropertyW
  1454. #define CM_Get_DevInst_Registry_Property_Ex   CM_Get_DevNode_Registry_Property_ExW
  1455. #define CM_Get_DevNode_Registry_Property      CM_Get_DevNode_Registry_PropertyW
  1456. #define CM_Get_DevNode_Registry_Property_Ex   CM_Get_DevNode_Registry_Property_ExW
  1457. #else
  1458. #define CM_Get_DevInst_Registry_Property      CM_Get_DevNode_Registry_PropertyA
  1459. #define CM_Get_DevInst_Registry_Property_Ex   CM_Get_DevNode_Registry_Property_ExA
  1460. #define CM_Get_DevNode_Registry_Property      CM_Get_DevNode_Registry_PropertyA
  1461. #define CM_Get_DevNode_Registry_Property_Ex   CM_Get_DevNode_Registry_Property_ExA
  1462. #endif // UNICODE
  1463. CMAPI
  1464. CONFIGRET
  1465. WINAPI
  1466. CM_Get_DevNode_Status(
  1467.              OUT PULONG   pulStatus,
  1468.              OUT PULONG   pulProblemNumber,
  1469.              IN  DEVINST  dnDevInst,
  1470.              IN  ULONG    ulFlags
  1471.              );
  1472. CMAPI
  1473. CONFIGRET
  1474. WINAPI
  1475. CM_Get_DevNode_Status_Ex(
  1476.              OUT PULONG   pulStatus,
  1477.              OUT PULONG   pulProblemNumber,
  1478.              IN  DEVINST  dnDevInst,
  1479.              IN  ULONG    ulFlags,
  1480.              IN  HMACHINE hMachine
  1481.              );
  1482. #define CM_Get_DevInst_Status    CM_Get_DevNode_Status
  1483. #define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex
  1484. CMAPI
  1485. CONFIGRET
  1486. WINAPI
  1487. CM_Get_First_Log_Conf(
  1488.              OUT PLOG_CONF plcLogConf,          OPTIONAL
  1489.              IN  DEVINST   dnDevInst,
  1490.              IN  ULONG     ulFlags
  1491.              );
  1492. CMAPI
  1493. CONFIGRET
  1494. WINAPI
  1495. CM_Get_First_Log_Conf_Ex(
  1496.              OUT PLOG_CONF plcLogConf,          OPTIONAL
  1497.              IN  DEVINST   dnDevInst,
  1498.              IN  ULONG     ulFlags,
  1499.              IN  HMACHINE  hMachine
  1500.              );
  1501. CMAPI
  1502. CONFIGRET
  1503. WINAPI
  1504. CM_Get_Global_State(
  1505.              OUT PULONG pulState,
  1506.              IN  ULONG  ulFlags
  1507.              );
  1508. CMAPI
  1509. CONFIGRET
  1510. WINAPI
  1511. CM_Get_Global_State_Ex(
  1512.              OUT PULONG   pulState,
  1513.              IN  ULONG    ulFlags,
  1514.              IN  HMACHINE hMachine
  1515.              );
  1516. CMAPI
  1517. CONFIGRET
  1518. WINAPI
  1519. CM_Get_Hardware_Profile_InfoA(
  1520.              IN  ULONG            ulIndex,
  1521.              OUT PHWPROFILEINFO_A pHWProfileInfo,
  1522.              IN  ULONG            ulFlags
  1523.              );
  1524. CMAPI
  1525. CONFIGRET
  1526. WINAPI
  1527. CM_Get_Hardware_Profile_Info_ExA(
  1528.              IN  ULONG            ulIndex,
  1529.              OUT PHWPROFILEINFO_A pHWProfileInfo,
  1530.              IN  ULONG            ulFlags,
  1531.              IN  HMACHINE         hMachine
  1532.              );
  1533. CMAPI
  1534. CONFIGRET
  1535. WINAPI
  1536. CM_Get_Hardware_Profile_InfoW(
  1537.              IN  ULONG            ulIndex,
  1538.              OUT PHWPROFILEINFO_W pHWProfileInfo,
  1539.              IN  ULONG            ulFlags
  1540.              );
  1541. CMAPI
  1542. CONFIGRET
  1543. WINAPI
  1544. CM_Get_Hardware_Profile_Info_ExW(
  1545.              IN  ULONG            ulIndex,
  1546.              OUT PHWPROFILEINFO_W pHWProfileInfo,
  1547.              IN  ULONG            ulFlags,
  1548.              IN  HMACHINE         hMachine
  1549.              );
  1550. #ifdef UNICODE
  1551. #define CM_Get_Hardware_Profile_Info      CM_Get_Hardware_Profile_InfoW
  1552. #define CM_Get_Hardware_Profile_Info_Ex   CM_Get_Hardware_Profile_Info_ExW
  1553. #else
  1554. #define CM_Get_Hardware_Profile_Info      CM_Get_Hardware_Profile_InfoA
  1555. #define CM_Get_Hardware_Profile_Info_Ex   CM_Get_Hardware_Profile_Info_ExA
  1556. #endif // UNICODE
  1557. CMAPI
  1558. CONFIGRET
  1559. WINAPI
  1560. CM_Get_HW_Prof_FlagsA(
  1561.              IN  DEVINSTID_A szDevInstName,
  1562.              IN  ULONG       ulHardwareProfile,
  1563.              OUT PULONG      pulValue,
  1564.              IN  ULONG       ulFlags
  1565.              );
  1566. CMAPI
  1567. CONFIGRET
  1568. WINAPI
  1569. CM_Get_HW_Prof_FlagsW(
  1570.              IN  DEVINSTID_W szDevInstName,
  1571.              IN  ULONG       ulHardwareProfile,
  1572.              OUT PULONG      pulValue,
  1573.              IN  ULONG       ulFlags
  1574.              );
  1575. CMAPI
  1576. CONFIGRET
  1577. WINAPI
  1578. CM_Get_HW_Prof_Flags_ExA(
  1579.              IN  DEVINSTID_A szDevInstName,
  1580.              IN  ULONG       ulHardwareProfile,
  1581.              OUT PULONG      pulValue,
  1582.              IN  ULONG       ulFlags,
  1583.              IN  HMACHINE    hMachine
  1584.              );
  1585. CMAPI
  1586. CONFIGRET
  1587. WINAPI
  1588. CM_Get_HW_Prof_Flags_ExW(
  1589.              IN  DEVINSTID_W szDevInstName,
  1590.              IN  ULONG       ulHardwareProfile,
  1591.              OUT PULONG      pulValue,
  1592.              IN  ULONG       ulFlags,
  1593.              IN  HMACHINE    hMachine
  1594.              );
  1595. #ifdef UNICODE
  1596. #define CM_Get_HW_Prof_Flags     CM_Get_HW_Prof_FlagsW
  1597. #define CM_Get_HW_Prof_Flags_Ex  CM_Get_HW_Prof_Flags_ExW
  1598. #else
  1599. #define CM_Get_HW_Prof_Flags     CM_Get_HW_Prof_FlagsA
  1600. #define CM_Get_HW_Prof_Flags_Ex  CM_Get_HW_Prof_Flags_ExA
  1601. #endif // UNICODE
  1602. CMAPI
  1603. CONFIGRET
  1604. WINAPI
  1605. CM_Get_Device_Interface_AliasA(
  1606.     IN     LPCSTR  pszDeviceInterface,
  1607.     IN     LPGUID  AliasInterfaceGuid,
  1608.     OUT    LPSTR   pszAliasDeviceInterface,
  1609.     IN OUT PULONG  pulLength,
  1610.     IN     ULONG   ulFlags
  1611.     );
  1612. CMAPI
  1613. CONFIGRET
  1614. WINAPI
  1615. CM_Get_Device_Interface_AliasW(
  1616.     IN     LPCWSTR pszDeviceInterface,
  1617.     IN     LPGUID  AliasInterfaceGuid,
  1618.     OUT    LPWSTR  pszAliasDeviceInterface,
  1619.     IN OUT PULONG  pulLength,
  1620.     IN     ULONG   ulFlags
  1621.     );
  1622. CMAPI
  1623. CONFIGRET
  1624. WINAPI
  1625. CM_Get_Device_Interface_Alias_ExA(
  1626.     IN     LPCSTR   pszDeviceInterface,
  1627.     IN     LPGUID   AliasInterfaceGuid,
  1628.     OUT    LPSTR    pszAliasDeviceInterface,
  1629.     IN OUT PULONG   pulLength,
  1630.     IN     ULONG    ulFlags,
  1631.     IN     HMACHINE hMachine
  1632.     );
  1633. CMAPI
  1634. CONFIGRET
  1635. WINAPI
  1636. CM_Get_Device_Interface_Alias_ExW(
  1637.     IN     LPCWSTR  pszDeviceInterface,
  1638.     IN     LPGUID   AliasInterfaceGuid,
  1639.     OUT    LPWSTR   pszAliasDeviceInterface,
  1640.     IN OUT PULONG   pulLength,
  1641.     IN     ULONG    ulFlags,
  1642.     IN     HMACHINE hMachine
  1643.     );
  1644. #ifdef UNICODE
  1645. #define CM_Get_Device_Interface_Alias     CM_Get_Device_Interface_AliasW
  1646. #define CM_Get_Device_Interface_Alias_Ex  CM_Get_Device_Interface_Alias_ExW
  1647. #else
  1648. #define CM_Get_Device_Interface_Alias     CM_Get_Device_Interface_AliasA
  1649. #define CM_Get_Device_Interface_Alias_Ex  CM_Get_Device_Interface_Alias_ExA
  1650. #endif // UNICODE
  1651. CMAPI
  1652. CONFIGRET
  1653. WINAPI
  1654. CM_Get_Device_Interface_ListA(
  1655.              IN  LPGUID      InterfaceClassGuid,
  1656.              IN  DEVINSTID_A pDeviceID,      OPTIONAL
  1657.              OUT PCHAR       Buffer,
  1658.              IN  ULONG       BufferLen,
  1659.              IN  ULONG       ulFlags
  1660.              );
  1661. CMAPI
  1662. CONFIGRET
  1663. WINAPI
  1664. CM_Get_Device_Interface_ListW(
  1665.              IN  LPGUID      InterfaceClassGuid,
  1666.              IN  DEVINSTID_W pDeviceID,      OPTIONAL
  1667.              OUT PWCHAR      Buffer,
  1668.              IN  ULONG       BufferLen,
  1669.              IN  ULONG       ulFlags
  1670.              );
  1671. CMAPI
  1672. CONFIGRET
  1673. WINAPI
  1674. CM_Get_Device_Interface_List_ExA(
  1675.              IN  LPGUID      InterfaceClassGuid,
  1676.              IN  DEVINSTID_A pDeviceID,      OPTIONAL
  1677.              OUT PCHAR       Buffer,
  1678.              IN  ULONG       BufferLen,
  1679.              IN  ULONG       ulFlags,
  1680.              IN  HMACHINE    hMachine
  1681.              );
  1682. CMAPI
  1683. CONFIGRET
  1684. WINAPI
  1685. CM_Get_Device_Interface_List_ExW(
  1686.              IN  LPGUID      InterfaceClassGuid,
  1687.              IN  DEVINSTID_W pDeviceID,      OPTIONAL
  1688.              OUT PWCHAR      Buffer,
  1689.              IN  ULONG       BufferLen,
  1690.              IN  ULONG       ulFlags,
  1691.              IN  HMACHINE    hMachine
  1692.              );
  1693. #ifdef UNICODE
  1694. #define CM_Get_Device_Interface_List     CM_Get_Device_Interface_ListW
  1695. #define CM_Get_Device_Interface_List_Ex  CM_Get_Device_Interface_List_ExW
  1696. #else
  1697. #define CM_Get_Device_Interface_List     CM_Get_Device_Interface_ListA
  1698. #define CM_Get_Device_Interface_List_Ex  CM_Get_Device_Interface_List_ExA
  1699. #endif // UNICODE
  1700. CMAPI
  1701. CONFIGRET
  1702. WINAPI
  1703. CM_Get_Device_Interface_List_SizeA(
  1704.              IN  PULONG      pulLen,
  1705.              IN  LPGUID      InterfaceClassGuid,
  1706.              IN  DEVINSTID_A pDeviceID,      OPTIONAL
  1707.              IN  ULONG       ulFlags
  1708.              );
  1709. CMAPI
  1710. CONFIGRET
  1711. WINAPI
  1712. CM_Get_Device_Interface_List_SizeW(
  1713.              IN  PULONG      pulLen,
  1714.              IN  LPGUID      InterfaceClassGuid,
  1715.              IN  DEVINSTID_W pDeviceID,      OPTIONAL
  1716.              IN  ULONG       ulFlags
  1717.              );
  1718. CMAPI
  1719. CONFIGRET
  1720. WINAPI
  1721. CM_Get_Device_Interface_List_Size_ExA(
  1722.              IN  PULONG      pulLen,
  1723.              IN  LPGUID      InterfaceClassGuid,
  1724.              IN  DEVINSTID_A pDeviceID,      OPTIONAL
  1725.              IN  ULONG       ulFlags,
  1726.              IN  HMACHINE    hMachine
  1727.              );
  1728. CMAPI
  1729. CONFIGRET
  1730. WINAPI
  1731. CM_Get_Device_Interface_List_Size_ExW(
  1732.              IN  PULONG      pulLen,
  1733.              IN  LPGUID      InterfaceClassGuid,
  1734.              IN  DEVINSTID_W pDeviceID,      OPTIONAL
  1735.              IN  ULONG       ulFlags,
  1736.              IN  HMACHINE    hMachine
  1737.              );
  1738. #ifdef UNICODE
  1739. #define CM_Get_Device_Interface_List_Size     CM_Get_Device_Interface_List_SizeW
  1740. #define CM_Get_Device_Interface_List_Size_Ex  CM_Get_Device_Interface_List_Size_ExW
  1741. #else
  1742. #define CM_Get_Device_Interface_List_Size     CM_Get_Device_Interface_List_SizeA
  1743. #define CM_Get_Device_Interface_List_Size_Ex  CM_Get_Device_Interface_List_Size_ExA
  1744. #endif // UNICODE
  1745. CMAPI
  1746. CONFIGRET
  1747. WINAPI
  1748. CM_Get_Log_Conf_Priority(
  1749.         IN  LOG_CONF  lcLogConf,
  1750.         OUT PPRIORITY pPriority,
  1751.         IN  ULONG     ulFlags
  1752.         );
  1753. CMAPI
  1754. CONFIGRET
  1755. WINAPI
  1756. CM_Get_Log_Conf_Priority_Ex(
  1757.         IN  LOG_CONF  lcLogConf,
  1758.         OUT PPRIORITY pPriority,
  1759.         IN  ULONG     ulFlags,
  1760.         IN  HMACHINE  hMachine
  1761.         );
  1762. CMAPI
  1763. CONFIGRET
  1764. WINAPI
  1765. CM_Get_Next_Log_Conf(
  1766.              OUT PLOG_CONF plcLogConf,  OPTIONAL
  1767.              IN  LOG_CONF  lcLogConf,
  1768.              IN  ULONG     ulFlags
  1769.              );
  1770. CMAPI
  1771. CONFIGRET
  1772. WINAPI
  1773. CM_Get_Next_Log_Conf_Ex(
  1774.              OUT PLOG_CONF plcLogConf,          OPTIONAL
  1775.              IN  LOG_CONF  lcLogConf,
  1776.              IN  ULONG     ulFlags,
  1777.              IN  HMACHINE  hMachine
  1778.              );
  1779. CMAPI
  1780. CONFIGRET
  1781. WINAPI
  1782. CM_Get_Parent(
  1783.              OUT PDEVINST pdnDevInst,
  1784.              IN  DEVINST  dnDevInst,
  1785.              IN  ULONG    ulFlags
  1786.              );
  1787. CMAPI
  1788. CONFIGRET
  1789. WINAPI
  1790. CM_Get_Parent_Ex(
  1791.              OUT PDEVINST pdnDevInst,
  1792.              IN  DEVINST  dnDevInst,
  1793.              IN  ULONG    ulFlags,
  1794.              IN  HMACHINE hMachine
  1795.              );
  1796. CMAPI
  1797. CONFIGRET
  1798. WINAPI
  1799. CM_Get_Res_Des_Data(
  1800.              IN  RES_DES  rdResDes,
  1801.              OUT PVOID    Buffer,
  1802.              IN  ULONG    BufferLen,
  1803.              IN  ULONG    ulFlags
  1804.              );
  1805. CMAPI
  1806. CONFIGRET
  1807. WINAPI
  1808. CM_Get_Res_Des_Data_Ex(
  1809.              IN  RES_DES  rdResDes,
  1810.              OUT PVOID    Buffer,
  1811.              IN  ULONG    BufferLen,
  1812.              IN  ULONG    ulFlags,
  1813.              IN  HMACHINE hMachine
  1814.              );
  1815. CMAPI
  1816. CONFIGRET
  1817. WINAPI
  1818. CM_Get_Res_Des_Data_Size(
  1819.              OUT PULONG   pulSize,
  1820.              IN  RES_DES  rdResDes,
  1821.              IN  ULONG    ulFlags
  1822.              );
  1823. CMAPI
  1824. CONFIGRET
  1825. WINAPI
  1826. CM_Get_Res_Des_Data_Size_Ex(
  1827.              OUT PULONG   pulSize,
  1828.              IN  RES_DES  rdResDes,
  1829.              IN  ULONG    ulFlags,
  1830.              IN  HMACHINE hMachine
  1831.              );
  1832. CMAPI
  1833. CONFIGRET
  1834. WINAPI
  1835. CM_Get_Sibling(
  1836.              OUT PDEVINST pdnDevInst,
  1837.              IN  DEVINST  DevInst,
  1838.              IN  ULONG    ulFlags
  1839.              );
  1840. CMAPI
  1841. CONFIGRET
  1842. WINAPI
  1843. CM_Get_Sibling_Ex(
  1844.              OUT PDEVINST pdnDevInst,
  1845.              IN  DEVINST  DevInst,
  1846.              IN  ULONG    ulFlags,
  1847.              IN  HMACHINE hMachine
  1848.              );
  1849. CMAPI
  1850. WORD
  1851. WINAPI
  1852. CM_Get_Version(
  1853.              VOID
  1854.              );
  1855. CMAPI
  1856. WORD
  1857. WINAPI
  1858. CM_Get_Version_Ex(
  1859.              IN  HMACHINE    hMachine
  1860.              );
  1861. CMAPI
  1862. CONFIGRET
  1863. WINAPI
  1864. CM_Intersect_Range_List(
  1865.              IN RANGE_LIST rlhOld1,
  1866.              IN RANGE_LIST rlhOld2,
  1867.              IN RANGE_LIST rlhNew,
  1868.              IN ULONG      ulFlags
  1869.              );
  1870. CMAPI
  1871. CONFIGRET
  1872. WINAPI
  1873. CM_Invert_Range_List(
  1874.              IN RANGE_LIST rlhOld,
  1875.              IN RANGE_LIST rlhNew,
  1876.              IN DWORDLONG  ullMaxValue,
  1877.              IN ULONG      ulFlags
  1878.              );
  1879. CMAPI
  1880. CONFIGRET
  1881. WINAPI
  1882. CM_Locate_DevNodeA(
  1883.              OUT PDEVINST    pdnDevInst,
  1884.              IN  DEVINSTID_A pDeviceID,    OPTIONAL
  1885.              IN  ULONG       ulFlags
  1886.              );
  1887. CMAPI
  1888. CONFIGRET
  1889. WINAPI
  1890. CM_Locate_DevNodeW(
  1891.              OUT PDEVINST    pdnDevInst,
  1892.              IN  DEVINSTID_W pDeviceID,   OPTIONAL
  1893.              IN  ULONG       ulFlags
  1894.              );
  1895. CMAPI
  1896. CONFIGRET
  1897. WINAPI
  1898. CM_Locate_DevNode_ExA(
  1899.              OUT PDEVINST    pdnDevInst,
  1900.              IN  DEVINSTID_A pDeviceID,    OPTIONAL
  1901.              IN  ULONG       ulFlags,
  1902.              IN  HMACHINE    hMachine
  1903.              );
  1904. CMAPI
  1905. CONFIGRET
  1906. WINAPI
  1907. CM_Locate_DevNode_ExW(
  1908.              OUT PDEVINST    pdnDevInst,
  1909.              IN  DEVINSTID_W pDeviceID,   OPTIONAL
  1910.              IN  ULONG       ulFlags,
  1911.              IN  HMACHINE    hMachine
  1912.              );
  1913. #define CM_Locate_DevInstA       CM_Locate_DevNodeA
  1914. #define CM_Locate_DevInstW       CM_Locate_DevNodeW
  1915. #define CM_Locate_DevInst_ExA    CM_Locate_DevNode_ExA
  1916. #define CM_Locate_DevInst_ExW    CM_Locate_DevNode_ExW
  1917. #ifdef UNICODE
  1918. #define CM_Locate_DevNode        CM_Locate_DevNodeW
  1919. #define CM_Locate_DevInst        CM_Locate_DevNodeW
  1920. #define CM_Locate_DevNode_Ex     CM_Locate_DevNode_ExW
  1921. #define CM_Locate_DevInst_Ex     CM_Locate_DevNode_ExW
  1922. #else
  1923. #define CM_Locate_DevNode        CM_Locate_DevNodeA
  1924. #define CM_Locate_DevInst        CM_Locate_DevNodeA
  1925. #define CM_Locate_DevNode_Ex     CM_Locate_DevNode_ExA
  1926. #define CM_Locate_DevInst_Ex     CM_Locate_DevNode_ExA
  1927. #endif // UNICODE
  1928. CMAPI
  1929. CONFIGRET
  1930. WINAPI
  1931. CM_Merge_Range_List(
  1932.              IN RANGE_LIST rlhOld1,
  1933.              IN RANGE_LIST rlhOld2,
  1934.              IN RANGE_LIST rlhNew,
  1935.              IN ULONG      ulFlags
  1936.              );
  1937. CMAPI
  1938. CONFIGRET
  1939. WINAPI
  1940. CM_Modify_Res_Des(
  1941.              OUT PRES_DES   prdResDes,
  1942.              IN  RES_DES    rdResDes,
  1943.              IN  RESOURCEID ResourceID,
  1944.              IN  PCVOID     ResourceData,
  1945.              IN  ULONG      ResourceLen,
  1946.              IN  ULONG      ulFlags
  1947.              );
  1948. CMAPI
  1949. CONFIGRET
  1950. WINAPI
  1951. CM_Modify_Res_Des_Ex(
  1952.              OUT PRES_DES   prdResDes,
  1953.              IN  RES_DES    rdResDes,
  1954.              IN  RESOURCEID ResourceID,
  1955.              IN  PCVOID     ResourceData,
  1956.              IN  ULONG      ResourceLen,
  1957.              IN  ULONG      ulFlags,
  1958.              IN  HMACHINE   hMachine
  1959.              );
  1960. CMAPI
  1961. CONFIGRET
  1962. WINAPI
  1963. CM_Move_DevNode(
  1964.              IN DEVINST  dnFromDevInst,
  1965.              IN DEVINST  dnToDevInst,
  1966.              IN ULONG    ulFlags
  1967.              );
  1968. CMAPI
  1969. CONFIGRET
  1970. WINAPI
  1971. CM_Move_DevNode_Ex(
  1972.              IN DEVINST  dnFromDevInst,
  1973.              IN DEVINST  dnToDevInst,
  1974.              IN ULONG    ulFlags,
  1975.              IN HMACHINE hMachine
  1976.              );
  1977. #define CM_Move_DevInst          CM_Move_DevNode
  1978. #define CM_Move_DevInst_Ex       CM_Move_DevNode_Ex
  1979. CMAPI
  1980. CONFIGRET
  1981. WINAPI
  1982. CM_Next_Range(
  1983.              IN OUT PRANGE_ELEMENT preElement,
  1984.              OUT PDWORDLONG        pullStart,
  1985.              OUT PDWORDLONG        pullEnd,
  1986.              IN  ULONG             ulFlags
  1987.              );
  1988. CMAPI
  1989. CONFIGRET
  1990. WINAPI
  1991. CM_Get_Next_Res_Des(
  1992.              OUT PRES_DES    prdResDes,
  1993.              IN  RES_DES     rdResDes,
  1994.              IN  RESOURCEID  ForResource,
  1995.              OUT PRESOURCEID pResourceID,
  1996.              IN  ULONG       ulFlags
  1997.              );
  1998. CMAPI
  1999. CONFIGRET
  2000. WINAPI
  2001. CM_Get_Next_Res_Des_Ex(
  2002.              OUT PRES_DES    prdResDes,
  2003.              IN  RES_DES     rdResDes,
  2004.              IN  RESOURCEID  ForResource,
  2005.              OUT PRESOURCEID pResourceID,
  2006.              IN  ULONG       ulFlags,
  2007.              IN  HMACHINE    hMachine
  2008.              );
  2009. CMAPI
  2010. CONFIGRET
  2011. WINAPI
  2012. CM_Open_Class_KeyA(
  2013.              IN  LPGUID         ClassGuid,      OPTIONAL
  2014.              IN  LPCSTR         pszClassName,   OPTIONAL
  2015.              IN  REGSAM         samDesired,
  2016.              IN  REGDISPOSITION Disposition,
  2017.              OUT PHKEY          phkClass,
  2018.              IN  ULONG          ulFlags
  2019.              );
  2020. CMAPI
  2021. CONFIGRET
  2022. WINAPI
  2023. CM_Open_Class_KeyW(
  2024.              IN  LPGUID         ClassGuid,      OPTIONAL
  2025.              IN  LPCWSTR        pszClassName,   OPTIONAL
  2026.              IN  REGSAM         samDesired,
  2027.              IN  REGDISPOSITION Disposition,
  2028.              OUT PHKEY          phkClass,
  2029.              IN  ULONG          ulFlags
  2030.              );
  2031. CMAPI
  2032. CONFIGRET
  2033. WINAPI
  2034. CM_Open_Class_Key_ExA(
  2035.              IN  LPGUID         pszClassGuid,      OPTIONAL
  2036.              IN  LPCSTR         pszClassName,      OPTIONAL
  2037.              IN  REGSAM         samDesired,
  2038.              IN  REGDISPOSITION Disposition,
  2039.              OUT PHKEY          phkClass,
  2040.              IN  ULONG          ulFlags,
  2041.              IN  HMACHINE       hMachine
  2042.              );
  2043. CMAPI
  2044. CONFIGRET
  2045. WINAPI
  2046. CM_Open_Class_Key_ExW(
  2047.              IN  LPGUID         pszClassGuid,      OPTIONAL
  2048.              IN  LPCWSTR        pszClassName,      OPTIONAL
  2049.              IN  REGSAM         samDesired,
  2050.              IN  REGDISPOSITION Disposition,
  2051.              OUT PHKEY          phkClass,
  2052.              IN  ULONG          ulFlags,
  2053.              IN  HMACHINE       hMachine
  2054.              );
  2055. #ifdef UNICODE
  2056. #define CM_Open_Class_Key        CM_Open_Class_KeyW
  2057. #define CM_Open_Class_Key_Ex     CM_Open_Class_Key_ExW
  2058. #else
  2059. #define CM_Open_Class_Key        CM_Open_Class_KeyA
  2060. #define CM_Open_Class_Key_Ex     CM_Open_Class_Key_ExA
  2061. #endif // UNICODE
  2062. CMAPI
  2063. CONFIGRET
  2064. WINAPI
  2065. CM_Open_DevNode_Key(
  2066.              IN  DEVINST        dnDevNode,
  2067.              IN  REGSAM         samDesired,
  2068.              IN  ULONG          ulHardwareProfile,
  2069.              IN  REGDISPOSITION Disposition,
  2070.              OUT PHKEY          phkDevice,
  2071.              IN  ULONG          ulFlags
  2072.              );
  2073. CMAPI
  2074. CONFIGRET
  2075. WINAPI
  2076. CM_Open_DevNode_Key_Ex(
  2077.              IN  DEVINST        dnDevNode,
  2078.              IN  REGSAM         samDesired,
  2079.              IN  ULONG          ulHardwareProfile,
  2080.              IN  REGDISPOSITION Disposition,
  2081.              OUT PHKEY          phkDevice,
  2082.              IN  ULONG          ulFlags,
  2083.              IN  HMACHINE       hMachine
  2084.              );
  2085. #define CM_Open_DevInst_Key      CM_Open_DevNode_Key
  2086. #define CM_Open_DevInst_Key_Ex   CM_Open_DevNode_Key_Ex
  2087. CMAPI
  2088. CONFIGRET
  2089. WINAPI
  2090. CM_Query_Arbitrator_Free_Data(
  2091.              OUT PVOID      pData,
  2092.              IN  ULONG      DataLen,
  2093.              IN  DEVINST    dnDevInst,
  2094.              IN  RESOURCEID ResourceID,
  2095.              IN  ULONG      ulFlags
  2096.              );
  2097. CMAPI
  2098. CONFIGRET
  2099. WINAPI
  2100. CM_Query_Arbitrator_Free_Data_Ex(
  2101.              OUT PVOID      pData,
  2102.              IN  ULONG      DataLen,
  2103.              IN  DEVINST    dnDevInst,
  2104.              IN  RESOURCEID ResourceID,
  2105.              IN  ULONG      ulFlags,
  2106.              IN  HMACHINE   hMachine
  2107.              );
  2108. CMAPI
  2109. CONFIGRET
  2110. WINAPI
  2111. CM_Query_Arbitrator_Free_Size(
  2112.              OUT PULONG     pulSize,
  2113.              IN  DEVINST    dnDevInst,
  2114.              IN  RESOURCEID ResourceID,
  2115.              IN  ULONG      ulFlags
  2116.              );
  2117. CMAPI
  2118. CONFIGRET
  2119. WINAPI
  2120. CM_Query_Arbitrator_Free_Size_Ex(
  2121.              OUT PULONG     pulSize,
  2122.              IN  DEVINST    dnDevInst,
  2123.              IN  RESOURCEID ResourceID,
  2124.              IN  ULONG      ulFlags,
  2125.              IN  HMACHINE   hMachine
  2126.              );
  2127. CMAPI
  2128. CONFIGRET
  2129. WINAPI
  2130. CM_Query_Remove_SubTree(
  2131.              IN DEVINST  dnAncestor,
  2132.              IN ULONG    ulFlags
  2133.              );
  2134. CMAPI
  2135. CONFIGRET
  2136. WINAPI
  2137. CM_Query_Remove_SubTree_Ex(
  2138.              IN DEVINST  dnAncestor,
  2139.              IN ULONG    ulFlags,
  2140.              IN HMACHINE hMachine
  2141.              );
  2142. CMAPI
  2143. CONFIGRET
  2144. WINAPI
  2145. CM_Reenumerate_DevNode(
  2146.              IN DEVINST  dnDevInst,
  2147.              IN ULONG    ulFlags
  2148.              );
  2149. CMAPI
  2150. CONFIGRET
  2151. WINAPI
  2152. CM_Reenumerate_DevNode_Ex(
  2153.              IN DEVINST  dnDevInst,
  2154.              IN ULONG    ulFlags,
  2155.              IN HMACHINE hMachine
  2156.              );
  2157. #define CM_Reenumerate_DevInst      CM_Reenumerate_DevNode
  2158. #define CM_Reenumerate_DevInst_Ex   CM_Reenumerate_DevNode_Ex
  2159. CMAPI
  2160. CONFIGRET
  2161. WINAPI
  2162. CM_Register_Device_InterfaceA(
  2163.              IN  DEVINST   dnDevInst,
  2164.              IN  LPGUID    InterfaceClassGuid,
  2165.              IN  LPCSTR    pszReference,         OPTIONAL
  2166.              OUT LPSTR     pszDeviceInterface,
  2167.              IN OUT PULONG pulLength,
  2168.              IN  ULONG     ulFlags
  2169.              );
  2170. CMAPI
  2171. CONFIGRET
  2172. WINAPI
  2173. CM_Register_Device_InterfaceW(
  2174.              IN  DEVINST   dnDevInst,
  2175.              IN  LPGUID    InterfaceClassGuid,
  2176.              IN  LPCWSTR   pszReference,         OPTIONAL
  2177.              OUT LPWSTR    pszDeviceInterface,
  2178.              IN OUT PULONG pulLength,
  2179.              IN  ULONG     ulFlags
  2180.              );
  2181. CMAPI
  2182. CONFIGRET
  2183. WINAPI
  2184. CM_Register_Device_Interface_ExA(
  2185.              IN  DEVINST   dnDevInst,
  2186.              IN  LPGUID    InterfaceClassGuid,
  2187.              IN  LPCSTR    pszReference,         OPTIONAL
  2188.              OUT LPSTR     pszDeviceInterface,
  2189.              IN OUT PULONG pulLength,
  2190.              IN  ULONG     ulFlags,
  2191.              IN  HMACHINE  hMachine
  2192.              );
  2193. CMAPI
  2194. CONFIGRET
  2195. WINAPI
  2196. CM_Register_Device_Interface_ExW(
  2197.              IN  DEVINST   dnDevInst,
  2198.              IN  LPGUID    InterfaceClassGuid,
  2199.              IN  LPCWSTR   pszReference,         OPTIONAL
  2200.              OUT LPWSTR    pszDeviceInterface,
  2201.              IN OUT PULONG pulLength,
  2202.              IN  ULONG     ulFlags,
  2203.              IN  HMACHINE  hMachine
  2204.              );
  2205. #ifdef UNICODE
  2206. #define CM_Register_Device_Interface    CM_Register_Device_InterfaceW
  2207. #define CM_Register_Device_Interface_Ex CM_Register_Device_Interface_ExW
  2208. #else
  2209. #define CM_Register_Device_Interface    CM_Register_Device_InterfaceA
  2210. #define CM_Register_Device_Interface_Ex CM_Register_Device_Interface_ExA
  2211. #endif // UNICODE
  2212. CMAPI
  2213. CONFIGRET
  2214. WINAPI
  2215. CM_Set_DevNode_Problem_Ex(
  2216.     IN DEVINST   dnDevInst,
  2217.     IN ULONG     ulProblem,
  2218.     IN  ULONG    ulFlags,
  2219.     IN  HMACHINE hMachine
  2220.     );
  2221. CMAPI
  2222. CONFIGRET
  2223. WINAPI
  2224. CM_Set_DevNode_Problem(
  2225.     IN DEVINST   dnDevInst,
  2226.     IN ULONG     ulProblem,
  2227.     IN  ULONG    ulFlags
  2228.     );
  2229. #define CM_Set_DevInst_Problem      CM_Set_DevNode_Problem
  2230. #define CM_Set_DevInst_Problem_Ex   CM_Set_DevNode_Problem_Ex
  2231. CMAPI
  2232. CONFIGRET
  2233. WINAPI
  2234. CM_Unregister_Device_InterfaceA(
  2235.              IN LPCSTR pszDeviceInterface,
  2236.              IN ULONG  ulFlags
  2237.              );
  2238. CMAPI
  2239. CONFIGRET
  2240. WINAPI
  2241. CM_Unregister_Device_InterfaceW(
  2242.              IN LPCWSTR pszDeviceInterface,
  2243.              IN ULONG   ulFlags
  2244.              );
  2245. CMAPI
  2246. CONFIGRET
  2247. WINAPI
  2248. CM_Unregister_Device_Interface_ExA(
  2249.              IN LPCSTR   pszDeviceInterface,
  2250.              IN ULONG    ulFlags,
  2251.              IN HMACHINE hMachine
  2252.              );
  2253. CMAPI
  2254. CONFIGRET
  2255. WINAPI
  2256. CM_Unregister_Device_Interface_ExW(
  2257.              IN LPCWSTR  pszDeviceInterface,
  2258.              IN ULONG    ulFlags,
  2259.              IN HMACHINE hMachine
  2260.              );
  2261. #ifdef UNICODE
  2262. #define CM_Unregister_Device_Interface    CM_Unregister_Device_InterfaceW
  2263. #define CM_Unregister_Device_Interface_Ex CM_Unregister_Device_Interface_ExW
  2264. #else
  2265. #define CM_Unregister_Device_Interface    CM_Unregister_Device_InterfaceA
  2266. #define CM_Unregister_Device_Interface_Ex CM_Unregister_Device_Interface_ExA
  2267. #endif // UNICODE
  2268. CMAPI
  2269. CONFIGRET
  2270. WINAPI
  2271. CM_Register_Device_Driver(
  2272.             IN DEVINST  dnDevInst,
  2273.             IN ULONG    ulFlags
  2274.             );
  2275. CMAPI
  2276. CONFIGRET
  2277. WINAPI
  2278. CM_Register_Device_Driver_Ex(
  2279.             IN DEVINST  dnDevInst,
  2280.             IN ULONG    ulFlags,
  2281.             IN HMACHINE hMachine
  2282.             );
  2283. CMAPI
  2284. CONFIGRET
  2285. WINAPI
  2286. CM_Remove_SubTree(
  2287.              IN DEVINST  dnAncestor,
  2288.              IN ULONG    ulFlags
  2289.              );
  2290. CMAPI
  2291. CONFIGRET
  2292. WINAPI
  2293. CM_Remove_SubTree_Ex(
  2294.              IN DEVINST  dnAncestor,
  2295.              IN ULONG    ulFlags,
  2296.              IN HMACHINE hMachine
  2297.              );
  2298. CMAPI
  2299. CONFIGRET
  2300. WINAPI
  2301. CM_Set_DevNode_Registry_PropertyA(
  2302.              IN  DEVINST     dnDevInst,
  2303.              IN  ULONG       ulProperty,
  2304.              IN  PCVOID      Buffer,           OPTIONAL
  2305.              IN  ULONG       ulLength,
  2306.              IN  ULONG       ulFlags
  2307.              );
  2308. CMAPI
  2309. CONFIGRET
  2310. WINAPI
  2311. CM_Set_DevNode_Registry_PropertyW(
  2312.              IN  DEVINST     dnDevInst,
  2313.              IN  ULONG       ulProperty,
  2314.              IN  PCVOID      Buffer,           OPTIONAL
  2315.              IN  ULONG       ulLength,
  2316.              IN  ULONG       ulFlags
  2317.              );
  2318. CMAPI
  2319. CONFIGRET
  2320. WINAPI
  2321. CM_Set_DevNode_Registry_Property_ExA(
  2322.              IN  DEVINST     dnDevInst,
  2323.              IN  ULONG       ulProperty,
  2324.              IN  PCVOID      Buffer,           OPTIONAL
  2325.              IN  ULONG       ulLength,
  2326.              IN  ULONG       ulFlags,
  2327.              IN  HMACHINE    hMachine
  2328.              );
  2329. CMAPI
  2330. CONFIGRET
  2331. WINAPI
  2332. CM_Set_DevNode_Registry_Property_ExW(
  2333.              IN  DEVINST     dnDevInst,
  2334.              IN  ULONG       ulProperty,
  2335.              IN  PCVOID      Buffer,           OPTIONAL
  2336.              IN  ULONG       ulLength,
  2337.              IN  ULONG       ulFlags,
  2338.              IN  HMACHINE    hMachine
  2339.              );
  2340. #define CM_Set_DevInst_Registry_PropertyW     CM_Set_DevNode_Registry_PropertyW
  2341. #define CM_Set_DevInst_Registry_PropertyA     CM_Set_DevNode_Registry_PropertyA
  2342. #define CM_Set_DevInst_Registry_Property_ExW  CM_Set_DevNode_Registry_Property_ExW
  2343. #define CM_Set_DevInst_Registry_Property_ExA  CM_Set_DevNode_Registry_Property_ExA
  2344. #ifdef UNICODE
  2345. #define CM_Set_DevInst_Registry_Property      CM_Set_DevNode_Registry_PropertyW
  2346. #define CM_Set_DevInst_Registry_Property_Ex   CM_Set_DevNode_Registry_Property_ExW
  2347. #define CM_Set_DevNode_Registry_Property      CM_Set_DevNode_Registry_PropertyW
  2348. #define CM_Set_DevNode_Registry_Property_Ex   CM_Set_DevNode_Registry_Property_ExW
  2349. #else
  2350. #define CM_Set_DevInst_Registry_Property      CM_Set_DevNode_Registry_PropertyA
  2351. #define CM_Set_DevInst_Registry_Property_Ex   CM_Set_DevNode_Registry_Property_ExA
  2352. #define CM_Set_DevNode_Registry_Property      CM_Set_DevNode_Registry_PropertyA
  2353. #define CM_Set_DevNode_Registry_Property_Ex   CM_Set_DevNode_Registry_Property_ExA
  2354. #endif // UNICODE
  2355. CMAPI
  2356. CONFIGRET
  2357. WINAPI
  2358. CM_Set_HW_Prof_FlagsA(
  2359.              IN DEVINSTID_A szDevInstName,
  2360.              IN ULONG       ulConfig,
  2361.              IN ULONG       ulValue,
  2362.              IN ULONG       ulFlags
  2363.              );
  2364. CMAPI
  2365. CONFIGRET
  2366. WINAPI
  2367. CM_Set_HW_Prof_FlagsW(
  2368.              IN DEVINSTID_W szDevInstName,
  2369.              IN ULONG       ulConfig,
  2370.              IN ULONG       ulValue,
  2371.              IN ULONG       ulFlags
  2372.              );
  2373. CMAPI
  2374. CONFIGRET
  2375. WINAPI
  2376. CM_Set_HW_Prof_Flags_ExA(
  2377.              IN DEVINSTID_A szDevInstName,
  2378.              IN ULONG       ulConfig,
  2379.              IN ULONG       ulValue,
  2380.              IN ULONG       ulFlags,
  2381.              IN HMACHINE    hMachine
  2382.              );
  2383. CMAPI
  2384. CONFIGRET
  2385. WINAPI
  2386. CM_Set_HW_Prof_Flags_ExW(
  2387.              IN DEVINSTID_W szDevInstName,
  2388.              IN ULONG       ulConfig,
  2389.              IN ULONG       ulValue,
  2390.              IN ULONG       ulFlags,
  2391.              IN HMACHINE    hMachine
  2392.              );
  2393. #ifdef UNICODE
  2394. #define CM_Set_HW_Prof_Flags     CM_Set_HW_Prof_FlagsW
  2395. #define CM_Set_HW_Prof_Flags_Ex  CM_Set_HW_Prof_Flags_ExW
  2396. #else
  2397. #define CM_Set_HW_Prof_Flags     CM_Set_HW_Prof_FlagsA
  2398. #define CM_Set_HW_Prof_Flags_Ex  CM_Set_HW_Prof_Flags_ExA
  2399. #endif // UNICODE
  2400. CMAPI
  2401. CONFIGRET
  2402. WINAPI
  2403. CM_Setup_DevNode(
  2404.              IN DEVINST  dnDevInst,
  2405.              IN ULONG    ulFlags
  2406.              );
  2407. CMAPI
  2408. CONFIGRET
  2409. WINAPI
  2410. CM_Setup_DevNode_Ex(
  2411.              IN DEVINST  dnDevInst,
  2412.              IN ULONG    ulFlags,
  2413.              IN HMACHINE hMachine
  2414.              );
  2415. #define CM_Setup_DevInst         CM_Setup_DevNode
  2416. #define CM_Setup_DevInst_EX      CM_Setup_DevNode_Ex
  2417. CMAPI
  2418. CONFIGRET
  2419. WINAPI
  2420. CM_Test_Range_Available(
  2421.              IN DWORDLONG  ullStartValue,
  2422.              IN DWORDLONG  ullEndValue,
  2423.              IN RANGE_LIST rlh,
  2424.              IN ULONG      ulFlags
  2425.              );
  2426. CMAPI
  2427. CONFIGRET
  2428. CM_Uninstall_DevNode(
  2429.              IN DEVNODE dnPhantom,
  2430.              IN ULONG   ulFlags
  2431.              );
  2432. CMAPI
  2433. CONFIGRET
  2434. CM_Uninstall_DevNode_Ex(
  2435.              IN DEVNODE dnPhantom,
  2436.              IN ULONG   ulFlags,
  2437.              IN HANDLE  hMachine
  2438.              );
  2439. #define CM_Uninstall_DevInst     CM_Uninstall_DevNode
  2440. #define CM_Uninstall_DevInst_Ex  CM_Uninstall_DevNode_Ex
  2441. CMAPI CONFIGRET WINAPI CM_Is_Dock_Station_Present(
  2442. OUT PBOOL pbPresent
  2443. );
  2444. CMAPI CONFIGRET WINAPI CM_Request_Eject_PC(void);
  2445. //----------------------------------------------------------------------
  2446. // NOT IMPLEMENTED YET - THESE ROUTINES RETURN CR_CALL_NOT_IMPLEMENTED
  2447. //----------------------------------------------------------------------
  2448. CMAPI
  2449. CONFIGRET
  2450. WINAPI
  2451. CM_Run_Detection(
  2452.              IN ULONG    ulFlags
  2453.              );
  2454. CMAPI
  2455. CONFIGRET
  2456. WINAPI
  2457. CM_Run_Detection_Ex(
  2458.              IN ULONG    ulFlags,
  2459.              IN HMACHINE hMachine
  2460.              );
  2461. CMAPI
  2462. CONFIGRET
  2463. WINAPI
  2464. CM_Set_HW_Prof(
  2465.              IN ULONG    ulHardwareProfile,
  2466.              IN ULONG    ulFlags
  2467.              );
  2468. CMAPI
  2469. CONFIGRET
  2470. WINAPI
  2471. CM_Set_HW_Prof_Ex(
  2472.              IN ULONG    ulHardwareProfile,
  2473.              IN ULONG    ulFlags,
  2474.              IN HMACHINE hMachine
  2475.              );
  2476. //--------------------------------------------------------------
  2477. // Configuration Manager return status codes
  2478. //--------------------------------------------------------------
  2479. #define CR_SUCCESS                  (0x00000000)
  2480. #define CR_DEFAULT                  (0x00000001)
  2481. #define CR_OUT_OF_MEMORY            (0x00000002)
  2482. #define CR_INVALID_POINTER          (0x00000003)
  2483. #define CR_INVALID_FLAG             (0x00000004)
  2484. #define CR_INVALID_DEVNODE          (0x00000005)
  2485. #define CR_INVALID_DEVINST          CR_INVALID_DEVNODE
  2486. #define CR_INVALID_RES_DES          (0x00000006)
  2487. #define CR_INVALID_LOG_CONF         (0x00000007)
  2488. #define CR_INVALID_ARBITRATOR       (0x00000008)
  2489. #define CR_INVALID_NODELIST         (0x00000009)
  2490. #define CR_DEVNODE_HAS_REQS         (0x0000000A)
  2491. #define CR_DEVINST_HAS_REQS         CR_DEVNODE_HAS_REQS
  2492. #define CR_INVALID_RESOURCEID       (0x0000000B)
  2493. #define CR_DLVXD_NOT_FOUND          (0x0000000C)   // WIN 95 ONLY
  2494. #define CR_NO_SUCH_DEVNODE          (0x0000000D)
  2495. #define CR_NO_SUCH_DEVINST          CR_NO_SUCH_DEVNODE
  2496. #define CR_NO_MORE_LOG_CONF         (0x0000000E)
  2497. #define CR_NO_MORE_RES_DES          (0x0000000F)
  2498. #define CR_ALREADY_SUCH_DEVNODE     (0x00000010)
  2499. #define CR_ALREADY_SUCH_DEVINST     CR_ALREADY_SUCH_DEVNODE
  2500. #define CR_INVALID_RANGE_LIST       (0x00000011)
  2501. #define CR_INVALID_RANGE            (0x00000012)
  2502. #define CR_FAILURE                  (0x00000013)
  2503. #define CR_NO_SUCH_LOGICAL_DEV      (0x00000014)
  2504. #define CR_CREATE_BLOCKED           (0x00000015)
  2505. #define CR_NOT_SYSTEM_VM            (0x00000016)   // WIN 95 ONLY
  2506. #define CR_REMOVE_VETOED            (0x00000017)
  2507. #define CR_APM_VETOED               (0x00000018)
  2508. #define CR_INVALID_LOAD_TYPE        (0x00000019)
  2509. #define CR_BUFFER_SMALL             (0x0000001A)
  2510. #define CR_NO_ARBITRATOR            (0x0000001B)
  2511. #define CR_NO_REGISTRY_HANDLE       (0x0000001C)
  2512. #define CR_REGISTRY_ERROR           (0x0000001D)
  2513. #define CR_INVALID_DEVICE_ID        (0x0000001E)
  2514. #define CR_INVALID_DATA             (0x0000001F)
  2515. #define CR_INVALID_API              (0x00000020)
  2516. #define CR_DEVLOADER_NOT_READY      (0x00000021)
  2517. #define CR_NEED_RESTART             (0x00000022)
  2518. #define CR_NO_MORE_HW_PROFILES      (0x00000023)
  2519. #define CR_DEVICE_NOT_THERE         (0x00000024)
  2520. #define CR_NO_SUCH_VALUE            (0x00000025)
  2521. #define CR_WRONG_TYPE               (0x00000026)
  2522. #define CR_INVALID_PRIORITY         (0x00000027)
  2523. #define CR_NOT_DISABLEABLE          (0x00000028)
  2524. #define CR_FREE_RESOURCES           (0x00000029)
  2525. #define CR_QUERY_VETOED             (0x0000002A)
  2526. #define CR_CANT_SHARE_IRQ           (0x0000002B)
  2527. #define CR_NO_DEPENDENT             (0x0000002C)
  2528. #define CR_SAME_RESOURCES           (0x0000002D)
  2529. #define CR_NO_SUCH_REGISTRY_KEY     (0x0000002E)
  2530. #define CR_INVALID_MACHINENAME      (0x0000002F)   // NT ONLY
  2531. #define CR_REMOTE_COMM_FAILURE      (0x00000030)   // NT ONLY
  2532. #define CR_MACHINE_UNAVAILABLE      (0x00000031)   // NT ONLY
  2533. #define CR_NO_CM_SERVICES           (0x00000032)   // NT ONLY
  2534. #define CR_ACCESS_DENIED            (0x00000033)   // NT ONLY
  2535. #define CR_CALL_NOT_IMPLEMENTED     (0x00000034)
  2536. #define CR_INVALID_PROPERTY         (0x00000035)
  2537. #define CR_DEVICE_INTERFACE_ACTIVE  (0x00000036)
  2538. #define CR_NO_SUCH_DEVICE_INTERFACE (0x00000037)
  2539. #define CR_INVALID_REFERENCE_STRING (0x00000038)
  2540. #define NUM_CR_RESULTS              (0x00000039)
  2541. #endif // _CFGMGR32_