home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 April / PCWorld_2008-04_cd.bin / temacd / devc++ / devcpp-4.9.9.2_setup.exe / cfgmgr32.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  38KB  |  1,534 lines

  1. /*
  2.  * cfgmgr32.h
  3.  *
  4.  * PnP configuration manager
  5.  *
  6.  * This file is part of the w32api package.
  7.  *
  8.  * Contributors:
  9.  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
  10.  *
  11.  * THIS SOFTWARE IS NOT COPYRIGHTED
  12.  *
  13.  * This source code is offered for use in the public domain. You may
  14.  * use, modify or distribute it freely.
  15.  *
  16.  * This code is distributed in the hope that it will be useful but
  17.  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18.  * DISCLAIMED. This includes but is not limited to warranties of
  19.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20.  *
  21.  */
  22.  
  23. #ifndef __CFGMGR32_H
  24. #define __CFGMGR32_H
  25.  
  26. #if __GNUC__ >=3
  27. #pragma GCC system_header
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #include "ntddk.h"
  35.  
  36. #if defined(_CFGMGR32_)
  37. #define CMAPI DECLSPEC_EXPORT
  38. #else
  39. #define CMAPI DECLSPEC_IMPORT
  40. #endif
  41.  
  42. #include "cfg.h"
  43.  
  44. #include <pshpack1.h>
  45.  
  46. #define CR_SUCCESS                              0x00000000
  47. #define CR_DEFAULT                        0x00000001
  48. #define CR_OUT_OF_MEMORY                  0x00000002
  49. #define CR_INVALID_POINTER                0x00000003
  50. #define CR_INVALID_FLAG                   0x00000004
  51. #define CR_INVALID_DEVNODE                0x00000005
  52. #define CR_INVALID_DEVINST                      CR_INVALID_DEVNODE
  53. #define CR_INVALID_RES_DES                0x00000006
  54. #define CR_INVALID_LOG_CONF               0x00000007
  55. #define CR_INVALID_ARBITRATOR             0x00000008
  56. #define CR_INVALID_NODELIST               0x00000009
  57. #define CR_DEVNODE_HAS_REQS               0x0000000A
  58. #define CR_DEVINST_HAS_REQS                     CR_DEVNODE_HAS_REQS
  59. #define CR_INVALID_RESOURCEID             0x0000000B
  60. #define CR_DLVXD_NOT_FOUND                0x0000000C
  61. #define CR_NO_SUCH_DEVNODE                0x0000000D
  62. #define CR_NO_SUCH_DEVINST                      CR_NO_SUCH_DEVNODE
  63. #define CR_NO_MORE_LOG_CONF               0x0000000E
  64. #define CR_NO_MORE_RES_DES                0x0000000F
  65. #define CR_ALREADY_SUCH_DEVNODE           0x00000010
  66. #define CR_ALREADY_SUCH_DEVINST                 CR_ALREADY_SUCH_DEVNODE
  67. #define CR_INVALID_RANGE_LIST             0x00000011
  68. #define CR_INVALID_RANGE                  0x00000012
  69. #define CR_FAILURE                        0x00000013
  70. #define CR_NO_SUCH_LOGICAL_DEV            0x00000014
  71. #define CR_CREATE_BLOCKED                 0x00000015
  72. #define CR_NOT_SYSTEM_VM                  0x00000016
  73. #define CR_REMOVE_VETOED                  0x00000017
  74. #define CR_APM_VETOED                     0x00000018
  75. #define CR_INVALID_LOAD_TYPE              0x00000019
  76. #define CR_BUFFER_SMALL                   0x0000001A
  77. #define CR_NO_ARBITRATOR                  0x0000001B
  78. #define CR_NO_REGISTRY_HANDLE             0x0000001C
  79. #define CR_REGISTRY_ERROR                 0x0000001D
  80. #define CR_INVALID_DEVICE_ID              0x0000001E
  81. #define CR_INVALID_DATA                   0x0000001F
  82. #define CR_INVALID_API                    0x00000020
  83. #define CR_DEVLOADER_NOT_READY            0x00000021
  84. #define CR_NEED_RESTART                   0x00000022
  85. #define CR_NO_MORE_HW_PROFILES            0x00000023
  86. #define CR_DEVICE_NOT_THERE               0x00000024
  87. #define CR_NO_SUCH_VALUE                  0x00000025
  88. #define CR_WRONG_TYPE                     0x00000026
  89. #define CR_INVALID_PRIORITY               0x00000027
  90. #define CR_NOT_DISABLEABLE                0x00000028
  91. #define CR_FREE_RESOURCES                 0x00000029
  92. #define CR_QUERY_VETOED                   0x0000002A
  93. #define CR_CANT_SHARE_IRQ                 0x0000002B
  94. #define CR_NO_DEPENDENT                   0x0000002C
  95. #define CR_SAME_RESOURCES                 0x0000002D
  96. #define CR_NO_SUCH_REGISTRY_KEY           0x0000002E
  97. #define CR_INVALID_MACHINENAME            0x0000002F
  98. #define CR_REMOTE_COMM_FAILURE            0x00000030
  99. #define CR_MACHINE_UNAVAILABLE            0x00000031
  100. #define CR_NO_CM_SERVICES                 0x00000032
  101. #define CR_ACCESS_DENIED                  0x00000033
  102. #define CR_CALL_NOT_IMPLEMENTED           0x00000034
  103. #define CR_INVALID_PROPERTY               0x00000035
  104. #define CR_DEVICE_INTERFACE_ACTIVE        0x00000036
  105. #define CR_NO_SUCH_DEVICE_INTERFACE       0x00000037
  106. #define CR_INVALID_REFERENCE_STRING       0x00000038
  107. #define CR_INVALID_CONFLICT_LIST          0x00000039
  108. #define CR_INVALID_INDEX                  0x0000003A
  109. #define CR_INVALID_STRUCTURE_SIZE         0x0000003B
  110.  
  111.  
  112. typedef DWORD RETURN_TYPE;
  113. typedef RETURN_TYPE    CONFIGRET;
  114.  
  115. typedef HANDLE HMACHINE;
  116. typedef HMACHINE *PHMACHINE;
  117.  
  118. typedef DWORD_PTR RES_DES;
  119. typedef RES_DES *PRES_DES;
  120.  
  121. typedef DWORD_PTR RANGE_ELEMENT;
  122. typedef RANGE_ELEMENT *PRANGE_ELEMENT;
  123.  
  124. typedef ULONG_PTR CONFLICT_LIST;
  125. typedef CONFLICT_LIST *PCONFLICT_LIST;
  126.  
  127. typedef DWORD_PTR LOG_CONF;
  128. typedef LOG_CONF *PLOG_CONF;
  129.  
  130. typedef ULONG PRIORITY;
  131. typedef PRIORITY *PPRIORITY;
  132.  
  133. typedef DWORD_PTR RANGE_LIST;
  134. typedef RANGE_LIST *PRANGE_LIST;
  135.  
  136. typedef DWORD DEVNODE, DEVINST;
  137. typedef DEVNODE *PDEVNODE, *PDEVINST;
  138.  
  139. typedef CHAR *DEVNODEID_A, *DEVINSTID_A;
  140. typedef WCHAR *DEVNODEID_W, *DEVINSTID_W;
  141.  
  142. #ifdef UNICODE
  143. typedef DEVNODEID_W DEVNODEID;
  144. typedef DEVINSTID_W DEVINSTID;
  145. #else
  146. typedef DEVNODEID_A DEVNODEID;
  147. typedef DEVINSTID_A DEVINSTID;
  148. #endif
  149.  
  150. typedef ULONG REGDISPOSITION;
  151.  
  152. typedef ULONG RESOURCEID;
  153. typedef RESOURCEID *PRESOURCEID;
  154.  
  155. #define CM_RESDES_WIDTH_DEFAULT                     0x00000000
  156. #define CM_RESDES_WIDTH_32                          0x00000001
  157. #define CM_RESDES_WIDTH_64                          0x00000002
  158. #define CM_RESDES_WIDTH_BITS                        0x00000003
  159.  
  160.  
  161. #define MAX_CONFIG_VALUE                              9999
  162. #define MAX_INSTANCE_VALUE                            9999
  163.  
  164. #define MAX_DEVICE_ID_LEN                             200
  165. #define MAX_DEVNODE_ID_LEN                            MAX_DEVICE_ID_LEN
  166.  
  167. #define MAX_CLASS_NAME_LEN                            32
  168. #define MAX_GUID_STRING_LEN                           39
  169. #define MAX_PROFILE_LEN                               80
  170.  
  171.  
  172. #define ResType_All                       0x00000000
  173. #define ResType_None                      0x00000000
  174. #define ResType_Mem                       0x00000001
  175. #define ResType_IO                        0x00000002
  176. #define ResType_DMA                       0x00000003
  177. #define ResType_IRQ                       0x00000004
  178. #define ResType_DoNotUse                  0x00000005
  179. #define ResType_BusNumber                 0x00000006
  180. #define ResType_MAX                       0x00000006
  181. #define ResType_Ignored_Bit               0x00008000
  182. #define ResType_ClassSpecific             0x0000FFFF
  183. #define ResType_Reserved                  0x00008000
  184. #define ResType_DevicePrivate             0x00008001
  185. #define ResType_PcCardConfig              0x00008002
  186. #define ResType_MfCardConfig              0x00008003
  187.  
  188. #define CM_GETIDLIST_FILTER_NONE                  0x00000000
  189. #define CM_GETIDLIST_FILTER_ENUMERATOR        0x00000001
  190. #define CM_GETIDLIST_FILTER_SERVICE           0x00000002
  191. #define CM_GETIDLIST_FILTER_EJECTRELATIONS    0x00000004
  192. #define CM_GETIDLIST_FILTER_REMOVALRELATIONS  0x00000008
  193. #define CM_GETIDLIST_FILTER_POWERRELATIONS    0x00000010
  194. #define CM_GETIDLIST_FILTER_BUSRELATIONS      0x00000020
  195. #define CM_GETIDLIST_DONOTGENERATE            0x10000040
  196. #define CM_GETIDLIST_FILTER_BITS              0x1000007F
  197.  
  198. #define CM_GET_DEVICE_INTERFACE_LIST_PRESENT         0x00000000
  199. #define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES     0x00000001
  200. #define CM_GET_DEVICE_INTERFACE_LIST_BITS            0x00000001
  201.  
  202.  
  203. typedef struct BusNumber_Des_s {
  204.   DWORD  BUSD_Count;
  205.   DWORD  BUSD_Type;
  206.   DWORD  BUSD_Flags;
  207.   ULONG  BUSD_Alloc_Base;
  208.   ULONG  BUSD_Alloc_End;
  209. } BUSNUMBER_DES, *PBUSNUMBER_DES;
  210.  
  211. typedef struct BusNumber_Range_s {
  212.   ULONG  BUSR_Min;
  213.   ULONG  BUSR_Max;
  214.   ULONG  BUSR_nBusNumbers;
  215.   ULONG  BUSR_Flags;
  216. } BUSNUMBER_RANGE, *PBUSNUMBER_RANGE;
  217.  
  218. #define BusNumberType_Range sizeof(BUSNUMBER_RANGE)
  219.  
  220. typedef struct BusNumber_Resource_s {
  221.   BUSNUMBER_DES  BusNumber_Header;
  222.   BUSNUMBER_RANGE  BusNumber_Data[ANYSIZE_ARRAY];
  223. } BUSNUMBER_RESOURCE, *PBUSNUMBER_RESOURCE;
  224.  
  225. typedef struct CS_Des_s {
  226.   DWORD  CSD_SignatureLength;
  227.   DWORD  CSD_LegacyDataOffset;
  228.   DWORD  CSD_LegacyDataSize;
  229.   DWORD  CSD_Flags;
  230.   GUID  CSD_ClassGuid;
  231.   BYTE  CSD_Signature[ANYSIZE_ARRAY];
  232. } CS_DES, *PCS_DES;
  233.  
  234. typedef struct CS_Resource_s {
  235.   CS_DES  CS_Header;
  236. } CS_RESOURCE, *PCS_RESOURCE;
  237.  
  238. typedef struct DevPrivate_Des_s {
  239.   DWORD  PD_Count;
  240.   DWORD  PD_Type;
  241.   DWORD  PD_Data1;
  242.   DWORD  PD_Data2;
  243.   DWORD  PD_Data3;
  244.   DWORD  PD_Flags;
  245. } DEVPRIVATE_DES, *PDEVPRIVATE_DES;
  246.  
  247. typedef struct DevPrivate_Range_s {
  248.     DWORD  PR_Data1;
  249.     DWORD  PR_Data2;
  250.     DWORD  PR_Data3;
  251. } DEVPRIVATE_RANGE, *PDEVPRIVATE_RANGE;
  252.  
  253. #define PType_Range sizeof(DEVPRIVATE_RANGE)
  254.  
  255. typedef struct DevPrivate_Resource_s {
  256.   DEVPRIVATE_DES  PRV_Header;
  257.   DEVPRIVATE_RANGE  PRV_Data[ANYSIZE_ARRAY];
  258. } DEVPRIVATE_RESOURCE, *PDEVPRIVATE_RESOURCE;
  259.  
  260. /* DMA_DES.DD_Flags constants and masks */
  261. #define mDD_Width                                         0x3
  262. #define fDD_BYTE                                          0x0
  263. #define fDD_WORD                                          0x1
  264. #define fDD_DWORD                                         0x2
  265. #define fDD_BYTE_AND_WORD                                 0x3
  266.  
  267. #define mDD_BusMaster                                     0x4
  268. #define fDD_NoBusMaster                                   0x0
  269. #define fDD_BusMaster                                     0x4
  270.  
  271. #define mDD_Type                                             0x18
  272. #define fDD_TypeStandard                                     0x00
  273. #define fDD_TypeA                                            0x08
  274. #define fDD_TypeB                                            0x10
  275. #define fDD_TypeF                                            0x18
  276.  
  277. typedef struct DMA_Des_s {
  278.   DWORD  DD_Count;
  279.   DWORD  DD_Type;
  280.   DWORD  DD_Flags;
  281.   ULONG  DD_Alloc_Chan;
  282. } DMA_DES, *PDMA_DES;
  283.  
  284. typedef struct DMA_Range_s {
  285.   ULONG  DR_Min;
  286.   ULONG  DR_Max;
  287.   ULONG  DR_Flags;
  288. } DMA_RANGE, *PDMA_RANGE;
  289.  
  290. #define DType_Range sizeof(DMA_RANGE)
  291.  
  292. typedef struct DMA_Resource_s {
  293.   DMA_DES  DMA_Header;
  294.   DMA_RANGE  DMA_Data[ANYSIZE_ARRAY];
  295. } DMA_RESOURCE, *PDMA_RESOURCE;
  296.  
  297. /* IO_DES.Type constants and masks */
  298. #define fIOD_PortType                                       0x1
  299. #define fIOD_Memory                                         0x0
  300. #define fIOD_IO                                             0x1
  301. #define fIOD_DECODE                                         0x00fc
  302. #define fIOD_10_BIT_DECODE                            0x0004
  303. #define fIOD_12_BIT_DECODE                            0x0008
  304. #define fIOD_16_BIT_DECODE                            0x0010
  305. #define fIOD_POSITIVE_DECODE                          0x0020
  306. #define fIOD_PASSIVE_DECODE                           0x0040
  307. #define fIOD_WINDOW_DECODE                            0x0080
  308.  
  309. typedef struct IO_Des_s {
  310.   DWORD  IOD_Count;
  311.   DWORD  IOD_Type;
  312.   DWORDLONG  IOD_Alloc_Base;
  313.   DWORDLONG  IOD_Alloc_End;
  314.   DWORD  IOD_DesFlags;
  315. } IO_DES, *PIO_DES;
  316.  
  317. /* IO_RANGE.IOR_Alias constants */
  318. #define IO_ALIAS_10_BIT_DECODE                  0x00000004
  319. #define IO_ALIAS_12_BIT_DECODE                  0x00000010
  320. #define IO_ALIAS_16_BIT_DECODE                  0x00000000
  321. #define IO_ALIAS_POSITIVE_DECODE                0x000000FF
  322.  
  323. typedef struct IO_Range_s {
  324.   DWORDLONG  IOR_Align;
  325.   DWORD  IOR_nPorts;
  326.   DWORDLONG  IOR_Min;
  327.   DWORDLONG  IOR_Max;
  328.   DWORD  IOR_RangeFlags;
  329.   DWORDLONG  IOR_Alias;
  330. } IO_RANGE, *PIO_RANGE;
  331.  
  332. #define IOType_Range sizeof(IO_RANGE)
  333.  
  334. typedef struct IO_Resource_s {
  335.   IO_DES  IO_Header;
  336.   IO_RANGE  IO_Data[ANYSIZE_ARRAY];
  337. } IO_RESOURCE, *PIO_RESOURCE;
  338.  
  339. /* IRQ_DES.IRQD_flags constants */
  340. #define mIRQD_Share                                        0x1
  341. #define fIRQD_Exclusive                                    0x0
  342. #define fIRQD_Share                                        0x1
  343.  
  344. #define fIRQD_Share_Bit                                    0
  345. #define fIRQD_Level_Bit                                  1
  346.  
  347. #define mIRQD_Edge_Level                                   0x2
  348. #define fIRQD_Level                                        0x0
  349. #define fIRQD_Edge                                         0x2
  350.  
  351. typedef struct IRQ_Des_32_s {
  352.   DWORD  IRQD_Count;
  353.   DWORD  IRQD_Type;
  354.   DWORD  IRQD_Flags;
  355.   ULONG  IRQD_Alloc_Num;
  356.   ULONG32  IRQD_Affinity;
  357. } IRQ_DES_32, *PIRQ_DES_32;
  358.  
  359. typedef struct IRQ_Des_64_s {
  360.   DWORD  IRQD_Count;
  361.   DWORD  IRQD_Type;
  362.   DWORD  IRQD_Flags;
  363.   ULONG  IRQD_Alloc_Num;
  364.   ULONG64  IRQD_Affinity;
  365. } IRQ_DES_64, *PIRQ_DES_64;
  366.  
  367. #ifdef _WIN64
  368. typedef IRQ_DES_64 IRQ_DES;
  369. typedef PIRQ_DES_64 PIRQ_DES;
  370. #else
  371. typedef IRQ_DES_32 IRQ_DES;
  372. typedef PIRQ_DES_32 PIRQ_DES;
  373. #endif
  374.  
  375. typedef struct IRQ_Range_s {
  376.   ULONG  IRQR_Min;
  377.   ULONG  IRQR_Max;
  378.   ULONG  IRQR_Flags;
  379. } IRQ_RANGE, *PIRQ_RANGE;
  380.  
  381. #define IRQType_Range sizeof(IRQ_RANGE)
  382.  
  383. typedef struct IRQ_Resource_s {
  384.   IRQ_DES  IRQ_Header;
  385.   IRQ_RANGE  IRQ_Data[ANYSIZE_ARRAY];
  386. } IRQ_RESOURCE, *PIRQ_RESOURCE;
  387.  
  388. /* MEM_DES.MD_Flags constants */
  389. #define mMD_MemoryType              0x1
  390. #define fMD_MemoryType              mMD_MemoryType
  391. #define fMD_ROM                     0x0
  392. #define fMD_RAM                     0x1
  393.  
  394. #define mMD_32_24                   0x2
  395. #define fMD_32_24                   mMD_32_24
  396. #define fMD_24                      0x0
  397. #define fMD_32                      0x2
  398.  
  399. #define mMD_Prefetchable            0x4
  400. #define fMD_Prefetchable            mMD_Prefetchable
  401. #define fMD_Pref                    mMD_Prefetchable
  402. #define fMD_PrefetchDisallowed      0x0
  403. #define fMD_PrefetchAllowed         0x4
  404.  
  405. #define mMD_Readable                0x8
  406. #define fMD_Readable                mMD_Readable
  407. #define fMD_ReadAllowed             0x0
  408. #define fMD_ReadDisallowed          0x8
  409.  
  410. #define mMD_CombinedWrite           0x10
  411. #define fMD_CombinedWrite           mMD_CombinedWrite
  412. #define fMD_CombinedWriteDisallowed 0x0
  413. #define fMD_CombinedWriteAllowed    0x10
  414.  
  415. #define mMD_Cacheable               0x20
  416. #define fMD_NonCacheable            0x0
  417. #define fMD_Cacheable               0x20
  418.  
  419. typedef struct Mem_Des_s {
  420.   DWORD  MD_Count;
  421.   DWORD  MD_Type;
  422.   DWORDLONG  MD_Alloc_Base;
  423.   DWORDLONG  MD_Alloc_End;
  424.   DWORD  MD_Flags;
  425.   DWORD  MD_Reserved;
  426. } MEM_DES, *PMEM_DES;
  427.  
  428. typedef struct Mem_Range_s {
  429.   DWORDLONG  MR_Align;
  430.   ULONG  MR_nBytes;
  431.   DWORDLONG  MR_Min;
  432.   DWORDLONG  MR_Max;
  433.   DWORD  MR_Flags;
  434.   DWORD  MR_Reserved;
  435. } MEM_RANGE, *PMEM_RANGE;
  436.  
  437. #define MType_Range sizeof(MEM_RANGE)
  438.  
  439. typedef struct Mem_Resource_s {
  440.   MEM_DES  MEM_Header;
  441.   MEM_RANGE  MEM_Data[ANYSIZE_ARRAY];
  442. } MEM_RESOURCE, *PMEM_RESOURCE;
  443.  
  444. /* MFCARD_DES.PMF_Flags constants */
  445. #define fPMF_AUDIO_ENABLE                               0x8
  446. #define mPMF_AUDIO_ENABLE                               fPMF_AUDIO_ENABLE
  447.  
  448. typedef struct MfCard_Des_s {
  449.   DWORD  PMF_Count;
  450.   DWORD  PMF_Type;
  451.   DWORD  PMF_Flags;
  452.   BYTE  PMF_ConfigOptions;
  453.   BYTE  PMF_IoResourceIndex;
  454.   BYTE  PMF_Reserved[2];
  455.   DWORD  PMF_ConfigRegisterBase;
  456. } MFCARD_DES, *PMFCARD_DES;
  457.  
  458. typedef struct MfCard_Resource_s {
  459.   MFCARD_DES  MfCard_Header;
  460. } MFCARD_RESOURCE, *PMFCARD_RESOURCE;
  461.  
  462. /* PCCARD_DES.PCD_Flags constants */
  463.  
  464. typedef struct PcCard_Des_s {
  465.   DWORD  PCD_Count;
  466.   DWORD  PCD_Type;
  467.   DWORD  PCD_Flags;
  468.   BYTE  PCD_ConfigIndex;
  469.   BYTE  PCD_Reserved[3];
  470.   DWORD  PCD_MemoryCardBase1;
  471.   DWORD  PCD_MemoryCardBase2;
  472. } PCCARD_DES, *PPCCARD_DES;
  473.  
  474. #define mPCD_IO_8_16                                    0x1
  475. #define fPCD_IO_8                                       0x0
  476. #define fPCD_IO_16                                      0x1
  477. #define mPCD_MEM_8_16                                   0x2
  478. #define fPCD_MEM_8                                      0x0
  479. #define fPCD_MEM_16                                     0x2
  480. #define mPCD_MEM_A_C                                    0xC
  481. #define fPCD_MEM1_A                                     0x4
  482. #define fPCD_MEM2_A                                     0x8
  483. #define fPCD_IO_ZW_8                                    0x10
  484. #define fPCD_IO_SRC_16                                  0x20
  485. #define fPCD_IO_WS_16                                   0x40
  486. #define mPCD_MEM_WS                                     0x300
  487. #define fPCD_MEM_WS_ONE                                 0x100
  488. #define fPCD_MEM_WS_TWO                                 0x200
  489. #define fPCD_MEM_WS_THREE                               0x300
  490.  
  491. #define fPCD_MEM_A                                      0x4
  492.  
  493. #define fPCD_ATTRIBUTES_PER_WINDOW                 0x8000
  494.  
  495. #define fPCD_IO1_16                                     0x00010000
  496. #define fPCD_IO1_ZW_8                                   0x00020000
  497. #define fPCD_IO1_SRC_16                                 0x00040000
  498. #define fPCD_IO1_WS_16                                  0x00080000
  499.  
  500. #define fPCD_IO2_16                                     0x00100000
  501. #define fPCD_IO2_ZW_8                                   0x00200000
  502. #define fPCD_IO2_SRC_16                                 0x00400000
  503. #define fPCD_IO2_WS_16                                  0x00800000
  504.  
  505. #define mPCD_MEM1_WS                                    0x03000000
  506. #define fPCD_MEM1_WS_ONE                                0x01000000
  507. #define fPCD_MEM1_WS_TWO                                0x02000000
  508. #define fPCD_MEM1_WS_THREE                              0x03000000
  509. #define fPCD_MEM1_16                                    0x04000000
  510.  
  511. #define mPCD_MEM2_WS                                    0x30000000
  512. #define fPCD_MEM2_WS_ONE                                0x10000000
  513. #define fPCD_MEM2_WS_TWO                                0x20000000
  514. #define fPCD_MEM2_WS_THREE                              0x30000000
  515. #define fPCD_MEM2_16                                    0x40000000
  516.  
  517. #define PCD_MAX_MEMORY                                       2
  518. #define PCD_MAX_IO                                           2
  519.  
  520. typedef struct PcCard_Resource_s {
  521.   PCCARD_DES  PcCard_Header;
  522. } PCCARD_RESOURCE, *PPCCARD_RESOURCE;
  523.  
  524.  
  525. /* CONFLICT_DETAILS.CD.ulMask constants */
  526. #define CM_CDMASK_DEVINST                              0x00000001
  527. #define CM_CDMASK_RESDES                               0x00000002
  528. #define CM_CDMASK_FLAGS                                0x00000004
  529. #define CM_CDMASK_DESCRIPTION                          0x00000008
  530. #define CM_CDMASK_VALID                              0x0000000F
  531.  
  532. /* CONFLICT_DETAILS.CD.ulFlags constants */
  533. #define CM_CDFLAGS_DRIVER                              0x00000001
  534. #define CM_CDFLAGS_ROOT_OWNED                          0x00000002
  535. #define CM_CDFLAGS_RESERVED                            0x00000004
  536.  
  537. typedef struct _CONFLICT_DETAILS_A {
  538.   ULONG  CD_ulSize;
  539.   ULONG  CD_ulMask;
  540.   DEVINST  CD_dnDevInst;
  541.   RES_DES  CD_rdResDes;
  542.   ULONG  CD_ulFlags;
  543.   CHAR  CD_szDescription[MAX_PATH];
  544. } CONFLICT_DETAILS_A , *PCONFLICT_DETAILS_A;
  545.  
  546. typedef struct _CONFLICT_DETAILS_W {
  547.   ULONG  CD_ulSize;
  548.   ULONG  CD_ulMask;
  549.   DEVINST  CD_dnDevInst;
  550.   RES_DES  CD_rdResDes;
  551.   ULONG  CD_ulFlags;
  552.   WCHAR  CD_szDescription[MAX_PATH];
  553. } CONFLICT_DETAILS_W , *PCONFLICT_DETAILS_W;
  554.  
  555. #ifdef UNICODE
  556. typedef CONFLICT_DETAILS_W CONFLICT_DETAILS;
  557. typedef PCONFLICT_DETAILS_W PCONFLICT_DETAILS;
  558. #else
  559. typedef CONFLICT_DETAILS_A CONFLICT_DETAILS;
  560. typedef PCONFLICT_DETAILS_A PCONFLICT_DETAILS;
  561. #endif
  562.  
  563.  
  564.  
  565. /* CM_Add_Empty_Log_Conf.ulFlags constants */
  566. #define PRIORITY_EQUAL_FIRST                          0x00000008
  567. #define PRIORITY_EQUAL_LAST                           0x00000000
  568. #define PRIORITY_BIT                                  0x00000008
  569.  
  570. CMAPI
  571. CONFIGRET
  572. WINAPI
  573. CM_Add_Empty_Log_Conf(
  574.   OUT PLOG_CONF  plcLogConf,
  575.   IN DEVINST  dnDevInst,
  576.   IN PRIORITY  Priority,
  577.   IN ULONG  ulFlags);
  578.  
  579. CMAPI
  580. CONFIGRET
  581. WINAPI
  582. CM_Add_Empty_Log_Conf_Ex(
  583.   OUT PLOG_CONF  plcLogConf,
  584.   IN DEVINST  dnDevInst,
  585.   IN PRIORITY  Priority,
  586.   IN ULONG  ulFlags,
  587.   IN HMACHINE  hMachine);
  588.  
  589. /* CM_Add_ID.ulFlags constants */
  590. #define CM_ADD_ID_HARDWARE                  0x00000000
  591. #define CM_ADD_ID_COMPATIBLE              0x00000001
  592. #define CM_ADD_ID_BITS                    0x00000001
  593.  
  594. CMAPI
  595. CONFIGRET
  596. WINAPI
  597. CM_Add_IDA(
  598.   IN DEVINST  dnDevInst,
  599.   IN PSTR  pszID,
  600.   IN ULONG  ulFlags,
  601.   IN HMACHINE  hMachine);
  602.  
  603. CMAPI
  604. CONFIGRET
  605. WINAPI
  606. CM_Add_ID_ExA(
  607.   IN DEVINST  dnDevInst,
  608.   IN PSTR  pszID,
  609.   IN ULONG  ulFlags,
  610.   IN HMACHINE  hMachine);
  611.  
  612. CMAPI
  613. CONFIGRET
  614. WINAPI
  615. CM_Add_ID_ExW(
  616.   IN DEVINST  dnDevInst,
  617.   IN PWSTR  pszID,
  618.   IN ULONG  ulFlags,
  619.   IN HMACHINE  hMachine);
  620.  
  621. CMAPI
  622. CONFIGRET
  623. WINAPI
  624. CM_Add_IDW(
  625.   IN DEVINST  dnDevInst,
  626.   IN PWSTR  pszID,
  627.   IN ULONG  ulFlags,
  628.   IN HMACHINE  hMachine);
  629.  
  630. #ifdef UNICODE
  631. #define CM_Add_ID CM_Add_IDW
  632. #define CM_Add_ID_Ex CM_Add_ID_ExW
  633. #else
  634. #define CM_Add_ID CM_Add_IDA
  635. #define CM_Add_ID_Ex CM_Add_ID_ExA
  636. #endif /* UNICODE */
  637.  
  638. /* FIXME: Obsolete CM_Add_Range */
  639.  
  640. CMAPI
  641. CONFIGRET
  642. WINAPI
  643. CM_Add_Res_Des(
  644.   OUT PRES_DES  prdResDes,
  645.   IN LOG_CONF  lcLogConf,
  646.   IN RESOURCEID  ResourceID,
  647.   IN PCVOID  ResourceData,
  648.   IN ULONG  ResourceLen,
  649.   IN ULONG  ulFlags);
  650.  
  651. CMAPI
  652. CONFIGRET
  653. WINAPI
  654. CM_Add_Res_Des_Ex(
  655.   OUT PRES_DES  prdResDes,
  656.   IN LOG_CONF  lcLogConf,
  657.   IN RESOURCEID  ResourceID,
  658.   IN PCVOID  ResourceData,
  659.   IN ULONG  ResourceLen,
  660.   IN ULONG  ulFlags,
  661.   IN HMACHINE  hMachine);
  662.  
  663. CMAPI
  664. CONFIGRET
  665. WINAPI
  666. CM_Connect_MachineA(
  667.   IN PCSTR  UNCServerName,
  668.   OUT PHMACHINE  phMachine);
  669.  
  670. CMAPI
  671. CONFIGRET
  672. WINAPI
  673. CM_Connect_MachineW(
  674.   IN PCWSTR  UNCServerName,
  675.   OUT PHMACHINE  phMachine);
  676.  
  677. #ifdef UNICODE
  678. #define CM_Connect_Machine CM_Connect_MachineW
  679. #else
  680. #define CM_Connect_Machine CM_Connect_MachineA
  681. #endif /* UNICODE */
  682.  
  683. /* FIXME: Obsolete CM_Create_DevNode */
  684. /* FIXME: Obsolete CM_Create_DevNodeEx */
  685. /* FIXME: Obsolete CM_Create_Range_List */
  686. /* FIXME: Obsolete CM_Delete_Class_Key */
  687. /* FIXME: Obsolete CM_Delete_Class_Key_Ex */
  688. /* FIXME: Obsolete CM_Delete_DevNode_Key */
  689. /* FIXME: Obsolete CM_Delete_DevNode_Key_Ex */
  690. /* FIXME: Obsolete CM_Delete_Range */
  691. /* FIXME: Obsolete CM_Detected_Resource_Conflict */
  692. /* FIXME: Obsolete CM_Detected_Resource_Conflict_Ex */
  693. /* FIXME: Obsolete CM_Disable_DevNode */
  694. /* FIXME: Obsolete CM_Disable_DevNodeEx */
  695.  
  696. CMAPI
  697. CONFIGRET
  698. WINAPI
  699. CM_Disconnect_Machine(
  700.   IN HMACHINE  hMachine); 
  701.  
  702. /* FIXME: Obsolete CM_Enable_DevNode */
  703. /* FIXME: Obsolete CM_Enable_DevNodeEx */
  704.  
  705. CMAPI
  706. CONFIGRET
  707. WINAPI
  708. CM_Enumerate_Classes(
  709.   IN ULONG  ulClassIndex,
  710.   OUT LPGUID  ClassGuid,
  711.   IN ULONG  ulFlags);
  712.  
  713. CMAPI
  714. CONFIGRET
  715. WINAPI
  716. CM_Enumerate_Classes_Ex(
  717.   IN ULONG  ulClassIndex,
  718.   OUT LPGUID  ClassGuid,
  719.   IN ULONG  ulFlags,
  720.   IN HMACHINE  hMachine);
  721.  
  722. CMAPI
  723. CONFIGRET
  724. WINAPI
  725. CM_Enumerate_EnumeratorsA(
  726.   IN ULONG  ulEnumIndex,
  727.   OUT PCHAR  Buffer,
  728.   IN OUT PULONG  pulLength,
  729.   IN ULONG  ulFlags);
  730.  
  731. CMAPI
  732. CONFIGRET
  733. WINAPI
  734. CM_Enumerate_Enumerators_ExA(
  735.   IN ULONG  ulEnumIndex,
  736.   OUT PCHAR  Buffer,
  737.   IN OUT PULONG  pulLength,
  738.   IN ULONG  ulFlags,
  739.   IN HMACHINE  hMachine);
  740.  
  741. CMAPI
  742. CONFIGRET
  743. WINAPI
  744. CM_Enumerate_Enumerators_ExW(
  745.   IN ULONG  ulEnumIndex,
  746.   OUT PWCHAR  Buffer,
  747.   IN OUT PULONG  pulLength,
  748.   IN ULONG  ulFlags,
  749.   IN HMACHINE  hMachine);
  750.  
  751. CMAPI
  752. CONFIGRET
  753. WINAPI
  754. CM_Enumerate_EnumeratorsW(
  755.   IN ULONG  ulEnumIndex,
  756.   OUT PWCHAR  Buffer,
  757.   IN OUT PULONG  pulLength,
  758.   IN ULONG  ulFlags);
  759.  
  760. #ifdef UNICODE
  761. #define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsW
  762. #define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW
  763. #else
  764. #define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsA
  765. #define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW
  766. #endif /* UNICODE */
  767.  
  768. /* FIXME: Obsolete CM_Find_Range */
  769. /* FIXME: Obsolete CM_First_Range */
  770.  
  771. CMAPI
  772. CONFIGRET
  773. WINAPI
  774. CM_Free_Log_Conf(
  775.   IN LOG_CONF  lcLogConfToBeFreed,
  776.   IN ULONG  ulFlags);
  777.  
  778. CMAPI
  779. CONFIGRET
  780. WINAPI
  781. CM_Free_Log_Conf_Ex(
  782.   IN LOG_CONF  lcLogConfToBeFreed,
  783.   IN ULONG  ulFlags,
  784.   IN HMACHINE  hMachine);
  785.  
  786. CMAPI
  787. CONFIGRET
  788. WINAPI
  789. CM_Free_Log_Conf_Handle(
  790.   IN LOG_CONF  lcLogConf);
  791.  
  792. /* FIXME: Obsolete CM_Free_Range_List */
  793.  
  794. CMAPI
  795. CONFIGRET
  796. WINAPI
  797. CM_Free_Res_Des(
  798.   OUT PRES_DES  prdResDes,
  799.   IN RES_DES  rdResDes,
  800.   IN ULONG  ulFlags);
  801.  
  802. CMAPI
  803. CONFIGRET
  804. WINAPI
  805. CM_Free_Res_Des_Ex(
  806.   OUT PRES_DES  prdResDes,
  807.   IN RES_DES  rdResDes,
  808.   IN ULONG  ulFlags,
  809.   IN HMACHINE  hMachine);
  810.  
  811. CMAPI
  812. CONFIGRET
  813. WINAPI
  814. CM_Free_Res_Des_Handle(
  815.   IN RES_DES  rdResDes);
  816.  
  817. CMAPI
  818. CONFIGRET
  819. WINAPI
  820. CM_Free_Resource_Conflict_Handle(
  821.   IN CONFLICT_LIST  clConflictList);
  822.  
  823. CMAPI
  824. CONFIGRET
  825. WINAPI
  826. CM_Get_Child(
  827.   OUT PDEVINST  pdnDevInst,
  828.   IN DEVINST  dnDevInst,
  829.   IN ULONG  ulFlags);
  830.  
  831. CMAPI
  832. CONFIGRET
  833. WINAPI
  834. CM_Get_Child_Ex(
  835.   OUT PDEVINST  pdnDevInst,
  836.   IN DEVINST  dnDevInst,
  837.   IN ULONG  ulFlags,
  838.   IN HMACHINE  hMachine);
  839.  
  840. /* FIXME: Obsolete CM_Get_Class_Name */
  841. /* FIXME: Obsolete CM_Get_Class_Name_Ex */
  842. /* FIXME: Obsolete CM_Get_Class_Key_Name */
  843. /* FIXME: Obsolete CM_Get_Class_Key_Name_Ex */
  844. /* FIXME: Obsolete CM_Get_Class_Registry_Property */
  845.  
  846. CMAPI
  847. CONFIGRET
  848. WINAPI
  849. CM_Get_Depth(
  850.   OUT PULONG  pulDepth,
  851.   IN DEVINST  dnDevInst,
  852.   IN ULONG  ulFlags);
  853.  
  854. CMAPI
  855. CONFIGRET
  856. WINAPI
  857. CM_Get_Depth_Ex(
  858.   OUT PULONG  pulDepth,
  859.   IN DEVINST  dnDevInst,
  860.   IN ULONG  ulFlags,
  861.   IN HMACHINE  hMachine);
  862.  
  863. CMAPI
  864. CONFIGRET
  865. WINAPI
  866. CM_Get_Device_IDA(
  867.   IN DEVINST  dnDevInst,
  868.   OUT PCHAR  Buffer,
  869.   IN ULONG  BufferLen,
  870.   IN ULONG  ulFlags);
  871.  
  872. CMAPI
  873. CONFIGRET
  874. WINAPI
  875. CM_Get_Device_ID_ExA(
  876.   IN DEVINST  dnDevInst,
  877.   OUT PCHAR  Buffer,
  878.   IN ULONG  BufferLen,
  879.   IN ULONG  ulFlags,
  880.   IN HMACHINE  hMachine);
  881.  
  882. CMAPI
  883. CONFIGRET
  884. WINAPI
  885. CM_Get_Device_ID_ExW(
  886.   IN DEVINST  dnDevInst,
  887.   OUT PWCHAR  Buffer,
  888.   IN ULONG  BufferLen,
  889.   IN ULONG  ulFlags,
  890.   IN HMACHINE  hMachine);
  891.  
  892. CMAPI
  893. CONFIGRET
  894. WINAPI
  895. CM_Get_Device_IDW(
  896.   IN DEVINST  dnDevInst,
  897.   OUT PWCHAR  Buffer,
  898.   IN ULONG  BufferLen,
  899.   IN ULONG  ulFlags);
  900.  
  901. #ifdef UNICODE
  902. #define CM_Get_Device_ID CM_Get_Device_IDW
  903. #define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW
  904. #else
  905. #define CM_Get_Device_ID CM_Get_Device_IDA
  906. #define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW
  907. #endif /* UNICODE */
  908.  
  909. CMAPI
  910. CONFIGRET
  911. WINAPI
  912. CM_Get_Device_ID_ListA(
  913.   IN PCSTR  pszFilter,  OPTIONAL
  914.   OUT PCHAR  Buffer,
  915.   IN ULONG  BufferLen,
  916.   IN ULONG  ulFlags);
  917.  
  918. CMAPI
  919. CONFIGRET
  920. WINAPI
  921. CM_Get_Device_ID_List_ExA(
  922.   IN PCSTR  pszFilter,  OPTIONAL
  923.   OUT PCHAR  Buffer,
  924.   IN ULONG  BufferLen,
  925.   IN ULONG  ulFlags,
  926.   IN HMACHINE  hMachine);
  927.  
  928. CMAPI
  929. CONFIGRET
  930. WINAPI
  931. CM_Get_Device_ID_List_ExW(
  932.   IN PCWSTR  pszFilter,  OPTIONAL
  933.   OUT PWCHAR  Buffer,
  934.   IN ULONG  BufferLen,
  935.   IN ULONG  ulFlags,
  936.   IN HMACHINE  hMachine);
  937.  
  938. CMAPI
  939. CONFIGRET
  940. WINAPI
  941. CM_Get_Device_ID_ListW(
  942.   IN PCWSTR  pszFilter,  OPTIONAL
  943.   OUT PWCHAR  Buffer,
  944.   IN ULONG  BufferLen,
  945.   IN ULONG  ulFlags);
  946.  
  947. #ifdef UNICODE
  948. #define CM_Get_Device_ID_List CM_Get_Device_ID_ListW
  949. #define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExW
  950. #else
  951. #define CM_Get_Device_ID_List CM_Get_Device_ID_ListA
  952. #define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExA
  953. #endif /* UNICODE */
  954.  
  955. CMAPI
  956. CONFIGRET
  957. WINAPI
  958. CM_Get_Device_ID_List_SizeA(
  959.   OUT PULONG  pulLen,
  960.   IN PCSTR  pszFilter,  OPTIONAL
  961.   IN ULONG  ulFlags);
  962.  
  963. CMAPI
  964. CONFIGRET
  965. WINAPI
  966. CM_Get_Device_ID_List_Size_ExA(
  967.   OUT PULONG  pulLen,
  968.   IN PCSTR  pszFilter,  OPTIONAL
  969.   IN ULONG  ulFlags,
  970.   IN HMACHINE  hMachine);
  971.  
  972. CMAPI
  973. CONFIGRET
  974. WINAPI
  975. CM_Get_Device_ID_List_Size_ExW(
  976.   OUT PULONG  pulLen,
  977.   IN PCWSTR  pszFilter,  OPTIONAL
  978.   IN ULONG  ulFlags,
  979.   IN HMACHINE  hMachine);
  980.  
  981. CMAPI
  982. CONFIGRET
  983. WINAPI
  984. CM_Get_Device_ID_List_SizeW(
  985.   OUT PULONG  pulLen,
  986.   IN PCWSTR  pszFilter,  OPTIONAL
  987.   IN ULONG  ulFlags);
  988.  
  989. #ifdef UNICODE
  990. #define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeW
  991. #define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExW
  992. #else
  993. #define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeA
  994. #define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExA
  995. #endif /* UNICODE */
  996.  
  997. CMAPI
  998. CONFIGRET
  999. WINAPI
  1000. CM_Get_Device_ID_Size(
  1001.   OUT PULONG  pulLen,
  1002.   IN DEVINST  dnDevInst,
  1003.   IN ULONG  ulFlags);
  1004.  
  1005. CMAPI
  1006. CONFIGRET
  1007. WINAPI
  1008. CM_Get_Device_ID_Size_Ex(
  1009.   OUT PULONG  pulLen,
  1010.   IN DEVINST  dnDevInst,
  1011.   IN ULONG  ulFlags,
  1012.   IN HMACHINE  hMachine);
  1013.  
  1014. /* FIXME: Obsolete CM_Get_Device_Interface_Alias */
  1015. /* FIXME: Obsolete CM_Get_Device_Interface_Alias_Ex */
  1016. /* FIXME: Obsolete CM_Get_Device_Interface_List */
  1017. /* FIXME: Obsolete CM_Get_Device_Interface_List_Ex */
  1018. /* FIXME: Obsolete CM_Get_Device_Interface_List_Size */
  1019. /* FIXME: Obsolete CM_Get_Device_Interface_List_Size_Ex */
  1020. /* FIXME: Obsolete CM_Get_DevNode_Custom_Property */
  1021. /* FIXME: Obsolete CM_Get_DevNode_Custom_Property_Ex */
  1022. /* FIXME: Obsolete CM_Get_DevNode_Registry_Property */
  1023.  
  1024. CMAPI
  1025. CONFIGRET
  1026. WINAPI
  1027. CM_Get_DevNode_Status(
  1028.   OUT PULONG  pulStatus,
  1029.   OUT PULONG  pulProblemNumber,
  1030.   IN DEVINST  dnDevInst,
  1031.   IN ULONG  ulFlags);
  1032.  
  1033. CMAPI
  1034. CONFIGRET
  1035. WINAPI
  1036. CM_Get_DevNode_Status_Ex(
  1037.   OUT PULONG  pulStatus,
  1038.   OUT PULONG  pulProblemNumber,
  1039.   IN DEVINST  dnDevInst,
  1040.   IN ULONG  ulFlags,
  1041.   IN HMACHINE  hMachine);
  1042.  
  1043. #define CM_Get_DevInst_Status CM_Get_DevNode_Status
  1044. #define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex
  1045.  
  1046. /* CM_Get_First_Log_Conf.ulFlags constants */
  1047. #define BASIC_LOG_CONF    0x00000000  /* Specifies the req list. */
  1048. #define FILTERED_LOG_CONF 0x00000001  /* Specifies the filtered req list. */
  1049. #define ALLOC_LOG_CONF    0x00000002  /* Specifies the Alloc Element. */
  1050. #define BOOT_LOG_CONF     0x00000003  /* Specifies the RM Alloc Element. */
  1051. #define FORCED_LOG_CONF   0x00000004  /* Specifies the Forced Log Conf */
  1052. #define OVERRIDE_LOG_CONF 0x00000005  /* Specifies the Override req list. */
  1053. #define NUM_LOG_CONF      0x00000006  /* Number of Log Conf type */
  1054. #define LOG_CONF_BITS     0x00000007  /* The bits of the log conf type. */
  1055.  
  1056. CMAPI
  1057. CONFIGRET
  1058. WINAPI
  1059. CM_Get_First_Log_Conf(
  1060.   OUT PLOG_CONF  plcLogConf,  OPTIONAL
  1061.   IN DEVINST  dnDevInst,
  1062.   IN ULONG  ulFlags);
  1063.  
  1064. CMAPI
  1065. CONFIGRET
  1066. WINAPI
  1067. CM_Get_First_Log_Conf_Ex(
  1068.   OUT PLOG_CONF  plcLogConf,  OPTIONAL
  1069.   IN DEVINST  dnDevInst,
  1070.   IN ULONG  ulFlags,
  1071.   IN HMACHINE  hMachine);
  1072.  
  1073. /* FIXME: Obsolete CM_Get_Global_State */
  1074. /* FIXME: Obsolete CM_Get_Global_State_Ex */
  1075. /* FIXME: Obsolete CM_Get_Hardware_Profile_Info */
  1076. /* FIXME: Obsolete CM_Get_Hardware_Profile_Info_Ex */
  1077. /* FIXME: Obsolete CM_Get_HW_Prof_Flags */
  1078. /* FIXME: Obsolete CM_Get_HW_Prof_Flags_Ex */
  1079.  
  1080. CMAPI
  1081. CONFIGRET
  1082. WINAPI
  1083. CM_Get_Log_Conf_Priority(
  1084.   IN LOG_CONF  lcLogConf,
  1085.   OUT PPRIORITY  pPriority,
  1086.   IN ULONG  ulFlags);
  1087.  
  1088. CMAPI
  1089. CONFIGRET
  1090. WINAPI
  1091. CM_Get_Log_Conf_Priority_Ex(
  1092.   IN LOG_CONF  lcLogConf,
  1093.   OUT PPRIORITY  pPriority,
  1094.   IN ULONG  ulFlags,
  1095.   IN HMACHINE  hMachine);
  1096.  
  1097. CMAPI
  1098. CONFIGRET
  1099. WINAPI
  1100. CM_Get_Next_Log_Conf(
  1101.   OUT PLOG_CONF  plcLogConf,  OPTIONAL
  1102.   IN LOG_CONF  lcLogConf,
  1103.   IN ULONG  ulFlags);
  1104.  
  1105. CMAPI
  1106. CONFIGRET
  1107. WINAPI
  1108. CM_Get_Next_Log_Conf_Ex(
  1109.   OUT PLOG_CONF  plcLogConf,  OPTIONAL
  1110.   IN LOG_CONF  lcLogConf,
  1111.   IN ULONG  ulFlags,
  1112.   IN HMACHINE  hMachine);
  1113.  
  1114. CMAPI
  1115. CONFIGRET
  1116. WINAPI
  1117. CM_Get_Next_Res_Des(
  1118.   OUT PRES_DES  prdResDes,
  1119.   IN RES_DES  rdResDes,
  1120.   IN RESOURCEID  ForResource,
  1121.   OUT PRESOURCEID  pResourceID,
  1122.   IN ULONG  ulFlags);
  1123.  
  1124. CMAPI
  1125. CONFIGRET
  1126. WINAPI
  1127. CM_Get_Next_Res_Des_Ex(
  1128.   OUT PRES_DES  prdResDes,
  1129.   IN RES_DES  rdResDes,
  1130.   IN RESOURCEID  ForResource,
  1131.   OUT PRESOURCEID  pResourceID,
  1132.   IN ULONG  ulFlags,
  1133.   IN HMACHINE  hMachine);
  1134.  
  1135. CMAPI
  1136. CONFIGRET
  1137. WINAPI
  1138. CM_Get_Parent(
  1139.   OUT PDEVINST  pdnDevInst,
  1140.   IN DEVINST  dnDevInst,
  1141.   IN ULONG  ulFlags);
  1142.  
  1143. CMAPI
  1144. CONFIGRET
  1145. WINAPI
  1146. CM_Get_Parent_Ex(
  1147.   OUT PDEVINST  pdnDevInst,
  1148.   IN DEVINST  dnDevInst,
  1149.   IN ULONG  ulFlags,
  1150.   IN HMACHINE  hMachine);
  1151.  
  1152. CMAPI
  1153. CONFIGRET
  1154. WINAPI
  1155. CM_Get_Res_Des_Data(
  1156.   IN RES_DES  rdResDes,
  1157.   OUT PVOID  Buffer,
  1158.   IN ULONG  BufferLen,
  1159.   IN ULONG  ulFlags);
  1160.  
  1161. CMAPI
  1162. CONFIGRET
  1163. WINAPI
  1164. CM_Get_Res_Des_Data_Ex(
  1165.   IN RES_DES  rdResDes,
  1166.   OUT PVOID  Buffer,
  1167.   IN ULONG  BufferLen,
  1168.   IN ULONG  ulFlags,
  1169.   IN HMACHINE  hMachine);
  1170.  
  1171. CMAPI
  1172. CONFIGRET
  1173. WINAPI
  1174. CM_Get_Res_Des_Data_Size(
  1175.   OUT PULONG  pulSize,
  1176.   IN RES_DES  rdResDes,
  1177.   IN ULONG  ulFlags);
  1178.  
  1179. CMAPI
  1180. CONFIGRET
  1181. WINAPI
  1182. CM_Get_Res_Des_Data_Size_Ex(
  1183.   OUT PULONG  pulSize,
  1184.   IN RES_DES  rdResDes,
  1185.   IN ULONG  ulFlags,
  1186.   IN HMACHINE  hMachine);
  1187.  
  1188. CMAPI
  1189. CONFIGRET
  1190. WINAPI
  1191. CM_Get_Resource_Conflict_Count(
  1192.   IN CONFLICT_LIST  clConflictList,
  1193.   OUT PULONG  pulCount);
  1194.  
  1195. CMAPI
  1196. CONFIGRET
  1197. WINAPI
  1198. CM_Get_Resource_Conflict_DetailsA(
  1199.   IN CONFLICT_LIST  clConflictList,
  1200.   IN ULONG  ulIndex,
  1201.   IN OUT PCONFLICT_DETAILS_A  pConflictDetails);
  1202.  
  1203. CMAPI
  1204. CONFIGRET
  1205. WINAPI
  1206. CM_Get_Resource_Conflict_DetailsW(
  1207.   IN CONFLICT_LIST  clConflictList,
  1208.   IN ULONG  ulIndex,
  1209.   IN OUT PCONFLICT_DETAILS_W  pConflictDetails);
  1210.  
  1211. #ifdef UNICODE
  1212. #define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsW
  1213. #else
  1214. #define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsA
  1215. #endif /* UNICODE */
  1216.  
  1217. CMAPI
  1218. CONFIGRET
  1219. WINAPI
  1220. CM_Get_Sibling(
  1221.   OUT PDEVINST  pdnDevInst,
  1222.   IN DEVINST  DevInst,
  1223.   IN ULONG  ulFlags);
  1224.  
  1225. CMAPI
  1226. CONFIGRET
  1227. WINAPI
  1228. CM_Get_Sibling_Ex(
  1229.   OUT PDEVINST  pdnDevInst,
  1230.   IN DEVINST  DevInst,
  1231.   IN ULONG  ulFlags,
  1232.   IN HMACHINE  hMachine);
  1233.  
  1234. CMAPI
  1235. WORD
  1236. WINAPI
  1237. CM_Get_Version(
  1238.   VOID);
  1239.  
  1240. CMAPI
  1241. WORD
  1242. WINAPI
  1243. CM_Get_Version_Ex(
  1244.   IN HMACHINE  hMachine);
  1245.  
  1246. /* FIXME: Obsolete CM_Intersect_Range_List */
  1247. /* FIXME: Obsolete CM_Invert_Range_List */
  1248. /* FIXME: Obsolete CM_Is_Dock_Station_Present */
  1249. /* FIXME: Obsolete CM_Is_Dock_Station_Present_Ex */
  1250.  
  1251. /* CM_Locate_DevNode.ulFlags constants */
  1252. #define CM_LOCATE_DEVNODE_NORMAL               0x00000000
  1253. #define CM_LOCATE_DEVNODE_PHANTOM              0x00000001
  1254. #define CM_LOCATE_DEVNODE_CANCELREMOVE         0x00000002
  1255. #define CM_LOCATE_DEVNODE_NOVALIDATION         0x00000004
  1256. #define CM_LOCATE_DEVNODE_BITS                 0x00000007
  1257.  
  1258. #define CM_LOCATE_DEVINST_NORMAL               CM_LOCATE_DEVNODE_NORMAL
  1259. #define CM_LOCATE_DEVINST_PHANTOM              CM_LOCATE_DEVNODE_PHANTOM
  1260. #define CM_LOCATE_DEVINST_CANCELREMOVE         CM_LOCATE_DEVNODE_CANCELREMOVE
  1261. #define CM_LOCATE_DEVINST_NOVALIDATION         CM_LOCATE_DEVNODE_NOVALIDATION
  1262. #define CM_LOCATE_DEVINST_BITS                 CM_LOCATE_DEVNODE_BITS
  1263.  
  1264. CMAPI
  1265. CONFIGRET
  1266. WINAPI
  1267. CM_Locate_DevNodeA(
  1268.   OUT PDEVINST  pdnDevInst,
  1269.   IN DEVINSTID_A  pDeviceID,  OPTIONAL
  1270.   IN ULONG  ulFlags);
  1271.  
  1272. CMAPI
  1273. CONFIGRET
  1274. WINAPI
  1275. CM_Locate_DevNode_ExA(
  1276.   OUT PDEVINST  pdnDevInst,
  1277.   IN DEVINSTID_A  pDeviceID,  OPTIONAL
  1278.   IN ULONG  ulFlags,
  1279.   IN HMACHINE  hMachine);
  1280.  
  1281. CMAPI
  1282. CONFIGRET
  1283. WINAPI
  1284. CM_Locate_DevNode_ExW(
  1285.   OUT PDEVINST  pdnDevInst,
  1286.   IN DEVINSTID_W  pDeviceID,  OPTIONAL
  1287.   IN ULONG  ulFlags,
  1288.   IN HMACHINE  hMachine);
  1289.  
  1290. CMAPI
  1291. CONFIGRET
  1292. WINAPI
  1293. CM_Locate_DevNodeW(
  1294.   OUT PDEVINST  pdnDevInst,
  1295.   IN DEVINSTID_W  pDeviceID,  OPTIONAL
  1296.   IN ULONG  ulFlags);
  1297.  
  1298. #define CM_Locate_DevInstA CM_Locate_DevNodeA
  1299. #define CM_Locate_DevInstW CM_Locate_DevNodeW
  1300. #define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA
  1301. #define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW
  1302.  
  1303. #ifdef UNICODE
  1304. #define CM_Locate_DevNode CM_Locate_DevNodeW
  1305. #define CM_Locate_DevInst CM_Locate_DevNodeW
  1306. #define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExW
  1307. #define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExW
  1308. #else
  1309. #define CM_Locate_DevNode CM_Locate_DevNodeA
  1310. #define CM_Locate_DevInst CM_Locate_DevNodeA
  1311. #define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExA
  1312. #define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExA
  1313. #endif /* UNICODE */
  1314.  
  1315. /* FIXME: Obsolete CM_Merge_Range_List */
  1316.  
  1317. CMAPI
  1318. CONFIGRET
  1319. WINAPI
  1320. CM_Modify_Res_Des(
  1321.   OUT PRES_DES  prdResDes,
  1322.   IN RES_DES  rdResDes,
  1323.   IN RESOURCEID  ResourceID,
  1324.   IN PCVOID  ResourceData,
  1325.   IN ULONG  ResourceLen,
  1326.   IN ULONG  ulFlags);
  1327.  
  1328. CMAPI
  1329. CONFIGRET
  1330. WINAPI
  1331. CM_Modify_Res_Des_Ex(
  1332.   OUT PRES_DES  prdResDes,
  1333.   IN RES_DES  rdResDes,
  1334.   IN RESOURCEID  ResourceID,
  1335.   IN PCVOID  ResourceData,
  1336.   IN ULONG  ResourceLen,
  1337.   IN ULONG  ulFlags,
  1338.   IN HMACHINE  hMachine);
  1339.  
  1340. /* FIXME: Obsolete CM_Move_DevNode */
  1341. /* FIXME: Obsolete CM_Move_DevNode_Ex */
  1342. /* FIXME: Obsolete CM_Next_Range */
  1343. /* FIXME: Obsolete CM_Open_Class_Key */
  1344. /* FIXME: Obsolete CM_Open_Class_Key_Ex */
  1345. /* FIXME: Obsolete CM_Open_DevNode_Key */
  1346. /* FIXME: Obsolete CM_Open_DevNode_Key_Ex */
  1347.  
  1348. /* CM_Query_And_Remove_SubTree.ulFlags constants */
  1349. #define CM_REMOVE_UI_OK                         0x00000000
  1350. #define CM_REMOVE_UI_NOT_OK                     0x00000001
  1351. #define CM_REMOVE_NO_RESTART                    0x00000002
  1352. #define CM_REMOVE_BITS                          0x00000003
  1353.  
  1354. CMAPI
  1355. CONFIGRET
  1356. WINAPI
  1357. CM_Query_And_Remove_SubTreeA(
  1358.   IN  DEVINST dnAncestor,
  1359.   OUT PPNP_VETO_TYPE pVetoType,
  1360.   OUT LPSTR pszVetoName,
  1361.   IN  ULONG ulNameLength,
  1362.   IN  ULONG ulFlags);
  1363.  
  1364. CMAPI
  1365. CONFIGRET
  1366. WINAPI
  1367. CM_Query_And_Remove_SubTreeW(
  1368.   IN  DEVINST dnAncestor,
  1369.   OUT PPNP_VETO_TYPE pVetoType,
  1370.   OUT LPWSTR pszVetoName,
  1371.   IN  ULONG ulNameLength,
  1372.   IN  ULONG ulFlags);
  1373.  
  1374. CMAPI
  1375. CONFIGRET
  1376. WINAPI
  1377. CM_Query_And_Remove_SubTree_ExA(
  1378.   IN  DEVINST dnAncestor,
  1379.   OUT PPNP_VETO_TYPE pVetoType,
  1380.   OUT LPSTR pszVetoName,
  1381.   IN  ULONG ulNameLength,
  1382.   IN  ULONG ulFlags,
  1383.   IN  HMACHINE hMachine);
  1384.  
  1385. CMAPI
  1386. CONFIGRET
  1387. WINAPI
  1388. CM_Query_And_Remove_SubTree_ExW(
  1389.   IN  DEVINST dnAncestor,
  1390.   OUT PPNP_VETO_TYPE pVetoType,
  1391.   OUT LPWSTR pszVetoName,
  1392.   IN  ULONG ulNameLength,
  1393.   IN  ULONG ulFlags,
  1394.   IN  HMACHINE hMachine);
  1395.  
  1396. /* FIXME: Obsolete CM_Query_Arbitrator_Free_Data */
  1397. /* FIXME: Obsolete CM_Query_Arbitrator_Free_Data_Ex */
  1398. /* FIXME: Obsolete CM_Query_Arbitrator_Free_Size */
  1399. /* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */
  1400. /* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */
  1401. /* FIXME: Obsolete CM_Query_Remove_SubTree */
  1402. /* FIXME: Obsolete CM_Query_Remove_SubTree_Ex */
  1403.  
  1404. CMAPI
  1405. CONFIGRET
  1406. WINAPI
  1407. CM_Query_Resource_Conflict_List(
  1408.   OUT PCONFLICT_LIST  pclConflictList,
  1409.   IN DEVINST  dnDevInst,
  1410.   IN RESOURCEID  ResourceID,
  1411.   IN PCVOID  ResourceData,
  1412.   IN ULONG  ResourceLen,
  1413.   IN ULONG  ulFlags,
  1414.   IN HMACHINE  hMachine);
  1415.  
  1416. /* CM_Reenumerate_DevNode.ulFlags constants */
  1417. #define CM_REENUMERATE_NORMAL             0x00000000
  1418. #define CM_REENUMERATE_SYNCHRONOUS        0x00000001
  1419. #define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002
  1420. #define CM_REENUMERATE_ASYNCHRONOUS       0x00000004
  1421. #define CM_REENUMERATE_BITS               0x00000007
  1422.  
  1423. CMAPI
  1424. CONFIGRET
  1425. WINAPI
  1426. CM_Reenumerate_DevNode(
  1427.   IN DEVINST  dnDevInst,
  1428.   IN ULONG  ulFlags);
  1429.  
  1430. CMAPI
  1431. CONFIGRET
  1432. WINAPI
  1433. CM_Reenumerate_DevNode_Ex(
  1434.   IN DEVINST  dnDevInst,
  1435.   IN ULONG  ulFlags,
  1436.   IN HMACHINE  hMachine);
  1437.  
  1438. #define CM_Reenumerate_DevInst CM_Reenumerate_DevNode
  1439. #define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex
  1440.  
  1441. /* FIXME: Obsolete CM_Register_Device_Driver */
  1442. /* FIXME: Obsolete CM_Register_Device_Driver_Ex */
  1443. /* FIXME: Obsolete CM_Register_Device_Interface */
  1444. /* FIXME: Obsolete CM_Register_Device_Interface_Ex */
  1445. /* FIXME: Obsolete CM_Remove_SubTree */
  1446. /* FIXME: Obsolete CM_Remove_SubTree_Ex */
  1447.  
  1448. CMAPI
  1449. CONFIGRET
  1450. WINAPI
  1451. CM_Request_Device_EjectA(
  1452.   IN DEVINST  dnDevInst,
  1453.   OUT PPNP_VETO_TYPE  pVetoType,
  1454.   OUT LPSTR  pszVetoName,
  1455.   IN ULONG  ulNameLength,
  1456.   IN ULONG  ulFlags);
  1457.  
  1458. CMAPI
  1459. CONFIGRET
  1460. WINAPI
  1461. CM_Request_Device_Eject_ExW(
  1462.   IN DEVINST  dnDevInst,
  1463.   OUT PPNP_VETO_TYPE  pVetoType,
  1464.   OUT LPWSTR  pszVetoName,
  1465.   IN ULONG  ulNameLength,
  1466.   IN ULONG  ulFlags,
  1467.   IN HMACHINE  hMachine);
  1468.  
  1469. CMAPI
  1470. CONFIGRET
  1471. WINAPI
  1472. CM_Request_Device_Eject_ExA(
  1473.   IN DEVINST  dnDevInst,
  1474.   OUT PPNP_VETO_TYPE  pVetoType,
  1475.   OUT LPSTR  pszVetoName,
  1476.   IN ULONG  ulNameLength,
  1477.   IN ULONG  ulFlags,
  1478.   IN HMACHINE  hMachine);
  1479.  
  1480. CMAPI
  1481. CONFIGRET
  1482. WINAPI
  1483. CM_Request_Device_EjectW(
  1484.   IN DEVINST  dnDevInst,
  1485.   OUT PPNP_VETO_TYPE  pVetoType,
  1486.   OUT LPWSTR  pszVetoName,
  1487.   IN ULONG  ulNameLength,
  1488.   IN ULONG  ulFlags);
  1489.  
  1490. #ifdef UNICODE
  1491. #define CM_Request_Device_Eject CM_Request_Device_EjectW
  1492. #define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExW
  1493. #else
  1494. #define CM_Request_Device_Eject CM_Request_Device_EjectA
  1495. #define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExA
  1496. #endif /* UNICODE */
  1497.  
  1498. /* FIXME: Obsolete CM_Request_Eject_PC */
  1499. /* FIXME: Obsolete CM_Request_Eject_PC_Ex */
  1500. /* FIXME: Obsolete CM_Run_Detection */
  1501. /* FIXME: Obsolete CM_Run_Detection_Ex */
  1502. /* FIXME: Obsolete CM_Set_Class_Registry_Property */
  1503. /* FIXME: Obsolete CM_Set_DevNode_Problem */
  1504. /* FIXME: Obsolete CM_Set_DevNode_Problem_Ex */
  1505. /* FIXME: Obsolete CM_Set_DevNode_Registry_Property */
  1506. /* FIXME: Obsolete CM_Set_DevNode_Registry_Property_Ex */
  1507. /* FIXME: Obsolete CM_Set_HW_Prof */
  1508. /* FIXME: Obsolete CM_Set_HW_Prof_Ex */
  1509. /* FIXME: Obsolete CM_Set_HW_Prof_Flags */
  1510. /* FIXME: Obsolete CM_Set_HW_Prof_Flags_Ex */
  1511. /* FIXME: Obsolete CM_Setup_DevNode */
  1512. /* FIXME: Obsolete CM_Setup_DevNode_Ex */
  1513. /* FIXME: Obsolete CM_Test_Range_Available */
  1514. /* FIXME: Obsolete CM_Uninstall_DevNode */
  1515. /* FIXME: Obsolete CM_Uninstall_DevNode_Ex */
  1516. /* FIXME: Obsolete CM_Unregister_Device_Interface */
  1517. /* FIXME: Obsolete CM_Unregister_Device_Interface_Ex */
  1518.  
  1519. #define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents
  1520.  
  1521. CMAPI
  1522. DWORD
  1523. WINAPI
  1524. CMP_WaitNoPendingInstallEvents(
  1525.   IN DWORD dwTimeout);
  1526.  
  1527. #include <poppack.h>
  1528.  
  1529. #ifdef __cplusplus
  1530. }
  1531. #endif
  1532.  
  1533. #endif /* __CFGMGR32_H */
  1534.