Naveen Neel / shedskin
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers cfgmgr32.h Source File

cfgmgr32.h

00001 /*
00002  * cfgmgr32.h
00003  *
00004  * PnP configuration manager
00005  *
00006  * This file is part of the w32api package.
00007  *
00008  * Contributors:
00009  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
00010  *
00011  * THIS SOFTWARE IS NOT COPYRIGHTED
00012  *
00013  * This source code is offered for use in the public domain. You may
00014  * use, modify or distribute it freely.
00015  *
00016  * This code is distributed in the hope that it will be useful but
00017  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
00018  * DISCLAIMED. This includes but is not limited to warranties of
00019  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00020  *
00021  */
00022 
00023 #ifndef __CFGMGR32_H
00024 #define __CFGMGR32_H
00025 
00026 #if __GNUC__ >=3
00027 #pragma GCC system_header
00028 #endif
00029 
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033 
00034 #include "ntddk.h"
00035 
00036 #if defined(_CFGMGR32_)
00037 #define CMAPI DECLSPEC_EXPORT
00038 #else
00039 #define CMAPI DECLSPEC_IMPORT
00040 #endif
00041 
00042 #include "cfg.h"
00043 
00044 #include <pshpack1.h>
00045 
00046 #define CR_SUCCESS                              0x00000000
00047 #define CR_DEFAULT                        0x00000001
00048 #define CR_OUT_OF_MEMORY                  0x00000002
00049 #define CR_INVALID_POINTER                0x00000003
00050 #define CR_INVALID_FLAG                   0x00000004
00051 #define CR_INVALID_DEVNODE                0x00000005
00052 #define CR_INVALID_DEVINST                      CR_INVALID_DEVNODE
00053 #define CR_INVALID_RES_DES                0x00000006
00054 #define CR_INVALID_LOG_CONF               0x00000007
00055 #define CR_INVALID_ARBITRATOR             0x00000008
00056 #define CR_INVALID_NODELIST               0x00000009
00057 #define CR_DEVNODE_HAS_REQS               0x0000000A
00058 #define CR_DEVINST_HAS_REQS                     CR_DEVNODE_HAS_REQS
00059 #define CR_INVALID_RESOURCEID             0x0000000B
00060 #define CR_DLVXD_NOT_FOUND                0x0000000C
00061 #define CR_NO_SUCH_DEVNODE                0x0000000D
00062 #define CR_NO_SUCH_DEVINST                      CR_NO_SUCH_DEVNODE
00063 #define CR_NO_MORE_LOG_CONF               0x0000000E
00064 #define CR_NO_MORE_RES_DES                0x0000000F
00065 #define CR_ALREADY_SUCH_DEVNODE           0x00000010
00066 #define CR_ALREADY_SUCH_DEVINST                 CR_ALREADY_SUCH_DEVNODE
00067 #define CR_INVALID_RANGE_LIST             0x00000011
00068 #define CR_INVALID_RANGE                  0x00000012
00069 #define CR_FAILURE                        0x00000013
00070 #define CR_NO_SUCH_LOGICAL_DEV            0x00000014
00071 #define CR_CREATE_BLOCKED                 0x00000015
00072 #define CR_NOT_SYSTEM_VM                  0x00000016
00073 #define CR_REMOVE_VETOED                  0x00000017
00074 #define CR_APM_VETOED                     0x00000018
00075 #define CR_INVALID_LOAD_TYPE              0x00000019
00076 #define CR_BUFFER_SMALL                   0x0000001A
00077 #define CR_NO_ARBITRATOR                  0x0000001B
00078 #define CR_NO_REGISTRY_HANDLE             0x0000001C
00079 #define CR_REGISTRY_ERROR                 0x0000001D
00080 #define CR_INVALID_DEVICE_ID              0x0000001E
00081 #define CR_INVALID_DATA                   0x0000001F
00082 #define CR_INVALID_API                    0x00000020
00083 #define CR_DEVLOADER_NOT_READY            0x00000021
00084 #define CR_NEED_RESTART                   0x00000022
00085 #define CR_NO_MORE_HW_PROFILES            0x00000023
00086 #define CR_DEVICE_NOT_THERE               0x00000024
00087 #define CR_NO_SUCH_VALUE                  0x00000025
00088 #define CR_WRONG_TYPE                     0x00000026
00089 #define CR_INVALID_PRIORITY               0x00000027
00090 #define CR_NOT_DISABLEABLE                0x00000028
00091 #define CR_FREE_RESOURCES                 0x00000029
00092 #define CR_QUERY_VETOED                   0x0000002A
00093 #define CR_CANT_SHARE_IRQ                 0x0000002B
00094 #define CR_NO_DEPENDENT                   0x0000002C
00095 #define CR_SAME_RESOURCES                 0x0000002D
00096 #define CR_NO_SUCH_REGISTRY_KEY           0x0000002E
00097 #define CR_INVALID_MACHINENAME            0x0000002F
00098 #define CR_REMOTE_COMM_FAILURE            0x00000030
00099 #define CR_MACHINE_UNAVAILABLE            0x00000031
00100 #define CR_NO_CM_SERVICES                 0x00000032
00101 #define CR_ACCESS_DENIED                  0x00000033
00102 #define CR_CALL_NOT_IMPLEMENTED           0x00000034
00103 #define CR_INVALID_PROPERTY               0x00000035
00104 #define CR_DEVICE_INTERFACE_ACTIVE        0x00000036
00105 #define CR_NO_SUCH_DEVICE_INTERFACE       0x00000037
00106 #define CR_INVALID_REFERENCE_STRING       0x00000038
00107 #define CR_INVALID_CONFLICT_LIST          0x00000039
00108 #define CR_INVALID_INDEX                  0x0000003A
00109 #define CR_INVALID_STRUCTURE_SIZE         0x0000003B
00110 
00111 
00112 typedef DWORD RETURN_TYPE;
00113 typedef RETURN_TYPE CONFIGRET;
00114 
00115 typedef HANDLE HMACHINE;
00116 typedef HMACHINE *PHMACHINE;
00117 
00118 typedef DWORD_PTR RES_DES;
00119 typedef RES_DES *PRES_DES;
00120 
00121 typedef DWORD_PTR RANGE_ELEMENT;
00122 typedef RANGE_ELEMENT *PRANGE_ELEMENT;
00123 
00124 typedef ULONG_PTR CONFLICT_LIST;
00125 typedef CONFLICT_LIST *PCONFLICT_LIST;
00126 
00127 typedef DWORD_PTR LOG_CONF;
00128 typedef LOG_CONF *PLOG_CONF;
00129 
00130 typedef ULONG PRIORITY;
00131 typedef PRIORITY *PPRIORITY;
00132 
00133 typedef DWORD_PTR RANGE_LIST;
00134 typedef RANGE_LIST *PRANGE_LIST;
00135 
00136 typedef DWORD DEVNODE, DEVINST;
00137 typedef DEVNODE *PDEVNODE, *PDEVINST;
00138 
00139 typedef CHAR *DEVNODEID_A, *DEVINSTID_A;
00140 typedef WCHAR *DEVNODEID_W, *DEVINSTID_W;
00141 
00142 #ifdef UNICODE
00143 typedef DEVNODEID_W DEVNODEID;
00144 typedef DEVINSTID_W DEVINSTID;
00145 #else
00146 typedef DEVNODEID_A DEVNODEID;
00147 typedef DEVINSTID_A DEVINSTID;
00148 #endif
00149 
00150 typedef ULONG REGDISPOSITION;
00151 
00152 typedef ULONG RESOURCEID;
00153 typedef RESOURCEID *PRESOURCEID;
00154 
00155 #define CM_RESDES_WIDTH_DEFAULT                     0x00000000
00156 #define CM_RESDES_WIDTH_32                          0x00000001
00157 #define CM_RESDES_WIDTH_64                          0x00000002
00158 #define CM_RESDES_WIDTH_BITS                        0x00000003
00159 
00160 
00161 #define MAX_CONFIG_VALUE                            9999
00162 #define MAX_INSTANCE_VALUE                          9999
00163 
00164 #define MAX_DEVICE_ID_LEN                           200
00165 #define MAX_DEVNODE_ID_LEN                          MAX_DEVICE_ID_LEN
00166 
00167 #define MAX_CLASS_NAME_LEN                          32
00168 #define MAX_GUID_STRING_LEN                         39
00169 #define MAX_PROFILE_LEN                             80
00170 
00171 
00172 #define ResType_All                       0x00000000
00173 #define ResType_None                      0x00000000
00174 #define ResType_Mem                       0x00000001
00175 #define ResType_IO                        0x00000002
00176 #define ResType_DMA                       0x00000003
00177 #define ResType_IRQ                       0x00000004
00178 #define ResType_DoNotUse                  0x00000005
00179 #define ResType_BusNumber                 0x00000006
00180 #define ResType_MAX                       0x00000006
00181 #define ResType_Ignored_Bit               0x00008000
00182 #define ResType_ClassSpecific             0x0000FFFF
00183 #define ResType_Reserved                  0x00008000
00184 #define ResType_DevicePrivate             0x00008001
00185 #define ResType_PcCardConfig              0x00008002
00186 #define ResType_MfCardConfig              0x00008003
00187 
00188 #define CM_GETIDLIST_FILTER_NONE                0x00000000
00189 #define CM_GETIDLIST_FILTER_ENUMERATOR        0x00000001
00190 #define CM_GETIDLIST_FILTER_SERVICE           0x00000002
00191 #define CM_GETIDLIST_FILTER_EJECTRELATIONS    0x00000004
00192 #define CM_GETIDLIST_FILTER_REMOVALRELATIONS  0x00000008
00193 #define CM_GETIDLIST_FILTER_POWERRELATIONS    0x00000010
00194 #define CM_GETIDLIST_FILTER_BUSRELATIONS      0x00000020
00195 #define CM_GETIDLIST_DONOTGENERATE            0x10000040
00196 #define CM_GETIDLIST_FILTER_BITS              0x1000007F
00197 
00198 #define CM_GET_DEVICE_INTERFACE_LIST_PRESENT        0x00000000
00199 #define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES    0x00000001
00200 #define CM_GET_DEVICE_INTERFACE_LIST_BITS           0x00000001
00201 
00202 
00203 typedef struct BusNumber_Des_s {
00204   DWORD  BUSD_Count;
00205   DWORD  BUSD_Type;
00206   DWORD  BUSD_Flags;
00207   ULONG  BUSD_Alloc_Base;
00208   ULONG  BUSD_Alloc_End;
00209 } BUSNUMBER_DES, *PBUSNUMBER_DES;
00210 
00211 typedef struct BusNumber_Range_s {
00212   ULONG  BUSR_Min;
00213   ULONG  BUSR_Max;
00214   ULONG  BUSR_nBusNumbers;
00215   ULONG  BUSR_Flags;
00216 } BUSNUMBER_RANGE, *PBUSNUMBER_RANGE;
00217 
00218 #define BusNumberType_Range sizeof(BUSNUMBER_RANGE)
00219 
00220 typedef struct BusNumber_Resource_s {
00221   BUSNUMBER_DES  BusNumber_Header;
00222   BUSNUMBER_RANGE  BusNumber_Data[ANYSIZE_ARRAY];
00223 } BUSNUMBER_RESOURCE, *PBUSNUMBER_RESOURCE;
00224 
00225 typedef struct CS_Des_s {
00226   DWORD  CSD_SignatureLength;
00227   DWORD  CSD_LegacyDataOffset;
00228   DWORD  CSD_LegacyDataSize;
00229   DWORD  CSD_Flags;
00230   GUID  CSD_ClassGuid;
00231   BYTE  CSD_Signature[ANYSIZE_ARRAY];
00232 } CS_DES, *PCS_DES;
00233 
00234 typedef struct CS_Resource_s {
00235   CS_DES  CS_Header;
00236 } CS_RESOURCE, *PCS_RESOURCE;
00237 
00238 typedef struct DevPrivate_Des_s {
00239   DWORD  PD_Count;
00240   DWORD  PD_Type;
00241   DWORD  PD_Data1;
00242   DWORD  PD_Data2;
00243   DWORD  PD_Data3;
00244   DWORD  PD_Flags;
00245 } DEVPRIVATE_DES, *PDEVPRIVATE_DES;
00246 
00247 typedef struct DevPrivate_Range_s {
00248     DWORD  PR_Data1;
00249     DWORD  PR_Data2;
00250     DWORD  PR_Data3;
00251 } DEVPRIVATE_RANGE, *PDEVPRIVATE_RANGE;
00252 
00253 #define PType_Range sizeof(DEVPRIVATE_RANGE)
00254 
00255 typedef struct DevPrivate_Resource_s {
00256   DEVPRIVATE_DES  PRV_Header;
00257   DEVPRIVATE_RANGE  PRV_Data[ANYSIZE_ARRAY];
00258 } DEVPRIVATE_RESOURCE, *PDEVPRIVATE_RESOURCE;
00259 
00260 /* DMA_DES.DD_Flags constants and masks */
00261 #define mDD_Width                                       0x3
00262 #define fDD_BYTE                                        0x0
00263 #define fDD_WORD                                        0x1
00264 #define fDD_DWORD                                       0x2
00265 #define fDD_BYTE_AND_WORD                               0x3
00266 
00267 #define mDD_BusMaster                                   0x4
00268 #define fDD_NoBusMaster                                 0x0
00269 #define fDD_BusMaster                                   0x4
00270 
00271 #define mDD_Type                                            0x18
00272 #define fDD_TypeStandard                                    0x00
00273 #define fDD_TypeA                                           0x08
00274 #define fDD_TypeB                                           0x10
00275 #define fDD_TypeF                                           0x18
00276 
00277 typedef struct DMA_Des_s {
00278   DWORD  DD_Count;
00279   DWORD  DD_Type;
00280   DWORD  DD_Flags;
00281   ULONG  DD_Alloc_Chan;
00282 } DMA_DES, *PDMA_DES;
00283 
00284 typedef struct DMA_Range_s {
00285   ULONG  DR_Min;
00286   ULONG  DR_Max;
00287   ULONG  DR_Flags;
00288 } DMA_RANGE, *PDMA_RANGE;
00289 
00290 #define DType_Range sizeof(DMA_RANGE)
00291 
00292 typedef struct DMA_Resource_s {
00293   DMA_DES  DMA_Header;
00294   DMA_RANGE  DMA_Data[ANYSIZE_ARRAY];
00295 } DMA_RESOURCE, *PDMA_RESOURCE;
00296 
00297 /* IO_DES.Type constants and masks */
00298 #define fIOD_PortType                                       0x1
00299 #define fIOD_Memory                                         0x0
00300 #define fIOD_IO                                             0x1
00301 #define fIOD_DECODE                                         0x00fc
00302 #define fIOD_10_BIT_DECODE                          0x0004
00303 #define fIOD_12_BIT_DECODE                          0x0008
00304 #define fIOD_16_BIT_DECODE                          0x0010
00305 #define fIOD_POSITIVE_DECODE                        0x0020
00306 #define fIOD_PASSIVE_DECODE                         0x0040
00307 #define fIOD_WINDOW_DECODE                          0x0080
00308 
00309 typedef struct IO_Des_s {
00310   DWORD  IOD_Count;
00311   DWORD  IOD_Type;
00312   DWORDLONG  IOD_Alloc_Base;
00313   DWORDLONG  IOD_Alloc_End;
00314   DWORD  IOD_DesFlags;
00315 } IO_DES, *PIO_DES;
00316 
00317 /* IO_RANGE.IOR_Alias constants */
00318 #define IO_ALIAS_10_BIT_DECODE                  0x00000004
00319 #define IO_ALIAS_12_BIT_DECODE                  0x00000010
00320 #define IO_ALIAS_16_BIT_DECODE                  0x00000000
00321 #define IO_ALIAS_POSITIVE_DECODE                0x000000FF
00322 
00323 typedef struct IO_Range_s {
00324   DWORDLONG  IOR_Align;
00325   DWORD  IOR_nPorts;
00326   DWORDLONG  IOR_Min;
00327   DWORDLONG  IOR_Max;
00328   DWORD  IOR_RangeFlags;
00329   DWORDLONG  IOR_Alias;
00330 } IO_RANGE, *PIO_RANGE;
00331 
00332 #define IOType_Range sizeof(IO_RANGE)
00333 
00334 typedef struct IO_Resource_s {
00335   IO_DES  IO_Header;
00336   IO_RANGE  IO_Data[ANYSIZE_ARRAY];
00337 } IO_RESOURCE, *PIO_RESOURCE;
00338 
00339 /* IRQ_DES.IRQD_flags constants */
00340 #define mIRQD_Share                                     0x1
00341 #define fIRQD_Exclusive                                 0x0
00342 #define fIRQD_Share                                     0x1
00343 
00344 #define fIRQD_Share_Bit                                 0
00345 #define fIRQD_Level_Bit                               1
00346 
00347 #define mIRQD_Edge_Level                                0x2
00348 #define fIRQD_Level                                     0x0
00349 #define fIRQD_Edge                                      0x2
00350 
00351 typedef struct IRQ_Des_32_s {
00352   DWORD  IRQD_Count;
00353   DWORD  IRQD_Type;
00354   DWORD  IRQD_Flags;
00355   ULONG  IRQD_Alloc_Num;
00356   ULONG32  IRQD_Affinity;
00357 } IRQ_DES_32, *PIRQ_DES_32;
00358 
00359 typedef struct IRQ_Des_64_s {
00360   DWORD  IRQD_Count;
00361   DWORD  IRQD_Type;
00362   DWORD  IRQD_Flags;
00363   ULONG  IRQD_Alloc_Num;
00364   ULONG64  IRQD_Affinity;
00365 } IRQ_DES_64, *PIRQ_DES_64;
00366 
00367 #ifdef _WIN64
00368 typedef IRQ_DES_64 IRQ_DES;
00369 typedef PIRQ_DES_64 PIRQ_DES;
00370 #else
00371 typedef IRQ_DES_32 IRQ_DES;
00372 typedef PIRQ_DES_32 PIRQ_DES;
00373 #endif
00374 
00375 typedef struct IRQ_Range_s {
00376   ULONG  IRQR_Min;
00377   ULONG  IRQR_Max;
00378   ULONG  IRQR_Flags;
00379 } IRQ_RANGE, *PIRQ_RANGE;
00380 
00381 #define IRQType_Range sizeof(IRQ_RANGE)
00382 
00383 typedef struct IRQ_Resource_s {
00384   IRQ_DES  IRQ_Header;
00385   IRQ_RANGE  IRQ_Data[ANYSIZE_ARRAY];
00386 } IRQ_RESOURCE, *PIRQ_RESOURCE;
00387 
00388 /* MEM_DES.MD_Flags constants */
00389 #define mMD_MemoryType              0x1
00390 #define fMD_MemoryType              mMD_MemoryType
00391 #define fMD_ROM                     0x0
00392 #define fMD_RAM                     0x1
00393 
00394 #define mMD_32_24                   0x2
00395 #define fMD_32_24                   mMD_32_24
00396 #define fMD_24                      0x0
00397 #define fMD_32                      0x2
00398 
00399 #define mMD_Prefetchable            0x4
00400 #define fMD_Prefetchable            mMD_Prefetchable
00401 #define fMD_Pref                    mMD_Prefetchable
00402 #define fMD_PrefetchDisallowed      0x0
00403 #define fMD_PrefetchAllowed         0x4
00404 
00405 #define mMD_Readable                0x8
00406 #define fMD_Readable                mMD_Readable
00407 #define fMD_ReadAllowed             0x0
00408 #define fMD_ReadDisallowed          0x8
00409 
00410 #define mMD_CombinedWrite           0x10
00411 #define fMD_CombinedWrite           mMD_CombinedWrite
00412 #define fMD_CombinedWriteDisallowed 0x0
00413 #define fMD_CombinedWriteAllowed    0x10
00414 
00415 #define mMD_Cacheable               0x20
00416 #define fMD_NonCacheable            0x0
00417 #define fMD_Cacheable               0x20
00418 
00419 typedef struct Mem_Des_s {
00420   DWORD  MD_Count;
00421   DWORD  MD_Type;
00422   DWORDLONG  MD_Alloc_Base;
00423   DWORDLONG  MD_Alloc_End;
00424   DWORD  MD_Flags;
00425   DWORD  MD_Reserved;
00426 } MEM_DES, *PMEM_DES;
00427 
00428 typedef struct Mem_Range_s {
00429   DWORDLONG  MR_Align;
00430   ULONG  MR_nBytes;
00431   DWORDLONG  MR_Min;
00432   DWORDLONG  MR_Max;
00433   DWORD  MR_Flags;
00434   DWORD  MR_Reserved;
00435 } MEM_RANGE, *PMEM_RANGE;
00436 
00437 #define MType_Range sizeof(MEM_RANGE)
00438 
00439 typedef struct Mem_Resource_s {
00440   MEM_DES  MEM_Header;
00441   MEM_RANGE  MEM_Data[ANYSIZE_ARRAY];
00442 } MEM_RESOURCE, *PMEM_RESOURCE;
00443 
00444 /* MFCARD_DES.PMF_Flags constants */
00445 #define fPMF_AUDIO_ENABLE                               0x8
00446 #define mPMF_AUDIO_ENABLE                               fPMF_AUDIO_ENABLE
00447 
00448 typedef struct MfCard_Des_s {
00449   DWORD  PMF_Count;
00450   DWORD  PMF_Type;
00451   DWORD  PMF_Flags;
00452   BYTE  PMF_ConfigOptions;
00453   BYTE  PMF_IoResourceIndex;
00454   BYTE  PMF_Reserved[2];
00455   DWORD  PMF_ConfigRegisterBase;
00456 } MFCARD_DES, *PMFCARD_DES;
00457 
00458 typedef struct MfCard_Resource_s {
00459   MFCARD_DES  MfCard_Header;
00460 } MFCARD_RESOURCE, *PMFCARD_RESOURCE;
00461 
00462 /* PCCARD_DES.PCD_Flags constants */
00463 
00464 typedef struct PcCard_Des_s {
00465   DWORD  PCD_Count;
00466   DWORD  PCD_Type;
00467   DWORD  PCD_Flags;
00468   BYTE  PCD_ConfigIndex;
00469   BYTE  PCD_Reserved[3];
00470   DWORD  PCD_MemoryCardBase1;
00471   DWORD  PCD_MemoryCardBase2;
00472 } PCCARD_DES, *PPCCARD_DES;
00473 
00474 #define mPCD_IO_8_16                                    0x1
00475 #define fPCD_IO_8                                       0x0
00476 #define fPCD_IO_16                                      0x1
00477 #define mPCD_MEM_8_16                                   0x2
00478 #define fPCD_MEM_8                                      0x0
00479 #define fPCD_MEM_16                                     0x2
00480 #define mPCD_MEM_A_C                                    0xC
00481 #define fPCD_MEM1_A                                     0x4
00482 #define fPCD_MEM2_A                                     0x8
00483 #define fPCD_IO_ZW_8                                    0x10
00484 #define fPCD_IO_SRC_16                                  0x20
00485 #define fPCD_IO_WS_16                                   0x40
00486 #define mPCD_MEM_WS                                     0x300
00487 #define fPCD_MEM_WS_ONE                                 0x100
00488 #define fPCD_MEM_WS_TWO                                 0x200
00489 #define fPCD_MEM_WS_THREE                               0x300
00490 
00491 #define fPCD_MEM_A                                      0x4
00492 
00493 #define fPCD_ATTRIBUTES_PER_WINDOW              0x8000
00494 
00495 #define fPCD_IO1_16                                     0x00010000
00496 #define fPCD_IO1_ZW_8                                   0x00020000
00497 #define fPCD_IO1_SRC_16                                 0x00040000
00498 #define fPCD_IO1_WS_16                                  0x00080000
00499 
00500 #define fPCD_IO2_16                                     0x00100000
00501 #define fPCD_IO2_ZW_8                                   0x00200000
00502 #define fPCD_IO2_SRC_16                                 0x00400000
00503 #define fPCD_IO2_WS_16                                  0x00800000
00504 
00505 #define mPCD_MEM1_WS                                    0x03000000
00506 #define fPCD_MEM1_WS_ONE                                0x01000000
00507 #define fPCD_MEM1_WS_TWO                                0x02000000
00508 #define fPCD_MEM1_WS_THREE                              0x03000000
00509 #define fPCD_MEM1_16                                    0x04000000
00510 
00511 #define mPCD_MEM2_WS                                    0x30000000
00512 #define fPCD_MEM2_WS_ONE                                0x10000000
00513 #define fPCD_MEM2_WS_TWO                                0x20000000
00514 #define fPCD_MEM2_WS_THREE                              0x30000000
00515 #define fPCD_MEM2_16                                    0x40000000
00516 
00517 #define PCD_MAX_MEMORY                                      2
00518 #define PCD_MAX_IO                                          2
00519 
00520 typedef struct PcCard_Resource_s {
00521   PCCARD_DES  PcCard_Header;
00522 } PCCARD_RESOURCE, *PPCCARD_RESOURCE;
00523 
00524 
00525 /* CONFLICT_DETAILS.CD.ulMask constants */
00526 #define CM_CDMASK_DEVINST                           0x00000001
00527 #define CM_CDMASK_RESDES                            0x00000002
00528 #define CM_CDMASK_FLAGS                             0x00000004
00529 #define CM_CDMASK_DESCRIPTION                       0x00000008
00530 #define CM_CDMASK_VALID                           0x0000000F
00531 
00532 /* CONFLICT_DETAILS.CD.ulFlags constants */
00533 #define CM_CDFLAGS_DRIVER                           0x00000001
00534 #define CM_CDFLAGS_ROOT_OWNED                       0x00000002
00535 #define CM_CDFLAGS_RESERVED                         0x00000004
00536 
00537 typedef struct _CONFLICT_DETAILS_A {
00538   ULONG  CD_ulSize;
00539   ULONG  CD_ulMask;
00540   DEVINST  CD_dnDevInst;
00541   RES_DES  CD_rdResDes;
00542   ULONG  CD_ulFlags;
00543   CHAR  CD_szDescription[MAX_PATH];
00544 } CONFLICT_DETAILS_A , *PCONFLICT_DETAILS_A;
00545 
00546 typedef struct _CONFLICT_DETAILS_W {
00547   ULONG  CD_ulSize;
00548   ULONG  CD_ulMask;
00549   DEVINST  CD_dnDevInst;
00550   RES_DES  CD_rdResDes;
00551   ULONG  CD_ulFlags;
00552   WCHAR  CD_szDescription[MAX_PATH];
00553 } CONFLICT_DETAILS_W , *PCONFLICT_DETAILS_W;
00554 
00555 #ifdef UNICODE
00556 typedef CONFLICT_DETAILS_W CONFLICT_DETAILS;
00557 typedef PCONFLICT_DETAILS_W PCONFLICT_DETAILS;
00558 #else
00559 typedef CONFLICT_DETAILS_A CONFLICT_DETAILS;
00560 typedef PCONFLICT_DETAILS_A PCONFLICT_DETAILS;
00561 #endif
00562 
00563 
00564 
00565 /* CM_Add_Empty_Log_Conf.ulFlags constants */
00566 #define PRIORITY_EQUAL_FIRST                        0x00000008
00567 #define PRIORITY_EQUAL_LAST                         0x00000000
00568 #define PRIORITY_BIT                                0x00000008
00569 
00570 CMAPI
00571 CONFIGRET
00572 WINAPI
00573 CM_Add_Empty_Log_Conf(
00574   /*OUT*/ PLOG_CONF  plcLogConf,
00575   /*IN*/ DEVINST  dnDevInst,
00576   /*IN*/ PRIORITY  Priority,
00577   /*IN*/ ULONG  ulFlags);
00578 
00579 CMAPI
00580 CONFIGRET
00581 WINAPI
00582 CM_Add_Empty_Log_Conf_Ex(
00583   /*OUT*/ PLOG_CONF  plcLogConf,
00584   /*IN*/ DEVINST  dnDevInst,
00585   /*IN*/ PRIORITY  Priority,
00586   /*IN*/ ULONG  ulFlags,
00587   /*IN*/ HMACHINE  hMachine);
00588 
00589 /* CM_Add_ID.ulFlags constants */
00590 #define CM_ADD_ID_HARDWARE                  0x00000000
00591 #define CM_ADD_ID_COMPATIBLE              0x00000001
00592 #define CM_ADD_ID_BITS                    0x00000001
00593 
00594 CMAPI
00595 CONFIGRET
00596 WINAPI
00597 CM_Add_IDA(
00598   /*IN*/ DEVINST  dnDevInst,
00599   /*IN*/ PSTR  pszID,
00600   /*IN*/ ULONG  ulFlags,
00601   /*IN*/ HMACHINE  hMachine);
00602 
00603 CMAPI
00604 CONFIGRET
00605 WINAPI
00606 CM_Add_ID_ExA(
00607   /*IN*/ DEVINST  dnDevInst,
00608   /*IN*/ PSTR  pszID,
00609   /*IN*/ ULONG  ulFlags,
00610   /*IN*/ HMACHINE  hMachine);
00611 
00612 CMAPI
00613 CONFIGRET
00614 WINAPI
00615 CM_Add_ID_ExW(
00616   /*IN*/ DEVINST  dnDevInst,
00617   /*IN*/ PWSTR  pszID,
00618   /*IN*/ ULONG  ulFlags,
00619   /*IN*/ HMACHINE  hMachine);
00620 
00621 CMAPI
00622 CONFIGRET
00623 WINAPI
00624 CM_Add_IDW(
00625   /*IN*/ DEVINST  dnDevInst,
00626   /*IN*/ PWSTR  pszID,
00627   /*IN*/ ULONG  ulFlags,
00628   /*IN*/ HMACHINE  hMachine);
00629 
00630 #ifdef UNICODE
00631 #define CM_Add_ID CM_Add_IDW
00632 #define CM_Add_ID_Ex CM_Add_ID_ExW
00633 #else
00634 #define CM_Add_ID CM_Add_IDA
00635 #define CM_Add_ID_Ex CM_Add_ID_ExA
00636 #endif /* UNICODE */
00637 
00638 /* FIXME: Obsolete CM_Add_Range */
00639 
00640 CMAPI
00641 CONFIGRET
00642 WINAPI
00643 CM_Add_Res_Des(
00644   /*OUT*/ PRES_DES  prdResDes,
00645   /*IN*/ LOG_CONF  lcLogConf,
00646   /*IN*/ RESOURCEID  ResourceID,
00647   /*IN*/ PCVOID  ResourceData,
00648   /*IN*/ ULONG  ResourceLen,
00649   /*IN*/ ULONG  ulFlags);
00650 
00651 CMAPI
00652 CONFIGRET
00653 WINAPI
00654 CM_Add_Res_Des_Ex(
00655   /*OUT*/ PRES_DES  prdResDes,
00656   /*IN*/ LOG_CONF  lcLogConf,
00657   /*IN*/ RESOURCEID  ResourceID,
00658   /*IN*/ PCVOID  ResourceData,
00659   /*IN*/ ULONG  ResourceLen,
00660   /*IN*/ ULONG  ulFlags,
00661   /*IN*/ HMACHINE  hMachine);
00662 
00663 CMAPI
00664 CONFIGRET
00665 WINAPI
00666 CM_Connect_MachineA(
00667   /*IN*/ PCSTR  UNCServerName,
00668   /*OUT*/ PHMACHINE  phMachine);
00669 
00670 CMAPI
00671 CONFIGRET
00672 WINAPI
00673 CM_Connect_MachineW(
00674   /*IN*/ PCWSTR  UNCServerName,
00675   /*OUT*/ PHMACHINE  phMachine);
00676 
00677 #ifdef UNICODE
00678 #define CM_Connect_Machine CM_Connect_MachineW
00679 #else
00680 #define CM_Connect_Machine CM_Connect_MachineA
00681 #endif /* UNICODE */
00682 
00683 /* FIXME: Obsolete CM_Create_DevNode */
00684 /* FIXME: Obsolete CM_Create_DevNodeEx */
00685 /* FIXME: Obsolete CM_Create_Range_List */
00686 /* FIXME: Obsolete CM_Delete_Class_Key */
00687 /* FIXME: Obsolete CM_Delete_Class_Key_Ex */
00688 /* FIXME: Obsolete CM_Delete_DevNode_Key */
00689 /* FIXME: Obsolete CM_Delete_DevNode_Key_Ex */
00690 /* FIXME: Obsolete CM_Delete_Range */
00691 /* FIXME: Obsolete CM_Detected_Resource_Conflict */
00692 /* FIXME: Obsolete CM_Detected_Resource_Conflict_Ex */
00693 /* FIXME: Obsolete CM_Disable_DevNode */
00694 /* FIXME: Obsolete CM_Disable_DevNodeEx */
00695 
00696 CMAPI
00697 CONFIGRET
00698 WINAPI
00699 CM_Disconnect_Machine(
00700   /*IN*/ HMACHINE  hMachine); 
00701 
00702 /* FIXME: Obsolete CM_Enable_DevNode */
00703 /* FIXME: Obsolete CM_Enable_DevNodeEx */
00704 
00705 CMAPI
00706 CONFIGRET
00707 WINAPI
00708 CM_Enumerate_Classes(
00709   /*IN*/ ULONG  ulClassIndex,
00710   /*OUT*/ LPGUID  ClassGuid,
00711   /*IN*/ ULONG  ulFlags);
00712 
00713 CMAPI
00714 CONFIGRET
00715 WINAPI
00716 CM_Enumerate_Classes_Ex(
00717   /*IN*/ ULONG  ulClassIndex,
00718   /*OUT*/ LPGUID  ClassGuid,
00719   /*IN*/ ULONG  ulFlags,
00720   /*IN*/ HMACHINE  hMachine);
00721 
00722 CMAPI
00723 CONFIGRET
00724 WINAPI
00725 CM_Enumerate_EnumeratorsA(
00726   /*IN*/ ULONG  ulEnumIndex,
00727   /*OUT*/ PCHAR  Buffer,
00728   /*IN OUT*/ PULONG  pulLength,
00729   /*IN*/ ULONG  ulFlags);
00730 
00731 CMAPI
00732 CONFIGRET
00733 WINAPI
00734 CM_Enumerate_Enumerators_ExA(
00735   /*IN*/ ULONG  ulEnumIndex,
00736   /*OUT*/ PCHAR  Buffer,
00737   /*IN OUT*/ PULONG  pulLength,
00738   /*IN*/ ULONG  ulFlags,
00739   /*IN*/ HMACHINE  hMachine);
00740 
00741 CMAPI
00742 CONFIGRET
00743 WINAPI
00744 CM_Enumerate_Enumerators_ExW(
00745   /*IN*/ ULONG  ulEnumIndex,
00746   /*OUT*/ PWCHAR  Buffer,
00747   /*IN OUT*/ PULONG  pulLength,
00748   /*IN*/ ULONG  ulFlags,
00749   /*IN*/ HMACHINE  hMachine);
00750 
00751 CMAPI
00752 CONFIGRET
00753 WINAPI
00754 CM_Enumerate_EnumeratorsW(
00755   /*IN*/ ULONG  ulEnumIndex,
00756   /*OUT*/ PWCHAR  Buffer,
00757   /*IN OUT*/ PULONG  pulLength,
00758   /*IN*/ ULONG  ulFlags);
00759 
00760 #ifdef UNICODE
00761 #define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsW
00762 #define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW
00763 #else
00764 #define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsA
00765 #define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW
00766 #endif /* UNICODE */
00767 
00768 /* FIXME: Obsolete CM_Find_Range */
00769 /* FIXME: Obsolete CM_First_Range */
00770 
00771 CMAPI
00772 CONFIGRET
00773 WINAPI
00774 CM_Free_Log_Conf(
00775   /*IN*/ LOG_CONF  lcLogConfToBeFreed,
00776   /*IN*/ ULONG  ulFlags);
00777 
00778 CMAPI
00779 CONFIGRET
00780 WINAPI
00781 CM_Free_Log_Conf_Ex(
00782   /*IN*/ LOG_CONF  lcLogConfToBeFreed,
00783   /*IN*/ ULONG  ulFlags,
00784   /*IN*/ HMACHINE  hMachine);
00785 
00786 CMAPI
00787 CONFIGRET
00788 WINAPI
00789 CM_Free_Log_Conf_Handle(
00790   /*IN*/ LOG_CONF  lcLogConf);
00791 
00792 /* FIXME: Obsolete CM_Free_Range_List */
00793 
00794 CMAPI
00795 CONFIGRET
00796 WINAPI
00797 CM_Free_Res_Des(
00798   /*OUT*/ PRES_DES  prdResDes,
00799   /*IN*/ RES_DES  rdResDes,
00800   /*IN*/ ULONG  ulFlags);
00801 
00802 CMAPI
00803 CONFIGRET
00804 WINAPI
00805 CM_Free_Res_Des_Ex(
00806   /*OUT*/ PRES_DES  prdResDes,
00807   /*IN*/ RES_DES  rdResDes,
00808   /*IN*/ ULONG  ulFlags,
00809   /*IN*/ HMACHINE  hMachine);
00810 
00811 CMAPI
00812 CONFIGRET
00813 WINAPI
00814 CM_Free_Res_Des_Handle(
00815   /*IN*/ RES_DES  rdResDes);
00816 
00817 CMAPI
00818 CONFIGRET
00819 WINAPI
00820 CM_Free_Resource_Conflict_Handle(
00821   /*IN*/ CONFLICT_LIST  clConflictList);
00822 
00823 CMAPI
00824 CONFIGRET
00825 WINAPI
00826 CM_Get_Child(
00827   /*OUT*/ PDEVINST  pdnDevInst,
00828   /*IN*/ DEVINST  dnDevInst,
00829   /*IN*/ ULONG  ulFlags);
00830 
00831 CMAPI
00832 CONFIGRET
00833 WINAPI
00834 CM_Get_Child_Ex(
00835   /*OUT*/ PDEVINST  pdnDevInst,
00836   /*IN*/ DEVINST  dnDevInst,
00837   /*IN*/ ULONG  ulFlags,
00838   /*IN*/ HMACHINE  hMachine);
00839 
00840 /* FIXME: Obsolete CM_Get_Class_Name */
00841 /* FIXME: Obsolete CM_Get_Class_Name_Ex */
00842 /* FIXME: Obsolete CM_Get_Class_Key_Name */
00843 /* FIXME: Obsolete CM_Get_Class_Key_Name_Ex */
00844 /* FIXME: Obsolete CM_Get_Class_Registry_Property */
00845 
00846 CMAPI
00847 CONFIGRET
00848 WINAPI
00849 CM_Get_Depth(
00850   /*OUT*/ PULONG  pulDepth,
00851   /*IN*/ DEVINST  dnDevInst,
00852   /*IN*/ ULONG  ulFlags);
00853 
00854 CMAPI
00855 CONFIGRET
00856 WINAPI
00857 CM_Get_Depth_Ex(
00858   /*OUT*/ PULONG  pulDepth,
00859   /*IN*/ DEVINST  dnDevInst,
00860   /*IN*/ ULONG  ulFlags,
00861   /*IN*/ HMACHINE  hMachine);
00862 
00863 CMAPI
00864 CONFIGRET
00865 WINAPI
00866 CM_Get_Device_IDA(
00867   /*IN*/ DEVINST  dnDevInst,
00868   /*OUT*/ PCHAR  Buffer,
00869   /*IN*/ ULONG  BufferLen,
00870   /*IN*/ ULONG  ulFlags);
00871 
00872 CMAPI
00873 CONFIGRET
00874 WINAPI
00875 CM_Get_Device_ID_ExA(
00876   /*IN*/ DEVINST  dnDevInst,
00877   /*OUT*/ PCHAR  Buffer,
00878   /*IN*/ ULONG  BufferLen,
00879   /*IN*/ ULONG  ulFlags,
00880   /*IN*/ HMACHINE  hMachine);
00881 
00882 CMAPI
00883 CONFIGRET
00884 WINAPI
00885 CM_Get_Device_ID_ExW(
00886   /*IN*/ DEVINST  dnDevInst,
00887   /*OUT*/ PWCHAR  Buffer,
00888   /*IN*/ ULONG  BufferLen,
00889   /*IN*/ ULONG  ulFlags,
00890   /*IN*/ HMACHINE  hMachine);
00891 
00892 CMAPI
00893 CONFIGRET
00894 WINAPI
00895 CM_Get_Device_IDW(
00896   /*IN*/ DEVINST  dnDevInst,
00897   /*OUT*/ PWCHAR  Buffer,
00898   /*IN*/ ULONG  BufferLen,
00899   /*IN*/ ULONG  ulFlags);
00900 
00901 #ifdef UNICODE
00902 #define CM_Get_Device_ID CM_Get_Device_IDW
00903 #define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW
00904 #else
00905 #define CM_Get_Device_ID CM_Get_Device_IDA
00906 #define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW
00907 #endif /* UNICODE */
00908 
00909 CMAPI
00910 CONFIGRET
00911 WINAPI
00912 CM_Get_Device_ID_ListA(
00913   /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
00914   /*OUT*/ PCHAR  Buffer,
00915   /*IN*/ ULONG  BufferLen,
00916   /*IN*/ ULONG  ulFlags);
00917 
00918 CMAPI
00919 CONFIGRET
00920 WINAPI
00921 CM_Get_Device_ID_List_ExA(
00922   /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
00923   /*OUT*/ PCHAR  Buffer,
00924   /*IN*/ ULONG  BufferLen,
00925   /*IN*/ ULONG  ulFlags,
00926   /*IN*/ HMACHINE  hMachine);
00927 
00928 CMAPI
00929 CONFIGRET
00930 WINAPI
00931 CM_Get_Device_ID_List_ExW(
00932   /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
00933   /*OUT*/ PWCHAR  Buffer,
00934   /*IN*/ ULONG  BufferLen,
00935   /*IN*/ ULONG  ulFlags,
00936   /*IN*/ HMACHINE  hMachine);
00937 
00938 CMAPI
00939 CONFIGRET
00940 WINAPI
00941 CM_Get_Device_ID_ListW(
00942   /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
00943   /*OUT*/ PWCHAR  Buffer,
00944   /*IN*/ ULONG  BufferLen,
00945   /*IN*/ ULONG  ulFlags);
00946 
00947 #ifdef UNICODE
00948 #define CM_Get_Device_ID_List CM_Get_Device_ID_ListW
00949 #define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExW
00950 #else
00951 #define CM_Get_Device_ID_List CM_Get_Device_ID_ListA
00952 #define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExA
00953 #endif /* UNICODE */
00954 
00955 CMAPI
00956 CONFIGRET
00957 WINAPI
00958 CM_Get_Device_ID_List_SizeA(
00959   /*OUT*/ PULONG  pulLen,
00960   /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
00961   /*IN*/ ULONG  ulFlags);
00962 
00963 CMAPI
00964 CONFIGRET
00965 WINAPI
00966 CM_Get_Device_ID_List_Size_ExA(
00967   /*OUT*/ PULONG  pulLen,
00968   /*IN*/ PCSTR  pszFilter, /*OPTIONAL*/
00969   /*IN*/ ULONG  ulFlags,
00970   /*IN*/ HMACHINE  hMachine);
00971 
00972 CMAPI
00973 CONFIGRET
00974 WINAPI
00975 CM_Get_Device_ID_List_Size_ExW(
00976   /*OUT*/ PULONG  pulLen,
00977   /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
00978   /*IN*/ ULONG  ulFlags,
00979   /*IN*/ HMACHINE  hMachine);
00980 
00981 CMAPI
00982 CONFIGRET
00983 WINAPI
00984 CM_Get_Device_ID_List_SizeW(
00985   /*OUT*/ PULONG  pulLen,
00986   /*IN*/ PCWSTR  pszFilter, /*OPTIONAL*/
00987   /*IN*/ ULONG  ulFlags);
00988 
00989 #ifdef UNICODE
00990 #define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeW
00991 #define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExW
00992 #else
00993 #define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeA
00994 #define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExA
00995 #endif /* UNICODE */
00996 
00997 CMAPI
00998 CONFIGRET
00999 WINAPI
01000 CM_Get_Device_ID_Size(
01001   /*OUT*/ PULONG  pulLen,
01002   /*IN*/ DEVINST  dnDevInst,
01003   /*IN*/ ULONG  ulFlags);
01004 
01005 CMAPI
01006 CONFIGRET
01007 WINAPI
01008 CM_Get_Device_ID_Size_Ex(
01009   /*OUT*/ PULONG  pulLen,
01010   /*IN*/ DEVINST  dnDevInst,
01011   /*IN*/ ULONG  ulFlags,
01012   /*IN*/ HMACHINE  hMachine);
01013 
01014 /* FIXME: Obsolete CM_Get_Device_Interface_Alias */
01015 /* FIXME: Obsolete CM_Get_Device_Interface_Alias_Ex */
01016 /* FIXME: Obsolete CM_Get_Device_Interface_List */
01017 /* FIXME: Obsolete CM_Get_Device_Interface_List_Ex */
01018 /* FIXME: Obsolete CM_Get_Device_Interface_List_Size */
01019 /* FIXME: Obsolete CM_Get_Device_Interface_List_Size_Ex */
01020 /* FIXME: Obsolete CM_Get_DevNode_Custom_Property */
01021 /* FIXME: Obsolete CM_Get_DevNode_Custom_Property_Ex */
01022 /* FIXME: Obsolete CM_Get_DevNode_Registry_Property */
01023 
01024 CMAPI
01025 CONFIGRET
01026 WINAPI
01027 CM_Get_DevNode_Status(
01028   /*OUT*/ PULONG  pulStatus,
01029   /*OUT*/ PULONG  pulProblemNumber,
01030   /*IN*/ DEVINST  dnDevInst,
01031   /*IN*/ ULONG  ulFlags);
01032 
01033 CMAPI
01034 CONFIGRET
01035 WINAPI
01036 CM_Get_DevNode_Status_Ex(
01037   /*OUT*/ PULONG  pulStatus,
01038   /*OUT*/ PULONG  pulProblemNumber,
01039   /*IN*/ DEVINST  dnDevInst,
01040   /*IN*/ ULONG  ulFlags,
01041   /*IN*/ HMACHINE  hMachine);
01042 
01043 #define CM_Get_DevInst_Status CM_Get_DevNode_Status
01044 #define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex
01045 
01046 /* CM_Get_First_Log_Conf.ulFlags constants */
01047 #define BASIC_LOG_CONF    0x00000000  /* Specifies the req list. */
01048 #define FILTERED_LOG_CONF 0x00000001  /* Specifies the filtered req list. */
01049 #define ALLOC_LOG_CONF    0x00000002  /* Specifies the Alloc Element. */
01050 #define BOOT_LOG_CONF     0x00000003  /* Specifies the RM Alloc Element. */
01051 #define FORCED_LOG_CONF   0x00000004  /* Specifies the Forced Log Conf */
01052 #define OVERRIDE_LOG_CONF 0x00000005  /* Specifies the Override req list. */
01053 #define NUM_LOG_CONF      0x00000006  /* Number of Log Conf type */
01054 #define LOG_CONF_BITS     0x00000007  /* The bits of the log conf type. */
01055 
01056 CMAPI
01057 CONFIGRET
01058 WINAPI
01059 CM_Get_First_Log_Conf(
01060   /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
01061   /*IN*/ DEVINST  dnDevInst,
01062   /*IN*/ ULONG  ulFlags);
01063 
01064 CMAPI
01065 CONFIGRET
01066 WINAPI
01067 CM_Get_First_Log_Conf_Ex(
01068   /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
01069   /*IN*/ DEVINST  dnDevInst,
01070   /*IN*/ ULONG  ulFlags,
01071   /*IN*/ HMACHINE  hMachine);
01072 
01073 /* FIXME: Obsolete CM_Get_Global_State */
01074 /* FIXME: Obsolete CM_Get_Global_State_Ex */
01075 /* FIXME: Obsolete CM_Get_Hardware_Profile_Info */
01076 /* FIXME: Obsolete CM_Get_Hardware_Profile_Info_Ex */
01077 /* FIXME: Obsolete CM_Get_HW_Prof_Flags */
01078 /* FIXME: Obsolete CM_Get_HW_Prof_Flags_Ex */
01079 
01080 CMAPI
01081 CONFIGRET
01082 WINAPI
01083 CM_Get_Log_Conf_Priority(
01084   /*IN*/ LOG_CONF  lcLogConf,
01085   /*OUT*/ PPRIORITY  pPriority,
01086   /*IN*/ ULONG  ulFlags);
01087 
01088 CMAPI
01089 CONFIGRET
01090 WINAPI
01091 CM_Get_Log_Conf_Priority_Ex(
01092   /*IN*/ LOG_CONF  lcLogConf,
01093   /*OUT*/ PPRIORITY  pPriority,
01094   /*IN*/ ULONG  ulFlags,
01095   /*IN*/ HMACHINE  hMachine);
01096 
01097 CMAPI
01098 CONFIGRET
01099 WINAPI
01100 CM_Get_Next_Log_Conf(
01101   /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
01102   /*IN*/ LOG_CONF  lcLogConf,
01103   /*IN*/ ULONG  ulFlags);
01104 
01105 CMAPI
01106 CONFIGRET
01107 WINAPI
01108 CM_Get_Next_Log_Conf_Ex(
01109   /*OUT*/ PLOG_CONF  plcLogConf, /*OPTIONAL*/
01110   /*IN*/ LOG_CONF  lcLogConf,
01111   /*IN*/ ULONG  ulFlags,
01112   /*IN*/ HMACHINE  hMachine);
01113 
01114 CMAPI
01115 CONFIGRET
01116 WINAPI
01117 CM_Get_Next_Res_Des(
01118   /*OUT*/ PRES_DES  prdResDes,
01119   /*IN*/ RES_DES  rdResDes,
01120   /*IN*/ RESOURCEID  ForResource,
01121   /*OUT*/ PRESOURCEID  pResourceID,
01122   /*IN*/ ULONG  ulFlags);
01123 
01124 CMAPI
01125 CONFIGRET
01126 WINAPI
01127 CM_Get_Next_Res_Des_Ex(
01128   /*OUT*/ PRES_DES  prdResDes,
01129   /*IN*/ RES_DES  rdResDes,
01130   /*IN*/ RESOURCEID  ForResource,
01131   /*OUT*/ PRESOURCEID  pResourceID,
01132   /*IN*/ ULONG  ulFlags,
01133   /*IN*/ HMACHINE  hMachine);
01134 
01135 CMAPI
01136 CONFIGRET
01137 WINAPI
01138 CM_Get_Parent(
01139   /*OUT*/ PDEVINST  pdnDevInst,
01140   /*IN*/ DEVINST  dnDevInst,
01141   /*IN*/ ULONG  ulFlags);
01142 
01143 CMAPI
01144 CONFIGRET
01145 WINAPI
01146 CM_Get_Parent_Ex(
01147   /*OUT*/ PDEVINST  pdnDevInst,
01148   /*IN*/ DEVINST  dnDevInst,
01149   /*IN*/ ULONG  ulFlags,
01150   /*IN*/ HMACHINE  hMachine);
01151 
01152 CMAPI
01153 CONFIGRET
01154 WINAPI
01155 CM_Get_Res_Des_Data(
01156   /*IN*/ RES_DES  rdResDes,
01157   /*OUT*/ PVOID  Buffer,
01158   /*IN*/ ULONG  BufferLen,
01159   /*IN*/ ULONG  ulFlags);
01160 
01161 CMAPI
01162 CONFIGRET
01163 WINAPI
01164 CM_Get_Res_Des_Data_Ex(
01165   /*IN*/ RES_DES  rdResDes,
01166   /*OUT*/ PVOID  Buffer,
01167   /*IN*/ ULONG  BufferLen,
01168   /*IN*/ ULONG  ulFlags,
01169   /*IN*/ HMACHINE  hMachine);
01170 
01171 CMAPI
01172 CONFIGRET
01173 WINAPI
01174 CM_Get_Res_Des_Data_Size(
01175   /*OUT*/ PULONG  pulSize,
01176   /*IN*/ RES_DES  rdResDes,
01177   /*IN*/ ULONG  ulFlags);
01178 
01179 CMAPI
01180 CONFIGRET
01181 WINAPI
01182 CM_Get_Res_Des_Data_Size_Ex(
01183   /*OUT*/ PULONG  pulSize,
01184   /*IN*/ RES_DES  rdResDes,
01185   /*IN*/ ULONG  ulFlags,
01186   /*IN*/ HMACHINE  hMachine);
01187 
01188 CMAPI
01189 CONFIGRET
01190 WINAPI
01191 CM_Get_Resource_Conflict_Count(
01192   /*IN*/ CONFLICT_LIST  clConflictList,
01193   /*OUT*/ PULONG  pulCount);
01194 
01195 CMAPI
01196 CONFIGRET
01197 WINAPI
01198 CM_Get_Resource_Conflict_DetailsA(
01199   /*IN*/ CONFLICT_LIST  clConflictList,
01200   /*IN*/ ULONG  ulIndex,
01201   /*IN OUT*/ PCONFLICT_DETAILS_A  pConflictDetails);
01202 
01203 CMAPI
01204 CONFIGRET
01205 WINAPI
01206 CM_Get_Resource_Conflict_DetailsW(
01207   /*IN*/ CONFLICT_LIST  clConflictList,
01208   /*IN*/ ULONG  ulIndex,
01209   /*IN OUT*/ PCONFLICT_DETAILS_W  pConflictDetails);
01210 
01211 #ifdef UNICODE
01212 #define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsW
01213 #else
01214 #define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsA
01215 #endif /* UNICODE */
01216 
01217 CMAPI
01218 CONFIGRET
01219 WINAPI
01220 CM_Get_Sibling(
01221   /*OUT*/ PDEVINST  pdnDevInst,
01222   /*IN*/ DEVINST  DevInst,
01223   /*IN*/ ULONG  ulFlags);
01224 
01225 CMAPI
01226 CONFIGRET
01227 WINAPI
01228 CM_Get_Sibling_Ex(
01229   /*OUT*/ PDEVINST  pdnDevInst,
01230   /*IN*/ DEVINST  DevInst,
01231   /*IN*/ ULONG  ulFlags,
01232   /*IN*/ HMACHINE  hMachine);
01233 
01234 CMAPI
01235 WORD
01236 WINAPI
01237 CM_Get_Version(
01238   VOID);
01239 
01240 CMAPI
01241 WORD
01242 WINAPI
01243 CM_Get_Version_Ex(
01244   /*IN*/ HMACHINE  hMachine);
01245 
01246 /* FIXME: Obsolete CM_Intersect_Range_List */
01247 /* FIXME: Obsolete CM_Invert_Range_List */
01248 /* FIXME: Obsolete CM_Is_Dock_Station_Present */
01249 /* FIXME: Obsolete CM_Is_Dock_Station_Present_Ex */
01250 
01251 /* CM_Locate_DevNode.ulFlags constants */
01252 #define CM_LOCATE_DEVNODE_NORMAL            0x00000000
01253 #define CM_LOCATE_DEVNODE_PHANTOM           0x00000001
01254 #define CM_LOCATE_DEVNODE_CANCELREMOVE      0x00000002
01255 #define CM_LOCATE_DEVNODE_NOVALIDATION      0x00000004
01256 #define CM_LOCATE_DEVNODE_BITS              0x00000007
01257 
01258 #define CM_LOCATE_DEVINST_NORMAL            CM_LOCATE_DEVNODE_NORMAL
01259 #define CM_LOCATE_DEVINST_PHANTOM           CM_LOCATE_DEVNODE_PHANTOM
01260 #define CM_LOCATE_DEVINST_CANCELREMOVE      CM_LOCATE_DEVNODE_CANCELREMOVE
01261 #define CM_LOCATE_DEVINST_NOVALIDATION      CM_LOCATE_DEVNODE_NOVALIDATION
01262 #define CM_LOCATE_DEVINST_BITS              CM_LOCATE_DEVNODE_BITS
01263 
01264 CMAPI
01265 CONFIGRET
01266 WINAPI
01267 CM_Locate_DevNodeA(
01268   /*OUT*/ PDEVINST  pdnDevInst,
01269   /*IN*/ DEVINSTID_A  pDeviceID, /*OPTIONAL*/
01270   /*IN*/ ULONG  ulFlags);
01271 
01272 CMAPI
01273 CONFIGRET
01274 WINAPI
01275 CM_Locate_DevNode_ExA(
01276   /*OUT*/ PDEVINST  pdnDevInst,
01277   /*IN*/ DEVINSTID_A  pDeviceID, /*OPTIONAL*/
01278   /*IN*/ ULONG  ulFlags,
01279   /*IN*/ HMACHINE  hMachine);
01280 
01281 CMAPI
01282 CONFIGRET
01283 WINAPI
01284 CM_Locate_DevNode_ExW(
01285   /*OUT*/ PDEVINST  pdnDevInst,
01286   /*IN*/ DEVINSTID_W  pDeviceID, /*OPTIONAL*/
01287   /*IN*/ ULONG  ulFlags,
01288   /*IN*/ HMACHINE  hMachine);
01289 
01290 CMAPI
01291 CONFIGRET
01292 WINAPI
01293 CM_Locate_DevNodeW(
01294   /*OUT*/ PDEVINST  pdnDevInst,
01295   /*IN*/ DEVINSTID_W  pDeviceID, /*OPTIONAL*/
01296   /*IN*/ ULONG  ulFlags);
01297 
01298 #define CM_Locate_DevInstA CM_Locate_DevNodeA
01299 #define CM_Locate_DevInstW CM_Locate_DevNodeW
01300 #define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA
01301 #define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW
01302 
01303 #ifdef UNICODE
01304 #define CM_Locate_DevNode CM_Locate_DevNodeW
01305 #define CM_Locate_DevInst CM_Locate_DevNodeW
01306 #define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExW
01307 #define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExW
01308 #else
01309 #define CM_Locate_DevNode CM_Locate_DevNodeA
01310 #define CM_Locate_DevInst CM_Locate_DevNodeA
01311 #define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExA
01312 #define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExA
01313 #endif /* UNICODE */
01314 
01315 /* FIXME: Obsolete CM_Merge_Range_List */
01316 
01317 CMAPI
01318 CONFIGRET
01319 WINAPI
01320 CM_Modify_Res_Des(
01321   /*OUT*/ PRES_DES  prdResDes,
01322   /*IN*/ RES_DES  rdResDes,
01323   /*IN*/ RESOURCEID  ResourceID,
01324   /*IN*/ PCVOID  ResourceData,
01325   /*IN*/ ULONG  ResourceLen,
01326   /*IN*/ ULONG  ulFlags);
01327 
01328 CMAPI
01329 CONFIGRET
01330 WINAPI
01331 CM_Modify_Res_Des_Ex(
01332   /*OUT*/ PRES_DES  prdResDes,
01333   /*IN*/ RES_DES  rdResDes,
01334   /*IN*/ RESOURCEID  ResourceID,
01335   /*IN*/ PCVOID  ResourceData,
01336   /*IN*/ ULONG  ResourceLen,
01337   /*IN*/ ULONG  ulFlags,
01338   /*IN*/ HMACHINE  hMachine);
01339 
01340 /* FIXME: Obsolete CM_Move_DevNode */
01341 /* FIXME: Obsolete CM_Move_DevNode_Ex */
01342 /* FIXME: Obsolete CM_Next_Range */
01343 /* FIXME: Obsolete CM_Open_Class_Key */
01344 /* FIXME: Obsolete CM_Open_Class_Key_Ex */
01345 /* FIXME: Obsolete CM_Open_DevNode_Key */
01346 /* FIXME: Obsolete CM_Open_DevNode_Key_Ex */
01347 
01348 /* CM_Query_And_Remove_SubTree.ulFlags constants */
01349 #define CM_REMOVE_UI_OK                         0x00000000
01350 #define CM_REMOVE_UI_NOT_OK                     0x00000001
01351 #define CM_REMOVE_NO_RESTART                    0x00000002
01352 #define CM_REMOVE_BITS                          0x00000003
01353 
01354 CMAPI
01355 CONFIGRET
01356 WINAPI
01357 CM_Query_And_Remove_SubTreeA(
01358   /*IN*/ DEVINST dnAncestor,
01359   /*OUT*/ PPNP_VETO_TYPE pVetoType,
01360   /*OUT*/ LPSTR pszVetoName,
01361   /*IN*/ ULONG ulNameLength,
01362   /*IN*/ ULONG ulFlags);
01363 
01364 CMAPI
01365 CONFIGRET
01366 WINAPI
01367 CM_Query_And_Remove_SubTreeW(
01368   /*IN*/ DEVINST dnAncestor,
01369   /*OUT*/ PPNP_VETO_TYPE pVetoType,
01370   /*OUT*/ LPWSTR pszVetoName,
01371   /*IN*/ ULONG ulNameLength,
01372   /*IN*/ ULONG ulFlags);
01373 
01374 CMAPI
01375 CONFIGRET
01376 WINAPI
01377 CM_Query_And_Remove_SubTree_ExA(
01378   /*IN*/ DEVINST dnAncestor,
01379   /*OUT*/ PPNP_VETO_TYPE pVetoType,
01380   /*OUT*/ LPSTR pszVetoName,
01381   /*IN*/ ULONG ulNameLength,
01382   /*IN*/ ULONG ulFlags,
01383   /*IN*/ HMACHINE hMachine);
01384 
01385 CMAPI
01386 CONFIGRET
01387 WINAPI
01388 CM_Query_And_Remove_SubTree_ExW(
01389   /*IN*/ DEVINST dnAncestor,
01390   /*OUT*/ PPNP_VETO_TYPE pVetoType,
01391   /*OUT*/ LPWSTR pszVetoName,
01392   /*IN*/ ULONG ulNameLength,
01393   /*IN*/ ULONG ulFlags,
01394   /*IN*/ HMACHINE hMachine);
01395 
01396 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Data */
01397 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Data_Ex */
01398 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Size */
01399 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */
01400 /* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */
01401 /* FIXME: Obsolete CM_Query_Remove_SubTree */
01402 /* FIXME: Obsolete CM_Query_Remove_SubTree_Ex */
01403 
01404 CMAPI
01405 CONFIGRET
01406 WINAPI
01407 CM_Query_Resource_Conflict_List(
01408   /*OUT*/ PCONFLICT_LIST  pclConflictList,
01409   /*IN*/ DEVINST  dnDevInst,
01410   /*IN*/ RESOURCEID  ResourceID,
01411   /*IN*/ PCVOID  ResourceData,
01412   /*IN*/ ULONG  ResourceLen,
01413   /*IN*/ ULONG  ulFlags,
01414   /*IN*/ HMACHINE  hMachine);
01415 
01416 /* CM_Reenumerate_DevNode.ulFlags constants */
01417 #define CM_REENUMERATE_NORMAL             0x00000000
01418 #define CM_REENUMERATE_SYNCHRONOUS        0x00000001
01419 #define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002
01420 #define CM_REENUMERATE_ASYNCHRONOUS       0x00000004
01421 #define CM_REENUMERATE_BITS               0x00000007
01422 
01423 CMAPI
01424 CONFIGRET
01425 WINAPI
01426 CM_Reenumerate_DevNode(
01427   /*IN*/ DEVINST  dnDevInst,
01428   /*IN*/ ULONG  ulFlags);
01429 
01430 CMAPI
01431 CONFIGRET
01432 WINAPI
01433 CM_Reenumerate_DevNode_Ex(
01434   /*IN*/ DEVINST  dnDevInst,
01435   /*IN*/ ULONG  ulFlags,
01436   /*IN*/ HMACHINE  hMachine);
01437 
01438 #define CM_Reenumerate_DevInst CM_Reenumerate_DevNode
01439 #define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex
01440 
01441 /* FIXME: Obsolete CM_Register_Device_Driver */
01442 /* FIXME: Obsolete CM_Register_Device_Driver_Ex */
01443 /* FIXME: Obsolete CM_Register_Device_Interface */
01444 /* FIXME: Obsolete CM_Register_Device_Interface_Ex */
01445 /* FIXME: Obsolete CM_Remove_SubTree */
01446 /* FIXME: Obsolete CM_Remove_SubTree_Ex */
01447 
01448 CMAPI
01449 CONFIGRET
01450 WINAPI
01451 CM_Request_Device_EjectA(
01452   /*IN*/ DEVINST  dnDevInst,
01453   /*OUT*/ PPNP_VETO_TYPE  pVetoType,
01454   /*OUT*/ LPSTR  pszVetoName,
01455   /*IN*/ ULONG  ulNameLength,
01456   /*IN*/ ULONG  ulFlags);
01457 
01458 CMAPI
01459 CONFIGRET
01460 WINAPI
01461 CM_Request_Device_Eject_ExW(
01462   /*IN*/ DEVINST  dnDevInst,
01463   /*OUT*/ PPNP_VETO_TYPE  pVetoType,
01464   /*OUT*/ LPWSTR  pszVetoName,
01465   /*IN*/ ULONG  ulNameLength,
01466   /*IN*/ ULONG  ulFlags,
01467   /*IN*/ HMACHINE  hMachine);
01468 
01469 CMAPI
01470 CONFIGRET
01471 WINAPI
01472 CM_Request_Device_Eject_ExA(
01473   /*IN*/ DEVINST  dnDevInst,
01474   /*OUT*/ PPNP_VETO_TYPE  pVetoType,
01475   /*OUT*/ LPSTR  pszVetoName,
01476   /*IN*/ ULONG  ulNameLength,
01477   /*IN*/ ULONG  ulFlags,
01478   /*IN*/ HMACHINE  hMachine);
01479 
01480 CMAPI
01481 CONFIGRET
01482 WINAPI
01483 CM_Request_Device_EjectW(
01484   /*IN*/ DEVINST  dnDevInst,
01485   /*OUT*/ PPNP_VETO_TYPE  pVetoType,
01486   /*OUT*/ LPWSTR  pszVetoName,
01487   /*IN*/ ULONG  ulNameLength,
01488   /*IN*/ ULONG  ulFlags);
01489 
01490 #ifdef UNICODE
01491 #define CM_Request_Device_Eject CM_Request_Device_EjectW
01492 #define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExW
01493 #else
01494 #define CM_Request_Device_Eject CM_Request_Device_EjectA
01495 #define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExA
01496 #endif /* UNICODE */
01497 
01498 /* FIXME: Obsolete CM_Request_Eject_PC */
01499 /* FIXME: Obsolete CM_Request_Eject_PC_Ex */
01500 /* FIXME: Obsolete CM_Run_Detection */
01501 /* FIXME: Obsolete CM_Run_Detection_Ex */
01502 /* FIXME: Obsolete CM_Set_Class_Registry_Property */
01503 /* FIXME: Obsolete CM_Set_DevNode_Problem */
01504 /* FIXME: Obsolete CM_Set_DevNode_Problem_Ex */
01505 /* FIXME: Obsolete CM_Set_DevNode_Registry_Property */
01506 /* FIXME: Obsolete CM_Set_DevNode_Registry_Property_Ex */
01507 /* FIXME: Obsolete CM_Set_HW_Prof */
01508 /* FIXME: Obsolete CM_Set_HW_Prof_Ex */
01509 /* FIXME: Obsolete CM_Set_HW_Prof_Flags */
01510 /* FIXME: Obsolete CM_Set_HW_Prof_Flags_Ex */
01511 /* FIXME: Obsolete CM_Setup_DevNode */
01512 /* FIXME: Obsolete CM_Setup_DevNode_Ex */
01513 /* FIXME: Obsolete CM_Test_Range_Available */
01514 /* FIXME: Obsolete CM_Uninstall_DevNode */
01515 /* FIXME: Obsolete CM_Uninstall_DevNode_Ex */
01516 /* FIXME: Obsolete CM_Unregister_Device_Interface */
01517 /* FIXME: Obsolete CM_Unregister_Device_Interface_Ex */
01518 
01519 #define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents
01520 
01521 CMAPI
01522 DWORD
01523 WINAPI
01524 CMP_WaitNoPendingInstallEvents(
01525   /*IN*/ DWORD dwTimeout);
01526 
01527 #include <poppack.h>
01528 
01529 #ifdef __cplusplus
01530 }
01531 #endif
01532 
01533 #endif /* __CFGMGR32_H */