4
* PnP configuration manager
6
* This file is part of the w32api package.
9
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11
* THIS SOFTWARE IS NOT COPYRIGHTED
13
* This source code is offered for use in the public domain. You may
14
* use, modify or distribute it freely.
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.
32
#if defined(_CFGMGR32_)
35
#define CMAPI DECLSPEC_IMPORT
40
#define CR_SUCCESS 0x00000000
41
#define CR_DEFAULT 0x00000001
42
#define CR_OUT_OF_MEMORY 0x00000002
43
#define CR_INVALID_POINTER 0x00000003
44
#define CR_INVALID_FLAG 0x00000004
45
#define CR_INVALID_DEVNODE 0x00000005
46
#define CR_INVALID_DEVINST CR_INVALID_DEVNODE
47
#define CR_INVALID_RES_DES 0x00000006
48
#define CR_INVALID_LOG_CONF 0x00000007
49
#define CR_INVALID_ARBITRATOR 0x00000008
50
#define CR_INVALID_NODELIST 0x00000009
51
#define CR_DEVNODE_HAS_REQS 0x0000000A
52
#define CR_DEVINST_HAS_REQS CR_DEVNODE_HAS_REQS
53
#define CR_INVALID_RESOURCEID 0x0000000B
54
#define CR_DLVXD_NOT_FOUND 0x0000000C
55
#define CR_NO_SUCH_DEVNODE 0x0000000D
56
#define CR_NO_SUCH_DEVINST CR_NO_SUCH_DEVNODE
57
#define CR_NO_MORE_LOG_CONF 0x0000000E
58
#define CR_NO_MORE_RES_DES 0x0000000F
59
#define CR_ALREADY_SUCH_DEVNODE 0x00000010
60
#define CR_ALREADY_SUCH_DEVINST CR_ALREADY_SUCH_DEVNODE
61
#define CR_INVALID_RANGE_LIST 0x00000011
62
#define CR_INVALID_RANGE 0x00000012
63
#define CR_FAILURE 0x00000013
64
#define CR_NO_SUCH_LOGICAL_DEV 0x00000014
65
#define CR_CREATE_BLOCKED 0x00000015
66
#define CR_NOT_SYSTEM_VM 0x00000016
67
#define CR_REMOVE_VETOED 0x00000017
68
#define CR_APM_VETOED 0x00000018
69
#define CR_INVALID_LOAD_TYPE 0x00000019
70
#define CR_BUFFER_SMALL 0x0000001A
71
#define CR_NO_ARBITRATOR 0x0000001B
72
#define CR_NO_REGISTRY_HANDLE 0x0000001C
73
#define CR_REGISTRY_ERROR 0x0000001D
74
#define CR_INVALID_DEVICE_ID 0x0000001E
75
#define CR_INVALID_DATA 0x0000001F
76
#define CR_INVALID_API 0x00000020
77
#define CR_DEVLOADER_NOT_READY 0x00000021
78
#define CR_NEED_RESTART 0x00000022
79
#define CR_NO_MORE_HW_PROFILES 0x00000023
80
#define CR_DEVICE_NOT_THERE 0x00000024
81
#define CR_NO_SUCH_VALUE 0x00000025
82
#define CR_WRONG_TYPE 0x00000026
83
#define CR_INVALID_PRIORITY 0x00000027
84
#define CR_NOT_DISABLEABLE 0x00000028
85
#define CR_FREE_RESOURCES 0x00000029
86
#define CR_QUERY_VETOED 0x0000002A
87
#define CR_CANT_SHARE_IRQ 0x0000002B
88
#define CR_NO_DEPENDENT 0x0000002C
89
#define CR_SAME_RESOURCES 0x0000002D
90
#define CR_NO_SUCH_REGISTRY_KEY 0x0000002E
91
#define CR_INVALID_MACHINENAME 0x0000002F
92
#define CR_REMOTE_COMM_FAILURE 0x00000030
93
#define CR_MACHINE_UNAVAILABLE 0x00000031
94
#define CR_NO_CM_SERVICES 0x00000032
95
#define CR_ACCESS_DENIED 0x00000033
96
#define CR_CALL_NOT_IMPLEMENTED 0x00000034
97
#define CR_INVALID_PROPERTY 0x00000035
98
#define CR_DEVICE_INTERFACE_ACTIVE 0x00000036
99
#define CR_NO_SUCH_DEVICE_INTERFACE 0x00000037
100
#define CR_INVALID_REFERENCE_STRING 0x00000038
101
#define CR_INVALID_CONFLICT_LIST 0x00000039
102
#define CR_INVALID_INDEX 0x0000003A
103
#define CR_INVALID_STRUCTURE_SIZE 0x0000003B
105
#define RegDisposition_OpenAlways 0x00000000
106
#define RegDisposition_OpenExisting 0x00000001
107
#define RegDisposition_Bits 0x00000001
110
typedef DWORD RETURN_TYPE;
111
typedef RETURN_TYPE CONFIGRET;
113
typedef HANDLE HMACHINE;
114
typedef HMACHINE *PHMACHINE;
116
typedef DWORD_PTR RES_DES;
117
typedef RES_DES *PRES_DES;
119
typedef DWORD_PTR RANGE_ELEMENT;
120
typedef RANGE_ELEMENT *PRANGE_ELEMENT;
122
typedef ULONG_PTR CONFLICT_LIST;
123
typedef CONFLICT_LIST *PCONFLICT_LIST;
125
typedef DWORD_PTR LOG_CONF;
126
typedef LOG_CONF *PLOG_CONF;
128
typedef ULONG PRIORITY;
129
typedef PRIORITY *PPRIORITY;
131
typedef DWORD_PTR RANGE_LIST;
132
typedef RANGE_LIST *PRANGE_LIST;
134
typedef DWORD DEVNODE, DEVINST;
135
typedef DEVNODE *PDEVNODE, *PDEVINST;
137
typedef CHAR *DEVNODEID_A, *DEVINSTID_A;
138
typedef WCHAR *DEVNODEID_W, *DEVINSTID_W;
141
typedef DEVNODEID_W DEVNODEID;
142
typedef DEVINSTID_W DEVINSTID;
144
typedef DEVNODEID_A DEVNODEID;
145
typedef DEVINSTID_A DEVINSTID;
148
typedef ULONG REGDISPOSITION;
150
typedef ULONG RESOURCEID;
151
typedef RESOURCEID *PRESOURCEID;
153
#define CM_RESDES_WIDTH_DEFAULT 0x00000000
154
#define CM_RESDES_WIDTH_32 0x00000001
155
#define CM_RESDES_WIDTH_64 0x00000002
156
#define CM_RESDES_WIDTH_BITS 0x00000003
159
#define MAX_CONFIG_VALUE 9999
160
#define MAX_INSTANCE_VALUE 9999
162
#define MAX_DEVICE_ID_LEN 200
163
#define MAX_DEVNODE_ID_LEN MAX_DEVICE_ID_LEN
165
#define MAX_CLASS_NAME_LEN 32
166
#define MAX_GUID_STRING_LEN 39
167
#define MAX_PROFILE_LEN 80
170
#define ResType_All 0x00000000
171
#define ResType_None 0x00000000
172
#define ResType_Mem 0x00000001
173
#define ResType_IO 0x00000002
174
#define ResType_DMA 0x00000003
175
#define ResType_IRQ 0x00000004
176
#define ResType_DoNotUse 0x00000005
177
#define ResType_BusNumber 0x00000006
178
#define ResType_MAX 0x00000006
179
#define ResType_Ignored_Bit 0x00008000
180
#define ResType_ClassSpecific 0x0000FFFF
181
#define ResType_Reserved 0x00008000
182
#define ResType_DevicePrivate 0x00008001
183
#define ResType_PcCardConfig 0x00008002
184
#define ResType_MfCardConfig 0x00008003
186
#define CM_GETIDLIST_FILTER_NONE 0x00000000
187
#define CM_GETIDLIST_FILTER_ENUMERATOR 0x00000001
188
#define CM_GETIDLIST_FILTER_SERVICE 0x00000002
189
#define CM_GETIDLIST_FILTER_EJECTRELATIONS 0x00000004
190
#define CM_GETIDLIST_FILTER_REMOVALRELATIONS 0x00000008
191
#define CM_GETIDLIST_FILTER_POWERRELATIONS 0x00000010
192
#define CM_GETIDLIST_FILTER_BUSRELATIONS 0x00000020
193
#define CM_GETIDLIST_DONOTGENERATE 0x10000040
194
#define CM_GETIDLIST_FILTER_BITS 0x1000007F
196
#define CM_GET_DEVICE_INTERFACE_LIST_PRESENT 0x00000000
197
#define CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES 0x00000001
198
#define CM_GET_DEVICE_INTERFACE_LIST_BITS 0x00000001
200
#define CM_DRP_DEVICEDESC 0x00000001
201
#define CM_DRP_HARDWAREID 0x00000002
202
#define CM_DRP_COMPATIBLEIDS 0x00000003
203
#define CM_DRP_UNUSED0 0x00000004
204
#define CM_DRP_SERVICE 0x00000005
205
#define CM_DRP_UNUSED1 0x00000006
206
#define CM_DRP_UNUSED2 0x00000007
207
#define CM_DRP_CLASS 0x00000008
208
#define CM_DRP_CLASSGUID 0x00000009
209
#define CM_DRP_DRIVER 0x0000000A
210
#define CM_DRP_CONFIGFLAGS 0x0000000B
211
#define CM_DRP_MFG 0x0000000C
212
#define CM_DRP_FRIENDLYNAME 0x0000000D
213
#define CM_DRP_LOCATION_INFORMATION 0x0000000E
214
#define CM_DRP_PHYSICAL_DEVICE_OBJECT_NAME 0x0000000F
215
#define CM_DRP_CAPABILITIES 0x00000010
216
#define CM_DRP_UI_NUMBER 0x00000011
217
#define CM_DRP_UPPERFILTERS 0x00000012
218
#define CM_DRP_LOWERFILTERS 0x00000013
219
#define CM_DRP_BUSTYPEGUID 0x00000014
220
#define CM_DRP_LEGACYBUSTYPE 0x00000015
221
#define CM_DRP_BUSNUMBER 0x00000016
222
#define CM_DRP_ENUMERATOR_NAME 0x00000017
224
#define CM_DRP_MIN 0x00000001
225
#define CM_DRP_MAX 0x00000017
227
#define CM_REGISTRY_HARDWARE 0x00000000
228
#define CM_REGISTRY_SOFTWARE 0x00000001
229
#define CM_REGISTRY_USER 0x00000100
230
#define CM_REGISTRY_CONFIG 0x00000200
231
#define CM_REGISTRY_BITS 0x00000301
233
#define CM_DEVCAP_LOCKSUPPORTED 0x00000001
234
#define CM_DEVCAP_EJECTSUPPORTED 0x00000002
235
#define CM_DEVCAP_REMOVABLE 0x00000004
236
#define CM_DEVCAP_DOCKDEVICE 0x00000008
237
#define CM_DEVCAP_UNIQUEID 0x00000010
238
#define CM_DEVCAP_SILENTINSTALL 0x00000020
239
#define CM_DEVCAP_RAWDEVICEOK 0x00000040
240
#define CM_DEVCAP_SURPRISEREMOVALOK 0x00000080
241
#define CM_DEVCAP_HARDWAREDISABLED 0x00000100
242
#define CM_DEVCAP_NONDYNAMIC 0x00000200
244
typedef struct BusNumber_Des_s {
248
ULONG BUSD_Alloc_Base;
249
ULONG BUSD_Alloc_End;
250
} BUSNUMBER_DES, *PBUSNUMBER_DES;
252
typedef struct BusNumber_Range_s {
255
ULONG BUSR_nBusNumbers;
257
} BUSNUMBER_RANGE, *PBUSNUMBER_RANGE;
259
#define BusNumberType_Range sizeof(BUSNUMBER_RANGE)
261
typedef struct BusNumber_Resource_s {
262
BUSNUMBER_DES BusNumber_Header;
263
BUSNUMBER_RANGE BusNumber_Data[ANYSIZE_ARRAY];
264
} BUSNUMBER_RESOURCE, *PBUSNUMBER_RESOURCE;
266
typedef struct CS_Des_s {
267
DWORD CSD_SignatureLength;
268
DWORD CSD_LegacyDataOffset;
269
DWORD CSD_LegacyDataSize;
272
BYTE CSD_Signature[ANYSIZE_ARRAY];
275
typedef struct CS_Resource_s {
277
} CS_RESOURCE, *PCS_RESOURCE;
279
typedef struct DevPrivate_Des_s {
286
} DEVPRIVATE_DES, *PDEVPRIVATE_DES;
288
typedef struct DevPrivate_Range_s {
292
} DEVPRIVATE_RANGE, *PDEVPRIVATE_RANGE;
294
#define PType_Range sizeof(DEVPRIVATE_RANGE)
296
typedef struct DevPrivate_Resource_s {
297
DEVPRIVATE_DES PRV_Header;
298
DEVPRIVATE_RANGE PRV_Data[ANYSIZE_ARRAY];
299
} DEVPRIVATE_RESOURCE, *PDEVPRIVATE_RESOURCE;
301
/* DMA_DES.DD_Flags constants and masks */
302
#define mDD_Width 0x3
305
#define fDD_DWORD 0x2
306
#define fDD_BYTE_AND_WORD 0x3
308
#define mDD_BusMaster 0x4
309
#define fDD_NoBusMaster 0x0
310
#define fDD_BusMaster 0x4
312
#define mDD_Type 0x18
313
#define fDD_TypeStandard 0x00
314
#define fDD_TypeA 0x08
315
#define fDD_TypeB 0x10
316
#define fDD_TypeF 0x18
318
typedef struct DMA_Des_s {
323
} DMA_DES, *PDMA_DES;
325
typedef struct DMA_Range_s {
329
} DMA_RANGE, *PDMA_RANGE;
331
#define DType_Range sizeof(DMA_RANGE)
333
typedef struct DMA_Resource_s {
335
DMA_RANGE DMA_Data[ANYSIZE_ARRAY];
336
} DMA_RESOURCE, *PDMA_RESOURCE;
338
/* IO_DES.Type constants and masks */
339
#define fIOD_PortType 0x1
340
#define fIOD_Memory 0x0
342
#define fIOD_DECODE 0x00fc
343
#define fIOD_10_BIT_DECODE 0x0004
344
#define fIOD_12_BIT_DECODE 0x0008
345
#define fIOD_16_BIT_DECODE 0x0010
346
#define fIOD_POSITIVE_DECODE 0x0020
347
#define fIOD_PASSIVE_DECODE 0x0040
348
#define fIOD_WINDOW_DECODE 0x0080
350
typedef struct IO_Des_s {
353
DWORDLONG IOD_Alloc_Base;
354
DWORDLONG IOD_Alloc_End;
358
/* IO_RANGE.IOR_Alias constants */
359
#define IO_ALIAS_10_BIT_DECODE 0x00000004
360
#define IO_ALIAS_12_BIT_DECODE 0x00000010
361
#define IO_ALIAS_16_BIT_DECODE 0x00000000
362
#define IO_ALIAS_POSITIVE_DECODE 0x000000FF
364
typedef struct IO_Range_s {
369
DWORD IOR_RangeFlags;
371
} IO_RANGE, *PIO_RANGE;
373
#define IOType_Range sizeof(IO_RANGE)
375
typedef struct IO_Resource_s {
377
IO_RANGE IO_Data[ANYSIZE_ARRAY];
378
} IO_RESOURCE, *PIO_RESOURCE;
380
/* IRQ_DES.IRQD_flags constants */
381
#define mIRQD_Share 0x1
382
#define fIRQD_Exclusive 0x0
383
#define fIRQD_Share 0x1
385
#define fIRQD_Share_Bit 0
386
#define fIRQD_Level_Bit 1
388
#define mIRQD_Edge_Level 0x2
389
#define fIRQD_Level 0x0
390
#define fIRQD_Edge 0x2
392
typedef struct IRQ_Des_32_s {
396
ULONG IRQD_Alloc_Num;
397
ULONG32 IRQD_Affinity;
398
} IRQ_DES_32, *PIRQ_DES_32;
400
typedef struct IRQ_Des_64_s {
404
ULONG IRQD_Alloc_Num;
405
ULONG64 IRQD_Affinity;
406
} IRQ_DES_64, *PIRQ_DES_64;
409
typedef IRQ_DES_64 IRQ_DES;
410
typedef PIRQ_DES_64 PIRQ_DES;
412
typedef IRQ_DES_32 IRQ_DES;
413
typedef PIRQ_DES_32 PIRQ_DES;
416
typedef struct IRQ_Range_s {
420
} IRQ_RANGE, *PIRQ_RANGE;
422
#define IRQType_Range sizeof(IRQ_RANGE)
424
typedef struct IRQ_Resource_s {
426
IRQ_RANGE IRQ_Data[ANYSIZE_ARRAY];
427
} IRQ_RESOURCE, *PIRQ_RESOURCE;
429
/* MEM_DES.MD_Flags constants */
430
#define mMD_MemoryType 0x1
431
#define fMD_MemoryType mMD_MemoryType
435
#define mMD_32_24 0x2
436
#define fMD_32_24 mMD_32_24
440
#define mMD_Prefetchable 0x4
441
#define fMD_Prefetchable mMD_Prefetchable
442
#define fMD_Pref mMD_Prefetchable
443
#define fMD_PrefetchDisallowed 0x0
444
#define fMD_PrefetchAllowed 0x4
446
#define mMD_Readable 0x8
447
#define fMD_Readable mMD_Readable
448
#define fMD_ReadAllowed 0x0
449
#define fMD_ReadDisallowed 0x8
451
#define mMD_CombinedWrite 0x10
452
#define fMD_CombinedWrite mMD_CombinedWrite
453
#define fMD_CombinedWriteDisallowed 0x0
454
#define fMD_CombinedWriteAllowed 0x10
456
#define mMD_Cacheable 0x20
457
#define fMD_NonCacheable 0x0
458
#define fMD_Cacheable 0x20
460
typedef struct Mem_Des_s {
463
DWORDLONG MD_Alloc_Base;
464
DWORDLONG MD_Alloc_End;
467
} MEM_DES, *PMEM_DES;
469
typedef struct Mem_Range_s {
476
} MEM_RANGE, *PMEM_RANGE;
478
#define MType_Range sizeof(MEM_RANGE)
480
typedef struct Mem_Resource_s {
482
MEM_RANGE MEM_Data[ANYSIZE_ARRAY];
483
} MEM_RESOURCE, *PMEM_RESOURCE;
485
/* MFCARD_DES.PMF_Flags constants */
486
#define fPMF_AUDIO_ENABLE 0x8
487
#define mPMF_AUDIO_ENABLE fPMF_AUDIO_ENABLE
489
typedef struct MfCard_Des_s {
493
BYTE PMF_ConfigOptions;
494
BYTE PMF_IoResourceIndex;
495
BYTE PMF_Reserved[2];
496
DWORD PMF_ConfigRegisterBase;
497
} MFCARD_DES, *PMFCARD_DES;
499
typedef struct MfCard_Resource_s {
500
MFCARD_DES MfCard_Header;
501
} MFCARD_RESOURCE, *PMFCARD_RESOURCE;
503
/* PCCARD_DES.PCD_Flags constants */
505
typedef struct PcCard_Des_s {
509
BYTE PCD_ConfigIndex;
510
BYTE PCD_Reserved[3];
511
DWORD PCD_MemoryCardBase1;
512
DWORD PCD_MemoryCardBase2;
513
} PCCARD_DES, *PPCCARD_DES;
515
#define mPCD_IO_8_16 0x1
516
#define fPCD_IO_8 0x0
517
#define fPCD_IO_16 0x1
518
#define mPCD_MEM_8_16 0x2
519
#define fPCD_MEM_8 0x0
520
#define fPCD_MEM_16 0x2
521
#define mPCD_MEM_A_C 0xC
522
#define fPCD_MEM1_A 0x4
523
#define fPCD_MEM2_A 0x8
524
#define fPCD_IO_ZW_8 0x10
525
#define fPCD_IO_SRC_16 0x20
526
#define fPCD_IO_WS_16 0x40
527
#define mPCD_MEM_WS 0x300
528
#define fPCD_MEM_WS_ONE 0x100
529
#define fPCD_MEM_WS_TWO 0x200
530
#define fPCD_MEM_WS_THREE 0x300
532
#define fPCD_MEM_A 0x4
534
#define fPCD_ATTRIBUTES_PER_WINDOW 0x8000
536
#define fPCD_IO1_16 0x00010000
537
#define fPCD_IO1_ZW_8 0x00020000
538
#define fPCD_IO1_SRC_16 0x00040000
539
#define fPCD_IO1_WS_16 0x00080000
541
#define fPCD_IO2_16 0x00100000
542
#define fPCD_IO2_ZW_8 0x00200000
543
#define fPCD_IO2_SRC_16 0x00400000
544
#define fPCD_IO2_WS_16 0x00800000
546
#define mPCD_MEM1_WS 0x03000000
547
#define fPCD_MEM1_WS_ONE 0x01000000
548
#define fPCD_MEM1_WS_TWO 0x02000000
549
#define fPCD_MEM1_WS_THREE 0x03000000
550
#define fPCD_MEM1_16 0x04000000
552
#define mPCD_MEM2_WS 0x30000000
553
#define fPCD_MEM2_WS_ONE 0x10000000
554
#define fPCD_MEM2_WS_TWO 0x20000000
555
#define fPCD_MEM2_WS_THREE 0x30000000
556
#define fPCD_MEM2_16 0x40000000
558
#define PCD_MAX_MEMORY 2
561
typedef struct PcCard_Resource_s {
562
PCCARD_DES PcCard_Header;
563
} PCCARD_RESOURCE, *PPCCARD_RESOURCE;
566
/* CONFLICT_DETAILS.CD.ulMask constants */
567
#define CM_CDMASK_DEVINST 0x00000001
568
#define CM_CDMASK_RESDES 0x00000002
569
#define CM_CDMASK_FLAGS 0x00000004
570
#define CM_CDMASK_DESCRIPTION 0x00000008
571
#define CM_CDMASK_VALID 0x0000000F
573
/* CONFLICT_DETAILS.CD.ulFlags constants */
574
#define CM_CDFLAGS_DRIVER 0x00000001
575
#define CM_CDFLAGS_ROOT_OWNED 0x00000002
576
#define CM_CDFLAGS_RESERVED 0x00000004
578
typedef struct _CONFLICT_DETAILS_A {
581
DEVINST CD_dnDevInst;
584
CHAR CD_szDescription[MAX_PATH];
585
} CONFLICT_DETAILS_A , *PCONFLICT_DETAILS_A;
587
typedef struct _CONFLICT_DETAILS_W {
590
DEVINST CD_dnDevInst;
593
WCHAR CD_szDescription[MAX_PATH];
594
} CONFLICT_DETAILS_W , *PCONFLICT_DETAILS_W;
597
typedef CONFLICT_DETAILS_W CONFLICT_DETAILS;
598
typedef PCONFLICT_DETAILS_W PCONFLICT_DETAILS;
600
typedef CONFLICT_DETAILS_A CONFLICT_DETAILS;
601
typedef PCONFLICT_DETAILS_A PCONFLICT_DETAILS;
605
#define CMP_MAGIC 0x01234567
617
CMP_RegisterNotification(
618
IN HANDLE hRecipient,
619
IN LPVOID lpvNotificationFilter,
621
OUT PULONG pluhDevNotify);
628
IN DWORD dwProcessId);
633
CMP_UnregisterNotification(IN ULONG luhDevNotify);
635
/* FIXME: Missing CMP_WaitNoPendingInstallEvents */
636
/* FIXME: Missing CMP_WaitServicesAvailable */
638
/* CM_Add_Empty_Log_Conf.ulFlags constants */
639
#define BASIC_LOG_CONF 0x00000000
640
#define FILTERED_LOG_CONF 0x00000001
641
#define ALLOC_LOG_CONF 0x00000002
642
#define BOOT_LOG_CONF 0x00000003
643
#define FORCED_LOG_CONF 0x00000004
644
#define OVERRIDE_LOG_CONF 0x00000005
645
#define NUM_LOG_CONF 0x00000006
646
#define LOG_CONF_BITS 0x00000007
648
#define PRIORITY_EQUAL_FIRST 0x00000008
649
#define PRIORITY_EQUAL_LAST 0x00000000
650
#define PRIORITY_BIT 0x00000008
655
CM_Add_Empty_Log_Conf(
656
OUT PLOG_CONF plcLogConf,
657
IN DEVINST dnDevInst,
658
IN PRIORITY Priority,
664
CM_Add_Empty_Log_Conf_Ex(
665
OUT PLOG_CONF plcLogConf,
666
IN DEVINST dnDevInst,
667
IN PRIORITY Priority,
669
IN HMACHINE hMachine);
671
/* CM_Add_ID.ulFlags constants */
672
#define CM_ADD_ID_HARDWARE 0x00000000
673
#define CM_ADD_ID_COMPATIBLE 0x00000001
674
#define CM_ADD_ID_BITS 0x00000001
680
IN DEVINST dnDevInst,
688
IN DEVINST dnDevInst,
691
IN HMACHINE hMachine);
697
IN DEVINST dnDevInst,
700
IN HMACHINE hMachine);
706
IN DEVINST dnDevInst,
711
#define CM_Add_ID CM_Add_IDW
712
#define CM_Add_ID_Ex CM_Add_ID_ExW
714
#define CM_Add_ID CM_Add_IDA
715
#define CM_Add_ID_Ex CM_Add_ID_ExA
718
/* FIXME: Obsolete CM_Add_Range */
724
OUT PRES_DES prdResDes,
725
IN LOG_CONF lcLogConf,
726
IN RESOURCEID ResourceID,
727
IN PCVOID ResourceData,
728
IN ULONG ResourceLen,
735
OUT PRES_DES prdResDes,
736
IN LOG_CONF lcLogConf,
737
IN RESOURCEID ResourceID,
738
IN PCVOID ResourceData,
739
IN ULONG ResourceLen,
741
IN HMACHINE hMachine);
747
IN PCSTR UNCServerName,
748
OUT PHMACHINE phMachine);
754
IN PCWSTR UNCServerName,
755
OUT PHMACHINE phMachine);
758
#define CM_Connect_Machine CM_Connect_MachineW
760
#define CM_Connect_Machine CM_Connect_MachineA
763
/* Flags for CM_Create_DevNode[_Ex].ulFlags constants */
764
#define CM_CREATE_DEVNODE_NORMAL 0x00000000
765
#define CM_CREATE_DEVNODE_NO_WAIT_INSTALL 0x00000001
766
#define CM_CREATE_DEVNODE_PHANTOM 0x00000002
767
#define CM_CREATE_DEVNODE_GENERATE_ID 0x00000004
768
#define CM_CREATE_DEVNODE_DO_NOT_INSTALL 0x00000008
769
#define CM_CREATE_DEVNODE_BITS 0x0000000F
771
#define CM_CREATE_DEVINST_NORMAL CM_CREATE_DEVNODE_NORMAL
772
#define CM_CREATE_DEVINST_NO_WAIT_INSTALL CM_CREATE_DEVNODE_NO_WAIT_INSTALL
773
#define CM_CREATE_DEVINST_PHANTOM CM_CREATE_DEVNODE_PHANTOM
774
#define CM_CREATE_DEVINST_GENERATE_ID CM_CREATE_DEVNODE_GENERATE_ID
775
#define CM_CREATE_DEVINST_DO_NOT_INSTALL CM_CREATE_DEVNODE_DO_NOT_INSTALL
776
#define CM_CREATE_DEVINST_BITS CM_CREATE_DEVNODE_BITS
782
OUT PDEVINST pdnDevInst,
783
IN DEVINSTID_A pDeviceID,
791
OUT PDEVINST pdnDevInst,
792
IN DEVINSTID_W pDeviceID,
799
CM_Create_DevNode_ExA(
800
OUT PDEVINST pdnDevInst,
801
IN DEVINSTID_A pDeviceID,
809
CM_Create_DevNode_ExW(
810
OUT PDEVINST pdnDevInst,
811
IN DEVINSTID_W pDeviceID,
816
#define CM_Create_DevInstW CM_Create_DevNodeW
817
#define CM_Create_DevInstA CM_Create_DevNodeA
818
#define CM_Create_DevInst_ExW CM_Create_DevNode_ExW
819
#define CM_Create_DevInst_ExA CM_Create_DevNode_ExA
821
#define CM_Create_DevNode CM_Create_DevNodeW
822
#define CM_Create_DevInst CM_Create_DevNodeW
823
#define CM_Create_DevNode_Ex CM_Create_DevNode_ExW
824
#define CM_Create_DevInst_Ex CM_Create_DevInst_ExW
826
#define CM_Create_DevNode CM_Create_DevNodeA
827
#define CM_Create_DevInst CM_Create_DevNodeA
828
#define CM_Create_DevNode_Ex CM_Create_DevNode_ExA
829
#define CM_Create_DevInst_Ex CM_Create_DevNode_ExA
832
/* FIXME: Obsolete CM_Create_Range_List */
834
/* Flags for CM_Delete_Class_Key.ulFlags constants */
835
#define CM_DELETE_CLASS_ONLY 0x00000000
836
#define CM_DELETE_CLASS_SUBKEYS 0x00000001
837
#define CM_DELETE_CLASS_BITS 0x00000001
849
CM_Delete_Class_Key_Ex(
857
CM_Delete_DevNode_Key(
858
IN DEVNODE dnDevNode,
859
IN ULONG ulHardwareProfile,
865
CM_Delete_DevNode_Key_Ex(
866
IN DEVNODE dnDevNode,
867
IN ULONG ulHardwareProfile,
871
#define CM_Delete_DevInst_Key CM_Delete_DevNode_Key
872
#define CM_Delete_DevInst_Key_Ex CM_Delete_DevNode_Key_Ex
874
/* FIXME: Obsolete CM_Delete_Range */
875
/* FIXME: Obsolete CM_Detected_Resource_Conflict */
876
/* FIXME: Obsolete CM_Detected_Resource_Conflict_Ex */
882
IN DEVINST dnDevInst,
888
CM_Disable_DevNode_Ex(
889
IN DEVINST dnDevInst,
891
IN HMACHINE hMachine);
893
#define CM_Disable_DevInst CM_Disable_DevNode
894
#define CM_Disable_DevInst_Ex CM_Disable_DevNode_Ex
899
CM_Disconnect_Machine(
900
IN HMACHINE hMachine);
906
IN DEVINST dnDevInst,
912
CM_Enable_DevNode_Ex(
913
IN DEVINST dnDevInst,
915
IN HMACHINE hMachine);
917
#define CM_Enable_DevInst CM_Enable_DevNode
918
#define CM_Enable_DevInst_Ex CM_Enable_DevNode_Ex
923
CM_Enumerate_Classes(
924
IN ULONG ulClassIndex,
925
OUT LPGUID ClassGuid,
931
CM_Enumerate_Classes_Ex(
932
IN ULONG ulClassIndex,
933
OUT LPGUID ClassGuid,
935
IN HMACHINE hMachine);
940
CM_Enumerate_EnumeratorsA(
941
IN ULONG ulEnumIndex,
943
IN OUT PULONG pulLength,
949
CM_Enumerate_Enumerators_ExA(
950
IN ULONG ulEnumIndex,
952
IN OUT PULONG pulLength,
954
IN HMACHINE hMachine);
959
CM_Enumerate_Enumerators_ExW(
960
IN ULONG ulEnumIndex,
962
IN OUT PULONG pulLength,
964
IN HMACHINE hMachine);
969
CM_Enumerate_EnumeratorsW(
970
IN ULONG ulEnumIndex,
972
IN OUT PULONG pulLength,
976
#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsW
977
#define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExW
979
#define CM_Enumerate_Enumerators CM_Enumerate_EnumeratorsA
980
#define CM_Enumerate_Enumerators_Ex CM_Enumerate_Enumerators_ExA
983
/* FIXME: Obsolete CM_Find_Range */
984
/* FIXME: Obsolete CM_First_Range */
990
IN LOG_CONF lcLogConfToBeFreed,
997
IN LOG_CONF lcLogConfToBeFreed,
999
IN HMACHINE hMachine);
1004
CM_Free_Log_Conf_Handle(
1005
IN LOG_CONF lcLogConf);
1007
/* FIXME: Obsolete CM_Free_Range_List */
1013
OUT PRES_DES prdResDes,
1014
IN RES_DES rdResDes,
1021
OUT PRES_DES prdResDes,
1022
IN RES_DES rdResDes,
1024
IN HMACHINE hMachine);
1029
CM_Free_Res_Des_Handle(
1030
IN RES_DES rdResDes);
1035
CM_Free_Resource_Conflict_Handle(
1036
IN CONFLICT_LIST clConflictList);
1042
OUT PDEVINST pdnDevInst,
1043
IN DEVINST dnDevInst,
1050
OUT PDEVINST pdnDevInst,
1051
IN DEVINST dnDevInst,
1053
IN HMACHINE hMachine);
1059
IN LPGUID ClassGuid,
1061
IN OUT PULONG pulLength,
1068
IN LPGUID ClassGuid,
1070
IN OUT PULONG pulLength,
1076
CM_Get_Class_Name_ExA(
1077
IN LPGUID ClassGuid,
1079
IN OUT PULONG pulLength,
1081
IN HMACHINE hMachine);
1086
CM_Get_Class_Name_ExW(
1087
IN LPGUID ClassGuid,
1089
IN OUT PULONG pulLength,
1091
IN HMACHINE hMachine);
1094
#define CM_Get_Class_Name CM_Get_Class_NameW
1095
#define CM_Get_Class_Name_Ex CM_Get_Class_Name_ExW
1097
#define CM_Get_Class_Name CM_Get_Class_NameA
1098
#define CM_Get_Class_Name_Ex CM_Get_Class_Name_ExA
1099
#endif /* UNICODE */
1104
CM_Get_Class_Key_NameA(
1105
IN LPGUID ClassGuid,
1106
OUT LPSTR pszKeyName,
1107
IN OUT PULONG pulLength,
1113
CM_Get_Class_Key_NameW(
1114
IN LPGUID ClassGuid,
1115
OUT LPWSTR pszKeyName,
1116
IN OUT PULONG pulLength,
1122
CM_Get_Class_Key_Name_ExA(
1123
IN LPGUID ClassGuid,
1124
OUT LPSTR pszKeyName,
1125
IN OUT PULONG pulLength,
1127
IN HMACHINE hMachine);
1132
CM_Get_Class_Key_Name_ExW(
1133
IN LPGUID ClassGuid,
1134
OUT LPWSTR pszKeyName,
1135
IN OUT PULONG pulLength,
1137
IN HMACHINE hMachine);
1140
#define CM_Get_Class_Key_Name CM_Get_Class_Key_NameW
1141
#define CM_Get_Class_Key_Name_Ex CM_Get_Class_Key_Name_ExW
1143
#define CM_Get_Class_Key_Name CM_Get_Class_Key_NameA
1144
#define CM_Get_Class_Key_Name_Ex CM_Get_Class_Key_Name_ExA
1145
#endif /* UNICODE */
1147
/* FIXME: Obsolete CM_Get_Class_Registry_Property */
1153
OUT PULONG pulDepth,
1154
IN DEVINST dnDevInst,
1161
OUT PULONG pulDepth,
1162
IN DEVINST dnDevInst,
1164
IN HMACHINE hMachine);
1170
IN DEVINST dnDevInst,
1178
CM_Get_Device_ID_ExA(
1179
IN DEVINST dnDevInst,
1183
IN HMACHINE hMachine);
1188
CM_Get_Device_ID_ExW(
1189
IN DEVINST dnDevInst,
1193
IN HMACHINE hMachine);
1199
IN DEVINST dnDevInst,
1205
#define CM_Get_Device_ID CM_Get_Device_IDW
1206
#define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExW
1208
#define CM_Get_Device_ID CM_Get_Device_IDA
1209
#define CM_Get_Device_ID_Ex CM_Get_Device_ID_ExA
1210
#endif /* UNICODE */
1215
CM_Get_Device_ID_ListA(
1216
IN PCSTR pszFilter, OPTIONAL
1224
CM_Get_Device_ID_List_ExA(
1225
IN PCSTR pszFilter, OPTIONAL
1229
IN HMACHINE hMachine);
1234
CM_Get_Device_ID_List_ExW(
1235
IN PCWSTR pszFilter, OPTIONAL
1239
IN HMACHINE hMachine);
1244
CM_Get_Device_ID_ListW(
1245
IN PCWSTR pszFilter, OPTIONAL
1251
#define CM_Get_Device_ID_List CM_Get_Device_ID_ListW
1252
#define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExW
1254
#define CM_Get_Device_ID_List CM_Get_Device_ID_ListA
1255
#define CM_Get_Device_ID_List_Ex CM_Get_Device_ID_List_ExA
1256
#endif /* UNICODE */
1261
CM_Get_Device_ID_List_SizeA(
1263
IN PCSTR pszFilter, OPTIONAL
1269
CM_Get_Device_ID_List_Size_ExA(
1271
IN PCSTR pszFilter, OPTIONAL
1273
IN HMACHINE hMachine);
1278
CM_Get_Device_ID_List_Size_ExW(
1280
IN PCWSTR pszFilter, OPTIONAL
1282
IN HMACHINE hMachine);
1287
CM_Get_Device_ID_List_SizeW(
1289
IN PCWSTR pszFilter, OPTIONAL
1293
#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeW
1294
#define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExW
1296
#define CM_Get_Device_ID_List_Size CM_Get_Device_ID_List_SizeA
1297
#define CM_Get_Device_ID_List_Size_Ex CM_Get_Device_ID_List_Size_ExA
1298
#endif /* UNICODE */
1303
CM_Get_Device_ID_Size(
1305
IN DEVINST dnDevInst,
1311
CM_Get_Device_ID_Size_Ex(
1313
IN DEVINST dnDevInst,
1315
IN HMACHINE hMachine);
1317
/* FIXME: Obsolete CM_Get_Device_Interface_Alias */
1318
/* FIXME: Obsolete CM_Get_Device_Interface_Alias_Ex */
1319
/* FIXME: Obsolete CM_Get_Device_Interface_List */
1320
/* FIXME: Obsolete CM_Get_Device_Interface_List_Ex */
1321
/* FIXME: Obsolete CM_Get_Device_Interface_List_Size */
1322
/* FIXME: Obsolete CM_Get_Device_Interface_List_Size_Ex */
1323
/* FIXME: Obsolete CM_Get_DevNode_Custom_Property */
1324
/* FIXME: Obsolete CM_Get_DevNode_Custom_Property_Ex */
1329
CM_Get_DevNode_Registry_PropertyA(
1330
IN DEVINST dnDevInst,
1331
IN ULONG ulProperty,
1332
OUT PULONG pulRegDataType, OPTIONAL
1333
OUT PVOID Buffer, OPTIONAL
1334
IN OUT PULONG pulLength,
1340
CM_Get_DevNode_Registry_PropertyW(
1341
IN DEVINST dnDevInst,
1342
IN ULONG ulProperty,
1343
OUT PULONG pulRegDataType, OPTIONAL
1344
OUT PVOID Buffer, OPTIONAL
1345
IN OUT PULONG pulLength,
1351
CM_Get_DevNode_Registry_Property_ExA(
1352
IN DEVINST dnDevInst,
1353
IN ULONG ulProperty,
1354
OUT PULONG pulRegDataType, OPTIONAL
1355
OUT PVOID Buffer, OPTIONAL
1356
IN OUT PULONG pulLength,
1358
IN HMACHINE hMachine);
1363
CM_Get_DevNode_Registry_Property_ExW(
1364
IN DEVINST dnDevInst,
1365
IN ULONG ulProperty,
1366
OUT PULONG pulRegDataType, OPTIONAL
1367
OUT PVOID Buffer, OPTIONAL
1368
IN OUT PULONG pulLength,
1370
IN HMACHINE hMachine);
1372
#define CM_Get_DevInst_Registry_PropertyW CM_Get_DevNode_Registry_PropertyW
1373
#define CM_Get_DevInst_Registry_PropertyA CM_Get_DevNode_Registry_PropertyA
1374
#define CM_Get_DevInst_Registry_Property_ExW CM_Get_DevNode_Registry_Property_ExW
1375
#define CM_Get_DevInst_Registry_Property_ExA CM_Get_DevNode_Registry_Property_ExA
1378
#define CM_Get_DevInst_Registry_Property CM_Get_DevNode_Registry_PropertyW
1379
#define CM_Get_DevInst_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExW
1380
#define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyW
1381
#define CM_Get_DevNode_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExW
1383
#define CM_Get_DevInst_Registry_Property CM_Get_DevNode_Registry_PropertyA
1384
#define CM_Get_DevInst_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExA
1385
#define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyA
1386
#define CM_Get_DevNode_Registry_Property_Ex CM_Get_DevNode_Registry_Property_ExA
1387
#endif /* UNICODE */
1392
CM_Get_DevNode_Status(
1393
OUT PULONG pulStatus,
1394
OUT PULONG pulProblemNumber,
1395
IN DEVINST dnDevInst,
1401
CM_Get_DevNode_Status_Ex(
1402
OUT PULONG pulStatus,
1403
OUT PULONG pulProblemNumber,
1404
IN DEVINST dnDevInst,
1406
IN HMACHINE hMachine);
1408
#define CM_Get_DevInst_Status CM_Get_DevNode_Status
1409
#define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex
1411
/* CM_Get_First_Log_Conf.ulFlags constants */
1412
#define BASIC_LOG_CONF 0x00000000 /* Specifies the req list. */
1413
#define FILTERED_LOG_CONF 0x00000001 /* Specifies the filtered req list. */
1414
#define ALLOC_LOG_CONF 0x00000002 /* Specifies the Alloc Element. */
1415
#define BOOT_LOG_CONF 0x00000003 /* Specifies the RM Alloc Element. */
1416
#define FORCED_LOG_CONF 0x00000004 /* Specifies the Forced Log Conf */
1417
#define OVERRIDE_LOG_CONF 0x00000005 /* Specifies the Override req list. */
1418
#define NUM_LOG_CONF 0x00000006 /* Number of Log Conf type */
1419
#define LOG_CONF_BITS 0x00000007 /* The bits of the log conf type. */
1424
CM_Get_First_Log_Conf(
1425
OUT PLOG_CONF plcLogConf, OPTIONAL
1426
IN DEVINST dnDevInst,
1432
CM_Get_First_Log_Conf_Ex(
1433
OUT PLOG_CONF plcLogConf, OPTIONAL
1434
IN DEVINST dnDevInst,
1436
IN HMACHINE hMachine);
1441
CM_Get_Global_State(
1442
OUT PULONG pulState,
1448
CM_Get_Global_State_Ex(
1449
OUT PULONG pulState,
1451
IN HMACHINE hMachine);
1453
/* FIXME: Obsolete CM_Get_Hardware_Profile_Info */
1454
/* FIXME: Obsolete CM_Get_Hardware_Profile_Info_Ex */
1459
CM_Get_HW_Prof_FlagsA(
1460
IN DEVINSTID_A szDevInstName,
1461
IN ULONG ulHardwareProfile,
1462
OUT PULONG pulValue,
1468
CM_Get_HW_Prof_FlagsW(
1469
IN DEVINSTID_W szDevInstName,
1470
IN ULONG ulHardwareProfile,
1471
OUT PULONG pulValue,
1477
CM_Get_HW_Prof_Flags_ExA(
1478
IN DEVINSTID_A szDevInstName,
1479
IN ULONG ulHardwareProfile,
1480
OUT PULONG pulValue,
1482
IN HMACHINE hMachine);
1487
CM_Get_HW_Prof_Flags_ExW(
1488
IN DEVINSTID_W szDevInstName,
1489
IN ULONG ulHardwareProfile,
1490
OUT PULONG pulValue,
1492
IN HMACHINE hMachine);
1495
#define CM_Get_HW_Prof_Flags CM_Get_HW_Prof_FlagsW
1496
#define CM_Get_HW_Prof_Flags_Ex CM_Get_HW_Prof_Flags_ExW
1498
#define CM_Get_HW_Prof_Flags CM_Get_HW_Prof_FlagsA
1499
#define CM_Get_HW_Prof_Flags_Ex CM_Get_HW_Prof_Flags_ExA
1500
#endif /* UNICODE */
1505
CM_Get_Log_Conf_Priority(
1506
IN LOG_CONF lcLogConf,
1507
OUT PPRIORITY pPriority,
1513
CM_Get_Log_Conf_Priority_Ex(
1514
IN LOG_CONF lcLogConf,
1515
OUT PPRIORITY pPriority,
1517
IN HMACHINE hMachine);
1522
CM_Get_Next_Log_Conf(
1523
OUT PLOG_CONF plcLogConf, OPTIONAL
1524
IN LOG_CONF lcLogConf,
1530
CM_Get_Next_Log_Conf_Ex(
1531
OUT PLOG_CONF plcLogConf, OPTIONAL
1532
IN LOG_CONF lcLogConf,
1534
IN HMACHINE hMachine);
1539
CM_Get_Next_Res_Des(
1540
OUT PRES_DES prdResDes,
1541
IN RES_DES rdResDes,
1542
IN RESOURCEID ForResource,
1543
OUT PRESOURCEID pResourceID,
1549
CM_Get_Next_Res_Des_Ex(
1550
OUT PRES_DES prdResDes,
1551
IN RES_DES rdResDes,
1552
IN RESOURCEID ForResource,
1553
OUT PRESOURCEID pResourceID,
1555
IN HMACHINE hMachine);
1561
OUT PDEVINST pdnDevInst,
1562
IN DEVINST dnDevInst,
1569
OUT PDEVINST pdnDevInst,
1570
IN DEVINST dnDevInst,
1572
IN HMACHINE hMachine);
1577
CM_Get_Res_Des_Data(
1578
IN RES_DES rdResDes,
1586
CM_Get_Res_Des_Data_Ex(
1587
IN RES_DES rdResDes,
1591
IN HMACHINE hMachine);
1596
CM_Get_Res_Des_Data_Size(
1598
IN RES_DES rdResDes,
1604
CM_Get_Res_Des_Data_Size_Ex(
1606
IN RES_DES rdResDes,
1608
IN HMACHINE hMachine);
1613
CM_Get_Resource_Conflict_Count(
1614
IN CONFLICT_LIST clConflictList,
1615
OUT PULONG pulCount);
1620
CM_Get_Resource_Conflict_DetailsA(
1621
IN CONFLICT_LIST clConflictList,
1623
IN OUT PCONFLICT_DETAILS_A pConflictDetails);
1628
CM_Get_Resource_Conflict_DetailsW(
1629
IN CONFLICT_LIST clConflictList,
1631
IN OUT PCONFLICT_DETAILS_W pConflictDetails);
1634
#define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsW
1636
#define CM_Get_Resource_Conflict_Details CM_Get_Resource_Conflict_DetailsA
1637
#endif /* UNICODE */
1643
OUT PDEVINST pdnDevInst,
1651
OUT PDEVINST pdnDevInst,
1654
IN HMACHINE hMachine);
1666
IN HMACHINE hMachine);
1668
/* FIXME: Obsolete CM_Intersect_Range_List */
1669
/* FIXME: Obsolete CM_Invert_Range_List */
1674
CM_Is_Dock_Station_Present(
1675
OUT PBOOL pbPresent);
1680
CM_Is_Dock_Station_Present_Ex(
1681
OUT PBOOL pbPresent,
1682
IN HMACHINE hMachine);
1684
/* CM_Locate_DevNode.ulFlags constants */
1685
#define CM_LOCATE_DEVNODE_NORMAL 0x00000000
1686
#define CM_LOCATE_DEVNODE_PHANTOM 0x00000001
1687
#define CM_LOCATE_DEVNODE_CANCELREMOVE 0x00000002
1688
#define CM_LOCATE_DEVNODE_NOVALIDATION 0x00000004
1689
#define CM_LOCATE_DEVNODE_BITS 0x00000007
1691
#define CM_LOCATE_DEVINST_NORMAL CM_LOCATE_DEVNODE_NORMAL
1692
#define CM_LOCATE_DEVINST_PHANTOM CM_LOCATE_DEVNODE_PHANTOM
1693
#define CM_LOCATE_DEVINST_CANCELREMOVE CM_LOCATE_DEVNODE_CANCELREMOVE
1694
#define CM_LOCATE_DEVINST_NOVALIDATION CM_LOCATE_DEVNODE_NOVALIDATION
1695
#define CM_LOCATE_DEVINST_BITS CM_LOCATE_DEVNODE_BITS
1701
OUT PDEVINST pdnDevInst,
1702
IN DEVINSTID_A pDeviceID, OPTIONAL
1708
CM_Locate_DevNode_ExA(
1709
OUT PDEVINST pdnDevInst,
1710
IN DEVINSTID_A pDeviceID, OPTIONAL
1712
IN HMACHINE hMachine);
1717
CM_Locate_DevNode_ExW(
1718
OUT PDEVINST pdnDevInst,
1719
IN DEVINSTID_W pDeviceID, OPTIONAL
1721
IN HMACHINE hMachine);
1727
OUT PDEVINST pdnDevInst,
1728
IN DEVINSTID_W pDeviceID, OPTIONAL
1731
#define CM_Locate_DevInstA CM_Locate_DevNodeA
1732
#define CM_Locate_DevInstW CM_Locate_DevNodeW
1733
#define CM_Locate_DevInst_ExA CM_Locate_DevNode_ExA
1734
#define CM_Locate_DevInst_ExW CM_Locate_DevNode_ExW
1737
#define CM_Locate_DevNode CM_Locate_DevNodeW
1738
#define CM_Locate_DevInst CM_Locate_DevNodeW
1739
#define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExW
1740
#define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExW
1742
#define CM_Locate_DevNode CM_Locate_DevNodeA
1743
#define CM_Locate_DevInst CM_Locate_DevNodeA
1744
#define CM_Locate_DevNode_Ex CM_Locate_DevNode_ExA
1745
#define CM_Locate_DevInst_Ex CM_Locate_DevNode_ExA
1746
#endif /* UNICODE */
1748
/* FIXME: Obsolete CM_Merge_Range_List */
1754
OUT PRES_DES prdResDes,
1755
IN RES_DES rdResDes,
1756
IN RESOURCEID ResourceID,
1757
IN PCVOID ResourceData,
1758
IN ULONG ResourceLen,
1764
CM_Modify_Res_Des_Ex(
1765
OUT PRES_DES prdResDes,
1766
IN RES_DES rdResDes,
1767
IN RESOURCEID ResourceID,
1768
IN PCVOID ResourceData,
1769
IN ULONG ResourceLen,
1771
IN HMACHINE hMachine);
1773
/* FIXME: Obsolete CM_Move_DevNode */
1774
/* FIXME: Obsolete CM_Move_DevNode_Ex */
1775
/* FIXME: Obsolete CM_Next_Range */
1781
IN LPGUID ClassGuid, OPTIONAL
1782
IN LPCSTR pszClassName, OPTIONAL
1783
IN REGSAM samDesired,
1784
IN REGDISPOSITION Disposition,
1792
IN LPGUID ClassGuid, OPTIONAL
1793
IN LPCWSTR pszClassName, OPTIONAL
1794
IN REGSAM samDesired,
1795
IN REGDISPOSITION Disposition,
1802
CM_Open_Class_Key_ExA(
1803
IN LPGUID pszClassGuid, OPTIONAL
1804
IN LPCSTR pszClassName, OPTIONAL
1805
IN REGSAM samDesired,
1806
IN REGDISPOSITION Disposition,
1809
IN HMACHINE hMachine);
1814
CM_Open_Class_Key_ExW(
1815
IN LPGUID pszClassGuid, OPTIONAL
1816
IN LPCWSTR pszClassName, OPTIONAL
1817
IN REGSAM samDesired,
1818
IN REGDISPOSITION Disposition,
1821
IN HMACHINE hMachine);
1824
#define CM_Open_Class_Key CM_Open_Class_KeyW
1825
#define CM_Open_Class_Key_Ex CM_Open_Class_Key_ExW
1827
#define CM_Open_Class_Key CM_Open_Class_KeyA
1828
#define CM_Open_Class_Key_Ex CM_Open_Class_Key_ExA
1829
#endif /* UNICODE */
1834
CM_Open_DevNode_Key(
1835
IN DEVINST dnDevNode,
1836
IN REGSAM samDesired,
1837
IN ULONG ulHardwareProfile,
1838
IN REGDISPOSITION Disposition,
1839
OUT PHKEY phkDevice,
1845
CM_Open_DevNode_Key_Ex(
1846
IN DEVINST dnDevNode,
1847
IN REGSAM samDesired,
1848
IN ULONG ulHardwareProfile,
1849
IN REGDISPOSITION Disposition,
1850
OUT PHKEY phkDevice,
1852
IN HMACHINE hMachine);
1854
#define CM_Open_DevInst_Key CM_Open_DevNode_Key
1855
#define CM_Open_DevInst_Key_Ex CM_Open_DevNode_Key_Ex
1857
/* CM_Query_And_Remove_SubTree.ulFlags constants */
1858
#define CM_REMOVE_UI_OK 0x00000000
1859
#define CM_REMOVE_UI_NOT_OK 0x00000001
1860
#define CM_REMOVE_NO_RESTART 0x00000002
1861
#define CM_REMOVE_BITS 0x00000003
1866
CM_Query_And_Remove_SubTreeA(
1867
IN DEVINST dnAncestor,
1868
OUT PPNP_VETO_TYPE pVetoType,
1869
OUT LPSTR pszVetoName,
1870
IN ULONG ulNameLength,
1876
CM_Query_And_Remove_SubTreeW(
1877
IN DEVINST dnAncestor,
1878
OUT PPNP_VETO_TYPE pVetoType,
1879
OUT LPWSTR pszVetoName,
1880
IN ULONG ulNameLength,
1886
CM_Query_And_Remove_SubTree_ExA(
1887
IN DEVINST dnAncestor,
1888
OUT PPNP_VETO_TYPE pVetoType,
1889
OUT LPSTR pszVetoName,
1890
IN ULONG ulNameLength,
1892
IN HMACHINE hMachine);
1897
CM_Query_And_Remove_SubTree_ExW(
1898
IN DEVINST dnAncestor,
1899
OUT PPNP_VETO_TYPE pVetoType,
1900
OUT LPWSTR pszVetoName,
1901
IN ULONG ulNameLength,
1903
IN HMACHINE hMachine);
1905
/* FIXME: Obsolete CM_Query_Arbitrator_Free_Data */
1906
/* FIXME: Obsolete CM_Query_Arbitrator_Free_Data_Ex */
1907
/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size */
1908
/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */
1909
/* FIXME: Obsolete CM_Query_Arbitrator_Free_Size_Ex */
1910
/* FIXME: Obsolete CM_Query_Remove_SubTree */
1911
/* FIXME: Obsolete CM_Query_Remove_SubTree_Ex */
1916
CM_Query_Resource_Conflict_List(
1917
OUT PCONFLICT_LIST pclConflictList,
1918
IN DEVINST dnDevInst,
1919
IN RESOURCEID ResourceID,
1920
IN PCVOID ResourceData,
1921
IN ULONG ResourceLen,
1923
IN HMACHINE hMachine);
1925
/* CM_Reenumerate_DevNode.ulFlags constants */
1926
#define CM_REENUMERATE_NORMAL 0x00000000
1927
#define CM_REENUMERATE_SYNCHRONOUS 0x00000001
1928
#define CM_REENUMERATE_RETRY_INSTALLATION 0x00000002
1929
#define CM_REENUMERATE_ASYNCHRONOUS 0x00000004
1930
#define CM_REENUMERATE_BITS 0x00000007
1935
CM_Reenumerate_DevNode(
1936
IN DEVINST dnDevInst,
1942
CM_Reenumerate_DevNode_Ex(
1943
IN DEVINST dnDevInst,
1945
IN HMACHINE hMachine);
1947
#define CM_Reenumerate_DevInst CM_Reenumerate_DevNode
1948
#define CM_Reenumerate_DevInst_Ex CM_Reenumerate_DevNode_Ex
1950
/* FIXME: Obsolete CM_Register_Device_Driver */
1951
/* FIXME: Obsolete CM_Register_Device_Driver_Ex */
1952
/* FIXME: Obsolete CM_Register_Device_Interface */
1953
/* FIXME: Obsolete CM_Register_Device_Interface_Ex */
1954
/* FIXME: Obsolete CM_Remove_SubTree */
1955
/* FIXME: Obsolete CM_Remove_SubTree_Ex */
1960
CM_Request_Device_EjectA(
1961
IN DEVINST dnDevInst,
1962
OUT PPNP_VETO_TYPE pVetoType,
1963
OUT LPSTR pszVetoName,
1964
IN ULONG ulNameLength,
1970
CM_Request_Device_Eject_ExW(
1971
IN DEVINST dnDevInst,
1972
OUT PPNP_VETO_TYPE pVetoType,
1973
OUT LPWSTR pszVetoName,
1974
IN ULONG ulNameLength,
1976
IN HMACHINE hMachine);
1981
CM_Request_Device_Eject_ExA(
1982
IN DEVINST dnDevInst,
1983
OUT PPNP_VETO_TYPE pVetoType,
1984
OUT LPSTR pszVetoName,
1985
IN ULONG ulNameLength,
1987
IN HMACHINE hMachine);
1992
CM_Request_Device_EjectW(
1993
IN DEVINST dnDevInst,
1994
OUT PPNP_VETO_TYPE pVetoType,
1995
OUT LPWSTR pszVetoName,
1996
IN ULONG ulNameLength,
2000
#define CM_Request_Device_Eject CM_Request_Device_EjectW
2001
#define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExW
2003
#define CM_Request_Device_Eject CM_Request_Device_EjectA
2004
#define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExA
2005
#endif /* UNICODE */
2010
CM_Request_Eject_PC(
2016
CM_Request_Eject_PC_Ex(
2017
IN HMACHINE hMachine);
2019
/* CM_Run_Detection[_Ex].ulFlags constants */
2020
#define CM_DETECT_NEW_PROFILE 0x00000001
2021
#define CM_DETECT_CRASHED 0x00000002
2022
#define CM_DETECT_HWPROF_FIRST_BOOT 0x00000004
2023
#define CM_DETECT_RUN 0x80000000
2024
#define CM_DETECT_BITS 0x80000007
2035
CM_Run_Detection_Ex(
2037
IN HMACHINE hMachine);
2039
/* FIXME: Obsolete CM_Set_Class_Registry_Property */
2044
CM_Set_DevNode_Problem(
2045
IN DEVINST dnDevInst,
2052
CM_Set_DevNode_Problem_Ex(
2053
IN DEVINST dnDevInst,
2056
IN HMACHINE hMachine);
2058
#define CM_Set_DevInst_Problem CM_Set_DevNode_Problem
2059
#define CM_Set_DevInst_Problem_Ex CM_Set_DevNode_Problem_Ex
2064
CM_Set_DevNode_Registry_PropertyA(
2065
IN DEVINST dnDevInst,
2066
IN ULONG ulProperty,
2067
IN PCVOID Buffer, OPTIONAL
2074
CM_Set_DevNode_Registry_PropertyW(
2075
IN DEVINST dnDevInst,
2076
IN ULONG ulProperty,
2077
IN PCVOID Buffer, OPTIONAL
2084
CM_Set_DevNode_Registry_Property_ExA(
2085
IN DEVINST dnDevInst,
2086
IN ULONG ulProperty,
2087
IN PCVOID Buffer, OPTIONAL
2090
IN HMACHINE hMachine);
2095
CM_Set_DevNode_Registry_Property_ExW(
2096
IN DEVINST dnDevInst,
2097
IN ULONG ulProperty,
2098
IN PCVOID Buffer, OPTIONAL
2101
IN HMACHINE hMachine);
2103
#define CM_Set_DevInst_Registry_PropertyW CM_Set_DevNode_Registry_PropertyW
2104
#define CM_Set_DevInst_Registry_PropertyA CM_Set_DevNode_Registry_PropertyA
2105
#define CM_Set_DevInst_Registry_Property_ExW CM_Set_DevNode_Registry_Property_ExW
2106
#define CM_Set_DevInst_Registry_Property_ExA CM_Set_DevNode_Registry_Property_ExA
2109
#define CM_Set_DevInst_Registry_Property CM_Set_DevNode_Registry_PropertyW
2110
#define CM_Set_DevInst_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW
2111
#define CM_Set_DevNode_Registry_Property CM_Set_DevNode_Registry_PropertyW
2112
#define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExW
2114
#define CM_Set_DevInst_Registry_Property CM_Set_DevNode_Registry_PropertyA
2115
#define CM_Set_DevInst_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA
2116
#define CM_Set_DevNode_Registry_Property CM_Set_DevNode_Registry_PropertyA
2117
#define CM_Set_DevNode_Registry_Property_Ex CM_Set_DevNode_Registry_Property_ExA
2118
#endif /* UNICODE */
2124
IN ULONG ulHardwareProfile,
2131
IN ULONG ulHardwareProfile,
2133
IN HMACHINE hMachine);
2135
/* CM_Set_HW_Prof_Flags[_Ex].ulFlags constants */
2136
#define CM_SET_HW_PROF_FLAGS_UI_NOT_OK (0x00000001)
2137
#define CM_SET_HW_PROF_FLAGS_BITS (0x00000001)
2142
CM_Set_HW_Prof_FlagsA(
2143
IN DEVINSTID_A szDevInstName,
2151
CM_Set_HW_Prof_FlagsW(
2152
IN DEVINSTID_W szDevInstName,
2160
CM_Set_HW_Prof_Flags_ExA(
2161
IN DEVINSTID_A szDevInstName,
2165
IN HMACHINE hMachine);
2170
CM_Set_HW_Prof_Flags_ExW(
2171
IN DEVINSTID_W szDevInstName,
2175
IN HMACHINE hMachine);
2178
#define CM_Set_HW_Prof_Flags CM_Set_HW_Prof_FlagsW
2179
#define CM_Set_HW_Prof_Flags_Ex CM_Set_HW_Prof_Flags_ExW
2181
#define CM_Set_HW_Prof_Flags CM_Set_HW_Prof_FlagsA
2182
#define CM_Set_HW_Prof_Flags_Ex CM_Set_HW_Prof_Flags_ExA
2183
#endif /* UNICODE */
2185
/* CM_Setup_DevInst[_Ex].ulFlags constants */
2186
#define CM_SETUP_DEVNODE_READY (0x00000000)
2187
#define CM_SETUP_DEVINST_READY CM_SETUP_DEVNODE_READY
2188
#define CM_SETUP_DOWNLOAD (0x00000001)
2189
#define CM_SETUP_WRITE_LOG_CONFS (0x00000002)
2190
#define CM_SETUP_PROP_CHANGE (0x00000003)
2191
#define CM_SETUP_DEVNODE_RESET (0x00000004)
2192
#define CM_SETUP_DEVINST_RESET CM_SETUP_DEVNODE_RESET
2193
#define CM_SETUP_BITS (0x00000007)
2199
IN DEVINST dnDevInst,
2205
CM_Setup_DevNode_Ex(
2206
IN DEVINST dnDevInst,
2208
IN HMACHINE hMachine);
2210
/* FIXME: Obsolete CM_Test_Range_Available */
2215
CM_Uninstall_DevNode(
2216
IN DEVINST dnPhantom,
2222
CM_Uninstall_DevNode_Ex(
2223
IN DEVINST dnPhantom,
2225
IN HMACHINE hMachine);
2227
/* FIXME: Obsolete CM_Unregister_Device_Interface */
2228
/* FIXME: Obsolete CM_Unregister_Device_Interface_Ex */
2230
#define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents
2235
CMP_WaitNoPendingInstallEvents(
2236
IN DWORD dwTimeout);
2238
#include <poppack.h>
2244
#endif /* _CFGMGR32_H_ */