[KS]
[reactos.git] / reactos / include / reactos / idl / pnp.idl
1 /*
2 * Plug and Play Manager RPC interface definition
3 */
4
5 #include <ms-dtyp.idl>
6
7 const unsigned long PNP_MAX_STRING_LEN = 32767;
8 const unsigned long PNP_MAX_DEVICE_ID_LEN = 200;
9 const unsigned long PNP_MAX_GUID_STRING_LEN = 39;
10 const unsigned long PNP_MAX_DEVINTERFACE_LEN = PNP_MAX_STRING_LEN;
11 const unsigned long PNP_MAX_CULTURE_NAME_LEN = 85;
12 const unsigned long PNP_MAX_CM_PATH = 360;
13 const unsigned long PNP_MAX_PROP_SIZE = 65534;
14 const unsigned long PNP_MAX_PROP_COUNT = 32767;
15 const unsigned long PNP_MAX_BUFFER_SIZE = 16000000;
16
17 cpp_quote("#ifndef _CFGMGR32_H_")
18 typedef unsigned long RESOURCEID;
19
20 typedef struct _HWPROFILEINFO {
21 DWORD HWPI_ulHWProfile;
22 WCHAR HWPI_szFriendlyName[80];
23 DWORD HWPI_dwFlags;
24 } HWPROFILEINFO;
25
26 cpp_quote("#endif")
27 typedef unsigned long DEVPROPTYPE;
28 typedef [range(0, PNP_MAX_PROP_SIZE)] unsigned long PNP_PROP_SIZE;
29 typedef [range(0, PNP_MAX_PROP_COUNT)] unsigned long PNP_PROP_COUNT;
30 typedef [range(0, PNP_MAX_STRING_LEN)] unsigned long PNP_RPC_STRING_LEN;
31 typedef [range(0, PNP_MAX_BUFFER_SIZE)] unsigned long PNP_RPC_BUFFER_SIZE;
32 typedef PNP_PROP_SIZE *PPNP_PROP_SIZE;
33 typedef PNP_PROP_COUNT *PPNP_PROP_COUNT;
34 typedef PNP_RPC_STRING_LEN *PPNP_RPC_STRING_LEN;
35 typedef PNP_RPC_BUFFER_SIZE *PPNP_RPC_BUFFER_SIZE;
36
37 cpp_quote("#ifndef _CFG_INCLUDED_")
38
39 typedef enum _PNP_VETO_TYPE {
40 PNP_VetoTypeUnknown = 0,
41 PNP_VetoLegacyDevice = 1,
42 PNP_VetoPendingClose = 2,
43 PNP_VetoWindowsApp = 3,
44 PNP_VetoWindowsService = 4,
45 PNP_VetoOutstandingOpen = 5,
46 PNP_VetoDevice = 6,
47 PNP_VetoDriver = 7,
48 PNP_VetoIllegalDeviceRequest = 8,
49 PNP_VetoInsufficientPower = 9,
50 PNP_VetoNonDisableable = 10,
51 PNP_VetoLegacyDriver = 11,
52 PNP_VetoInsufficientRights = 12,
53 } *PPNP_VETO_TYPE;
54
55 cpp_quote("#endif")
56
57 cpp_quote("#if 0")
58
59 typedef struct _BUSNUMBER_DES {
60 DWORD BUSD_Count;
61 DWORD BUSD_Type;
62 DWORD BUSD_Flags;
63 DWORD BUSD_Alloc_Base;
64 DWORD BUSD_Alloc_End;
65 } BUSNUMBER_DES, *PBUSNUMBER_DES;
66
67 typedef struct _BUSNUMBER_RANGE {
68 DWORD BUSR_Min;
69 DWORD BUSR_Max;
70 DWORD BUSR_nBusNumbers;
71 DWORD BUSR_Flags;
72 } BUSNUMBER_RANGE, *PBUSNUMBER_RANGE;
73
74 typedef struct _BUSNUMBER_RESOURCE {
75 BUSNUMBER_DES BusNumber_Header;
76 BUSNUMBER_RANGE BusNumber_Data[1];
77 } BUSNUMBER_RESOURCE, *PBUSNUMBER_RESOURCE;
78
79 typedef struct _CS_DES {
80 DWORD CSD_SignatureLength;
81 DWORD CSD_LegacyDataOffset;
82 DWORD CSD_LegacyDataSize;
83 DWORD CSD_Flags;
84 GUID CSD_ClassGuid;
85 BYTE CSD_Signature[1];
86 } CS_DES, *PCS_DES;
87
88 typedef struct _CS_RESOURCE {
89 CS_DES CS_Header;
90 } CS_RESOURCE, *PCS_RESOURCE;
91
92 typedef struct _DEVPRIVATE_DES {
93 DWORD PD_Count;
94 DWORD PD_Type;
95 DWORD PD_Data1;
96 DWORD PD_Data2;
97 DWORD PD_Data3;
98 DWORD PD_Flags;
99 } DEVPRIVATE_DES, *PDEVPRIVATE_DES;
100
101 typedef struct _DEVPRIVATE_RANGE {
102 DWORD PR_Data1;
103 DWORD PR_Data2;
104 DWORD PR_Data3;
105 } DEVPRIVATE_RANGE, *PDEVPRIVATE_RANGE;
106
107 typedef struct _DEVPRIVATE_RESOURCE {
108 DEVPRIVATE_DES PRV_Header;
109 DEVPRIVATE_RANGE PRV_Data[1];
110 } DEVPRIVATE_RESOURCE, *PDEVPRIVATE_RESOURCE;
111
112 typedef struct _DMA_DES {
113 DWORD DD_Count;
114 DWORD DD_Type;
115 DWORD DD_Flags;
116 unsigned long DD_Alloc_Chan;
117 } DMA_DES, *PDMA_DES;
118
119 typedef struct _DMA_RANGE {
120 DWORD DR_Min;
121 DWORD DR_Max;
122 DWORD DR_Flags;
123 } DMA_RANGE, *PDMA_RANGE;
124
125 typedef struct _DMA_RESOURCE {
126 DMA_DES DMA_Header;
127 DMA_RANGE DMA_Data[1];
128 } DMA_RESOURCE, *PDMA_RESOURCE;
129
130 typedef struct _IO_DES {
131 DWORD IOD_Count;
132 DWORD IOD_Type;
133 unsigned __int64 IOD_AllocBase;
134 unsigned __int64 IOD_AllocEnd;
135 DWORD IOD_DesFlags;
136 } IO_DES, *PIO_DES;
137
138 typedef struct _IO_RANGE {
139 unsigned __int64 IOR_Align;
140 DWORD IOR_nPorts;
141 unsigned __int64 IOR_Min;
142 unsigned __int64 IOR_Max;
143 DWORD IOR_RangeFlags;
144 unsigned __int64 IOR_Alias;
145 } IO_RANGE, *PIO_RANGE;
146
147 typedef struct _IO_RESOURCE {
148 IO_DES IO_Header;
149 IO_RANGE IO_Data[1];
150 } IO_RESOURCE, *PIO_RESOURCE;
151
152 typedef struct _IRQ_DES {
153 DWORD IRQD_Count;
154 DWORD IRQD_Type;
155 DWORD IRQD_Flags;
156 DWORD IRQD_Alloc_Num;
157 DWORD IRQD_Affinity;
158 } IRQ_DES, *PIRQ_DES;
159
160 typedef struct _IRQ_RANGE {
161 DWORD IRQR_Min;
162 DWORD IRQR_Max;
163 DWORD IRQR_Flags;
164 } IRQ_RANGE, *PIRQ_RANGE;
165
166 typedef struct _IRQ_RESOURCE {
167 IRQ_DES IO_Header;
168 IRQ_RANGE IO_Data[1];
169 } IRQ_RESOURCE, *PIRQ_RESOURCE;
170
171 typedef struct _MEM_DES {
172 DWORD MD_Count;
173 DWORD MD_Type;
174 unsigned __int64 MD_Alloc_Base;
175 unsigned __int64 MD_Alloc_End;
176 DWORD MD_Flags;
177 DWORD Reserved;
178 } MEM_DES, *PMEM_DES;
179
180 typedef struct _MEM_RANGE {
181 __int64 MR_Align;
182 DWORD MR_nBytes;
183 __int64 MR_Min;
184 __int64 MR_Max;
185 DWORD MR_Flags;
186 DWORD MR_Reserved;
187 } MEM_RANGE, *PMEM_RANGE;
188
189 typedef struct _MEM_RESOURCE {
190 MEM_DES MEM_Header;
191 MEM_RANGE MEM_Data[1];
192 } MEM_RESOURCE, *PMEM_RESOURCE;
193
194 typedef struct _MFCARD_DES {
195 DWORD PMF_Count;
196 DWORD PMF_Type;
197 DWORD PMF_Flags;
198 BYTE PMF_ConfigOptions;
199 BYTE PMF_IoResourceIndex;
200 BYTE PMF_Reserved[2];
201 DWORD PMF_ConfigRegisterBase;
202 } MFCARD_DES, *PMFCARD_DES;
203
204 typedef struct _MFCARD_RESOURCE {
205 MFCARD_DES MfCard_Header;
206 } MFCARD_RESOURCE, *PMFCARD_RESOURCE;
207
208 typedef struct _PCCARD_DES {
209 DWORD PCD_Count;
210 DWORD PCD_Type;
211 DWORD PCD_Flags;
212 BYTE PCD_ConfigIndex;
213 BYTE PCD_Reserved[3];
214 DWORD PCD_MemoryCardBase1;
215 DWORD PCD_MemoryCardBase2;
216 } PCCARD_DES, *PPCCARD_DES;
217
218 typedef struct _PCCARD_RESOURCE {
219 PCCARD_DES PcCard_Header;
220 } PCCARD_RESOURCE, *PPCARD_RESOURCE;
221
222 cpp_quote("#endif")
223
224 typedef struct _PNP_CONFLICT_ENTRY {
225 DWORD DeviceInstance;
226 DWORD DeviceFlags;
227 DWORD ResourceType;
228 __int64 ResourceStart;
229 __int64 ResourceEnd;
230 DWORD ResourceFlags;
231 } PNP_CONFLICT_ENTRY, *PPNP_CONFLICT_ENTRY;
232
233 typedef struct _PNP_CONFLICT_LIST {
234 DWORD Reserved1;
235 DWORD Reserved2;
236 DWORD ConflictsCounted;
237 DWORD ConflictsListed;
238 DWORD RequiredBufferSize;
239 PNP_CONFLICT_ENTRY ConflictEntry[1];
240 } PNP_CONFLICT_LIST, *PPNP_CONFLICT_LIST;
241
242 typedef struct _PNP_CONFLICT_STRINGS {
243 DWORD NullDeviceInstance;
244 WCHAR DeviceInstanceStrings[1];
245 } PNP_CONFLICT_STRINGS, *PPNP_CONFLICT_STRINGS;
246
247 typedef struct _DEVPROPKEY {
248 GUID fmtid;
249 DWORD pid;
250 } DEVPROPKEY;
251
252 [
253 uuid (8D9F4E40-A03D-11CE-8F69-08003E30051B),
254 version(1.0),
255 pointer_default(unique)
256 #ifndef __midl
257 ,explicit_handle
258 #endif
259 ]
260 interface pnp
261 {
262 /* Function 0 */
263 DWORD PNP_Disconnect(
264 [in] handle_t hBinding); /* FIXME */
265
266 /* Function 1 */
267 DWORD PNP_Connect(
268 [in] handle_t hBinding); /* FIXME */
269
270 /* Function 2 */
271 DWORD PNP_GetVersion(
272 [in] handle_t hBinding,
273 [out] WORD *pVersion);
274
275 /* Function 3 */
276 DWORD PNP_GetGlobalState(
277 [in] handle_t hBinding,
278 [out] DWORD *pulState,
279 [in] DWORD ulFlags);
280
281 /* Function 4 */
282 DWORD PNP_InitDetection(
283 [in] handle_t hBinding);
284
285 /* Function 5 */
286 DWORD PNP_ReportLogOn(
287 [in] handle_t hBinding,
288 [in] BOOL Admin,
289 [in] DWORD ProcessId);
290
291 /* Function 6 */
292 DWORD PNP_ValidateDeviceInstance(
293 [in] handle_t hBinding,
294 [in, string, ref] LPWSTR pDeviceID,
295 [in] DWORD ulFlags);
296
297 /* Function 7 */
298 DWORD PNP_GetRootDeviceInstance(
299 [in] handle_t hBinding,
300 [out, string, size_is(ulLength)] LPWSTR pDeviceID,
301 [in] PNP_RPC_STRING_LEN ulLength);
302
303 /* Function 8 */
304 cpp_quote("#define PNP_GET_PARENT_DEVICE_INSTANCE 0x1")
305 cpp_quote("#define PNP_GET_CHILD_DEVICE_INSTANCE 0x2")
306 cpp_quote("#define PNP_GET_SIBLING_DEVICE_INSTANCE 0x3")
307 DWORD PNP_GetRelatedDeviceInstance(
308 [in] handle_t hBinding,
309 [in] DWORD ulRelationship,
310 [in, string, ref] LPWSTR pDeviceID,
311 [out, string, size_is(*pulLength)] LPWSTR pRelatedDeviceId,
312 [in, out] PNP_RPC_STRING_LEN *pulLength,
313 [in] DWORD ulFlags);
314
315 /* Function 9 */
316 cpp_quote("#define PNP_ENUMERATOR_SUBKEYS 0x1")
317 cpp_quote("#define PNP_CLASS_SUBKEYS 0x2")
318 DWORD PNP_EnumerateSubKeys(
319 [in] handle_t hBinding,
320 [in] DWORD ulBranch,
321 [in] DWORD ulIndex,
322 [out, string, size_is(ulLength)] LPWSTR Buffer,
323 [in] PNP_RPC_STRING_LEN ulLength,
324 [out] PNP_RPC_STRING_LEN *pulRequiredLen,
325 [in] DWORD ulFlags);
326
327 /* Function 10 */
328 DWORD PNP_GetDeviceList(
329 [in] handle_t hBinding,
330 [in, string, unique] LPWSTR pszFilter,
331 [out, size_is(*pulLength), length_is(*pulLength)] LPWSTR Buffer,
332 [in, out] PNP_RPC_STRING_LEN *pulLength,
333 [in] DWORD ulFlags);
334
335 /* Function 11 */
336 DWORD PNP_GetDeviceListSize(
337 [in] handle_t hBinding,
338 [in, string, unique] LPWSTR pszFilter,
339 [out] PNP_RPC_BUFFER_SIZE *pulLen,
340 [in] DWORD ulFlags);
341
342 /* Function 12 */
343 DWORD PNP_GetDepth(
344 [in] handle_t hBinding,
345 [in, string, ref] LPWSTR pszDeviceID,
346 [out] DWORD *pulDepth,
347 [in] DWORD ulFlags);
348
349 /* Function 13 */
350 DWORD PNP_GetDeviceRegProp(
351 [in] handle_t hBinding,
352 [in, string, ref] LPWSTR pDeviceID,
353 [in] DWORD ulProperty,
354 [in, out] DWORD *pulRegDataType,
355 [out, size_is(*pulTransferLen), length_is(*pulTransferLen)] BYTE *Buffer,
356 [in, out] PNP_PROP_SIZE *pulTransferLen,
357 [in, out] PNP_PROP_SIZE *pulLength,
358 [in] DWORD ulFlags);
359
360 /* Function 14 */
361 DWORD PNP_SetDeviceRegProp(
362 [in] handle_t hBinding,
363 [in, string, ref] LPWSTR pDeviceId,
364 [in] DWORD ulProperty,
365 [in] DWORD ulDataType,
366 [in, size_is(ulLength)] BYTE *Buffer,
367 [in] PNP_PROP_SIZE ulLength,
368 [in] DWORD ulFlags);
369
370 /* Function 15 */
371 DWORD PNP_GetClassInstance(
372 [in] handle_t hBinding,
373 [in, string, ref] LPWSTR pDeviceId,
374 [out, string, size_is(ulLength)] LPWSTR pszClassInstance,
375 [in] PNP_RPC_STRING_LEN ulLength);
376
377 /* Function 16 */
378 DWORD PNP_CreateKey(
379 [in] handle_t hBinding,
380 [in, string, ref] LPWSTR pszSubKey,
381 [in] DWORD samDesired,
382 [in] DWORD ulFlags);
383
384 /* Function 17 */
385 DWORD PNP_DeleteRegistryKey(
386 [in] handle_t hBinding,
387 [in, string, ref] LPWSTR pszDeviceID,
388 [in, string, ref] LPWSTR pszParentKey,
389 [in, string, ref] LPWSTR pszChildKey,
390 [in] DWORD ulFlags);
391
392 /* Function 18 */
393 DWORD PNP_GetClassCount(
394 [in] handle_t hBinding,
395 [out] DWORD *pulClassCount,
396 [in] DWORD ulFlags);
397
398 /* Function 19 */
399 DWORD PNP_GetClassName(
400 [in] handle_t hBinding,
401 [in, string, ref] LPWSTR pszClassGuid,
402 [out, string, size_is(*pulLength)] LPWSTR Buffer,
403 [in, out] PNP_RPC_STRING_LEN *pulLength,
404 [in] DWORD ulFlags);
405
406 /* Function 20 */
407 DWORD PNP_DeleteClassKey(
408 [in] handle_t hBinding,
409 [in, string, ref] LPWSTR pszClassGuid,
410 [in] DWORD ulFlags);
411
412 /* Function 21 */
413 DWORD PNP_GetInterfaceDeviceAlias(
414 [in] handle_t hBinding,
415 [in, string, ref] LPWSTR pszInterfaceDevice,
416 [in] GUID *AliasInterfaceGuid,
417 [out, string, size_is(*pulTransferLen)] LPWSTR pszAliasInterfaceDevice,
418 [in, out] PNP_RPC_STRING_LEN *pulLength,
419 [in, out] PNP_RPC_STRING_LEN *pulTransferLen,
420 [in] DWORD ulFlags);
421
422 /* Function 22 */
423 DWORD PNP_GetInterfaceDeviceList(
424 [in] handle_t hBinding,
425 [in] GUID *InterfaceGuid,
426 [in, string, unique] LPWSTR pszDeviceID,
427 [out, size_is(*pulLength), length_is(*pulLength)] BYTE *Buffer,
428 [in, out] PNP_RPC_BUFFER_SIZE *pulLength,
429 [in] DWORD ulFlags);
430
431 /* Function 23 */
432 DWORD PNP_GetInterfaceDeviceListSize(
433 [in] handle_t hBinding,
434 [out] PNP_RPC_BUFFER_SIZE *pulLen,
435 [in] GUID *InterfaceGuid,
436 [in, string, unique] LPWSTR pszDeviceID,
437 [in] DWORD ulFlags);
438
439 /* Function 24 */
440 DWORD PNP_RegisterDeviceClassAssociation(
441 [in] handle_t hBinding,
442 [in, string, unique] LPWSTR pszDeviceID,
443 [in] GUID *InterfaceGuid,
444 [in, string, unique] LPWSTR pszReference,
445 [out, string, size_is(*pulTransferLen)] LPWSTR pszSymLink,
446 [in, out] PNP_RPC_STRING_LEN *pulLength,
447 [in, out] PNP_RPC_STRING_LEN *pulTransferLen,
448 [in] DWORD ulFlags);
449
450 /* Function 25 */
451 DWORD PNP_UnregisterDeviceClassAssociation(
452 [in] handle_t hBinding,
453 [in, string, unique] LPWSTR pszInterfaceDevice,
454 [in] DWORD ulFlags);
455
456 /* Function 26 */
457 DWORD PNP_GetClassRegProp(
458 [in] handle_t hBinding,
459 [in, string, ref] LPWSTR pszClassGuid,
460 [in] DWORD ulProperty,
461 [in, out] DWORD *pulRegDataType,
462 [out, size_is(*pulTransferLen), length_is(*pulTransferLen)] BYTE *Buffer,
463 [in, out] PNP_RPC_STRING_LEN *pulTransferLen,
464 [in, out] PNP_RPC_STRING_LEN *pulLength,
465 [in] DWORD ulFlags);
466
467 /* Function 27 */
468 DWORD PNP_SetClassRegProp(
469 [in] handle_t hBinding,
470 [in, string, ref] LPWSTR *pszClassGuid,
471 [in] DWORD ulProperty,
472 [in] DWORD ulDataType,
473 [in, size_is(ulLength)] BYTE *Buffer,
474 [in] PNP_PROP_SIZE ulLength,
475 [in] DWORD ulFlags);
476
477 /* Function 28 */
478 DWORD PNP_CreateDevInst(
479 [in] handle_t hBinding,
480 [in, out, string, size_is(ulLength)] LPWSTR pszDeviceID,
481 [in, string, ref] LPWSTR pszParentDeviceID,
482 [in] PNP_RPC_STRING_LEN ulLength,
483 [in] DWORD ulFlags);
484
485 /* Function 29 */
486 cpp_quote("#define PNP_DEVINST_MOVE 0x2")
487 cpp_quote("#define PNP_DEVINST_SETUP 0x3")
488 cpp_quote("#define PNP_DEVINST_ENABLE 0x4")
489 cpp_quote("#define PNP_DEVINST_DISABLE 0x5")
490 cpp_quote("#define PNP_DEVINST_REENUMERATE 0x7")
491 DWORD PNP_DeviceInstanceAction(
492 [in] handle_t hBinding,
493 [in] DWORD ulAction,
494 [in] DWORD ulFlags,
495 [in, string, unique] LPWSTR pszDeviceInstance1,
496 [in, string, unique] LPWSTR pszDeviceInstance2);
497
498 /* Function 30 */
499 DWORD PNP_GetDeviceStatus(
500 [in] handle_t hBinding,
501 [in, string, unique] LPWSTR pDeviceID,
502 [out] DWORD *pulStatus,
503 [out] DWORD *pulProblem,
504 [in] DWORD ulFlags);
505
506 /* Function 31 */
507 DWORD PNP_SetDeviceProblem(
508 [in] handle_t hBinding,
509 [in, string, unique] LPWSTR pDeviceID,
510 [in] DWORD ulProblem,
511 [in] DWORD ulFlags);
512
513 /* Function 32 */
514 DWORD PNP_DisableDevInst(
515 [in] handle_t hBinding,
516 [in, string, unique] LPWSTR pDeviceID,
517 [in, out, unique] PPNP_VETO_TYPE pVetoType,
518 [in, out, string, unique, size_is(ulNameLength)] LPWSTR pszVetoName,
519 [in] DWORD ulNameLength,
520 [in] DWORD ulFlags);
521
522 /* Function 33 */
523 DWORD PNP_UninstallDevInst(
524 [in] handle_t hBinding,
525 [in, string, unique] LPWSTR pDeviceID,
526 [in] DWORD ulFlags);
527
528 /* Function 34 */
529 DWORD PNP_AddID(
530 [in] handle_t hBinding,
531 [in, string, unique] LPWSTR pszDeviceID,
532 [in, string, ref] LPWSTR pszID,
533 [in] DWORD ulFlags);
534
535 /* Function 35 */
536 DWORD PNP_RegisterDriver(
537 [in] handle_t hBinding,
538 [in, string, ref] LPWSTR pszDeviceID,
539 [in] DWORD ulFlags);
540
541 /* Function 36 */
542 DWORD PNP_QueryRemove(
543 [in] handle_t hBinding,
544 [in, string, ref] LPWSTR pszDeviceID,
545 [in, out, unique] PPNP_VETO_TYPE pVetoType,
546 [in, out, string, unique, size_is(ulNameLength)] LPWSTR pszVetoName,
547 [in] DWORD ulNameLength,
548 [in] DWORD ulFlags);
549
550 /* Function 37 */
551 DWORD PNP_RequestDeviceEject(
552 [in] handle_t hBinding,
553 [in, string, ref] LPWSTR pszDeviceID,
554 [in, out, unique] PPNP_VETO_TYPE pVetoType,
555 [in, out, string, unique, size_is(ulNameLength)] LPWSTR pszVetoName,
556 [in] DWORD ulNameLength,
557 [in] DWORD ulFlags);
558
559 /* Function 38 */
560 DWORD PNP_IsDockStationPresent(
561 [in] handle_t hBinding,
562 [in, out, unique] BOOL *Present);
563
564 /* Function 39 */
565 DWORD PNP_RequestEjectPC(
566 [in] handle_t hBinding);
567
568 /* Function 40 */
569 cpp_quote("#define PNP_GET_HWPROFFLAGS 0x1")
570 cpp_quote("#define PNP_SET_HWPROFFLAGS 0x2")
571 DWORD PNP_HwProfFlags(
572 [in] handle_t hBinding,
573 [in] DWORD ulAction,
574 [in, string, ref] LPWSTR pDeviceID,
575 [in] DWORD ulConfig,
576 [in, out] DWORD *pulValue,
577 [in, out, unique] PPNP_VETO_TYPE pVetoType,
578 [in, out, string, unique, size_is(ulNameLength)] LPWSTR pszVetoName,
579 [in] DWORD ulNameLength,
580 [in] DWORD ulFlags);
581
582 /* Function 41 */
583 DWORD PNP_GetHwProfInfo(
584 [in] handle_t hBinding,
585 [in] DWORD ulIndex,
586 [in, out, ref] HWPROFILEINFO *pHWProfileInfo,
587 [in, range(0, 168)] DWORD ulProfileInfoSize,
588 /* FIXME: should be [in, range(0, sizeof(HWPROFILEINFO))] DWORD ulProfileInfoSize, */
589 [in] DWORD ulFlags);
590
591 /* Function 42 */
592 DWORD PNP_AddEmptyLogConf(
593 [in] handle_t hBinding,
594 [in, string, ref] LPWSTR pDeviceID,
595 [in] DWORD ulPriority,
596 [out] DWORD *pulLogConfTag,
597 [in] DWORD ulFlags);
598
599 /* Function 43 */
600 DWORD PNP_FreeLogConf(
601 [in] handle_t hBinding,
602 [in, string, ref] LPWSTR pDeviceID,
603 [in] DWORD ulLogConfType,
604 [in] DWORD ulLogConfTag,
605 [in] DWORD ulFlags);
606
607 /* Function 44 */
608 DWORD PNP_GetFirstLogConf(
609 [in] handle_t hBinding,
610 [in, string, ref] LPWSTR pDeviceID,
611 [in] DWORD ulLogConfType,
612 [out] DWORD *pulLogConfTag,
613 [in] DWORD ulFlags);
614
615 /* Function 45 */
616 DWORD PNP_GetNextLogConf(
617 [in] handle_t hBinding,
618 [in, string, ref] LPWSTR pDeviceID,
619 [in] DWORD ulLogConfType,
620 [in] DWORD ulCurrentTag,
621 [out] DWORD *pulNextTag,
622 [in] DWORD ulFlags);
623
624 /* Function 46 */
625 DWORD PNP_GetLogConfPriority(
626 [in] handle_t hBinding,
627 [in, string, ref] LPWSTR pDeviceID,
628 [in] DWORD ulType,
629 [in] DWORD ulTag,
630 [out] DWORD *pPriority,
631 [in] DWORD ulFlags);
632
633 /* Function 47 */
634 DWORD PNP_AddResDes(
635 [in] handle_t hBinding,
636 [in, string, ref] LPWSTR pDeviceID,
637 [in] DWORD ulLogConfTag,
638 [in] DWORD ulLogConfType,
639 [in] RESOURCEID ResourceID,
640 [out] DWORD *pulResourceTag,
641 [in, size_is(ResourceLen)] BYTE *ResourceData,
642 [in] PNP_RPC_BUFFER_SIZE ResourceLen,
643 [in] DWORD ulFlags);
644
645 /* Function 48 */
646 DWORD PNP_FreeResDes(
647 [in] handle_t hBinding,
648 [in, string, ref] LPWSTR pDeviceID,
649 [in] DWORD ulLogConfTag,
650 [in] DWORD ulLogConfType,
651 [in] RESOURCEID ResourceID,
652 [in] DWORD ulResourceTag,
653 [out] DWORD *pulPreviousResType,
654 [out] DWORD *pulPreviousResTag,
655 [in] DWORD ulFlags);
656
657 /* Function 49 */
658 DWORD PNP_GetNextResDes(
659 [in] handle_t hBinding,
660 [in, string, ref] LPWSTR pDeviceID,
661 [in] DWORD ulLogConfTag,
662 [in] DWORD ulLogConfType,
663 [in] RESOURCEID ResourceID,
664 [in] DWORD ulResourceTag,
665 [out] DWORD *pulNextResType,
666 [out] DWORD *pulNextResTag,
667 [in] DWORD ulFlags);
668
669 /* Function 50 */
670 DWORD PNP_GetResDesData(
671 [in] handle_t hBinding,
672 [in, string, ref] LPWSTR pDeviceID,
673 [in] DWORD ulLogConfTag,
674 [in] DWORD ulLogConfType,
675 [in] RESOURCEID ResourceID,
676 [in] DWORD ulResourceTag,
677 [out, size_is(BufferLen)] BYTE *Buffer,
678 [in] PNP_RPC_BUFFER_SIZE BufferLen,
679 [in] DWORD ulFlags);
680
681 /* Function 51 */
682 DWORD PNP_GetResDesDataSize(
683 [in] handle_t hBinding,
684 [in, string, ref] LPWSTR pDeviceID,
685 [in] DWORD ulLogConfTag,
686 [in] DWORD ulLogConfType,
687 [in] RESOURCEID ResourceID,
688 [in] DWORD ulResourceTag,
689 [out] DWORD *pulSize,
690 [in] DWORD ulFlags);
691
692 /* Function 52 */
693 DWORD PNP_ModifyResDes(
694 [in] handle_t hBinding,
695 [in, string, ref] LPWSTR pDeviceID,
696 [in] DWORD ulLogConfTag,
697 [in] DWORD ulLogConfType,
698 [in] RESOURCEID CurrentResourceID,
699 [in] RESOURCEID NewResourceID,
700 [in] DWORD ulResourceTag,
701 [in, size_is(ResourceLen)] BYTE *ResourceData,
702 [in] PNP_RPC_BUFFER_SIZE ResourceLen,
703 [in] DWORD ulFlags);
704
705 /* Function 53 */
706 DWORD PNP_DetectResourceConflict(
707 [in] handle_t hBinding,
708 [in, string, ref] LPWSTR pDeviceID,
709 [in] RESOURCEID ResourceID,
710 [in, size_is(ResourceLen)] BYTE *ResourceData,
711 [in] PNP_RPC_BUFFER_SIZE ResourceLen,
712 [out] BOOL *pbConflictDetected,
713 [in] DWORD ulFlags);
714
715 /* Function 54 */
716 DWORD PNP_QueryResConfList(
717 [in] handle_t hBinding,
718 [in, string, ref] LPWSTR pDeviceID,
719 [in] RESOURCEID ResourceID,
720 [in, size_is(ResourceLen)] BYTE *ResourceData,
721 [in] PNP_RPC_BUFFER_SIZE ResourceLen,
722 [out, size_is(BufferLen)] BYTE *Buffer,
723 [in] PNP_RPC_BUFFER_SIZE BufferLen,
724 [in] DWORD ulFlags);
725
726 /* Function 55 */
727 DWORD PNP_SetHwProf(
728 [in] handle_t hBinding,
729 [in] DWORD ulHardwareProfile,
730 [in] DWORD ulFlags);
731
732 /* Function 56 */
733 DWORD PNP_QueryArbitratorFreeData(
734 [in] handle_t hBinding);
735
736 /* Function 57 */
737 DWORD PNP_QueryArbitratorFreeSize(
738 [in] handle_t hBinding);
739
740 /* Function 58 */
741 DWORD PNP_RunDetection(
742 [in] handle_t hBinding,
743 [in] DWORD ulFlags);
744
745 /* Function 59 */
746 DWORD PNP_RegisterNotification(
747 [in] handle_t hBinding);
748
749 /* Function 60 */
750 DWORD PNP_UnregisterNotification(
751 [in] handle_t hBinding);
752
753 cpp_quote("#if _WIN32_WINNT >= 0x0501")
754
755 /* Function 61 */
756 DWORD PNP_GetCustomDevProp(
757 [in] handle_t hBinding,
758 [in, string, ref] LPWSTR pDeviceID,
759 [in, string, ref] LPWSTR CustomPropName,
760 [out] DWORD *pulRegDataType,
761 [out, size_is(*pulLength), length_is(*pulTransferLen)] BYTE *Buffer,
762 [out] PNP_RPC_STRING_LEN *pulTransferLen,
763 [in, out] PNP_RPC_STRING_LEN *pulLength,
764 [in] DWORD ulFlags);
765
766 /* Function 62 */
767 DWORD PNP_GetVersionInternal(
768 [in] handle_t hBinding,
769 [in, out] WORD *pwVersion);
770
771 /* Function 63 */
772 DWORD PNP_GetBlockedDriverInfo(
773 [in] handle_t hBinding,
774 [out, size_is(*pulLength), length_is(*pulTransferLen)] BYTE *Buffer,
775 [out] PNP_RPC_BUFFER_SIZE *pulTransferLen,
776 [in, out] PNP_RPC_BUFFER_SIZE *pulLength,
777 [in] DWORD ulFlags);
778
779 /* Function 64 */
780 DWORD PNP_GetServerSideDeviceInstallFlags(
781 [in] handle_t hBinding,
782 [out] DWORD *pulSSDIFlags,
783 [in] DWORD ulFlags);
784
785 cpp_quote("#if _WIN32_WINNT >= 0x0600")
786
787 /* Function 65 */
788 DWORD PNP_GetObjectPropKeys(
789 [in] handle_t hBinding,
790 [in, string, ref] LPWSTR ObjectName,
791 [in] DWORD ObjectType,
792 [in, string, unique] LPWSTR PropertyCultureName,
793 [in, out] PNP_PROP_COUNT *PropertyCount,
794 [out] PNP_PROP_COUNT *TransferLen,
795 [out, size_is(*PropertyCount), length_is(*TransferLen)] DEVPROPKEY *PropertyKeys,
796 [in] DWORD Flags);
797
798 /* Function 66 */
799 DWORD PNP_GetObjectProp(
800 [in] handle_t hBinding,
801 [in, string, ref] LPWSTR ObjectName,
802 [in] DWORD ObjectType,
803 [in, string, unique] LPWSTR PropertyCultureName,
804 [in] const DEVPROPKEY *PropertyKey,
805 [out] DEVPROPTYPE *PropertyType,
806 [in, out] PNP_PROP_SIZE *PropertySize,
807 [out] PNP_PROP_SIZE *TransferLen,
808 [out, size_is(*PropertySize), length_is(*TransferLen)] BYTE *PropertyBuffer,
809 [in] DWORD Flags);
810
811 /* Function 67 */
812 DWORD PNP_SetObjectProp(
813 [in] handle_t hBinding,
814 [in, string, ref] LPWSTR ObjectName,
815 [in] DWORD ObjectType,
816 [in, string, unique] LPWSTR PropertyCultureName,
817 [in] const DEVPROPKEY *PropertyKey,
818 [in] DEVPROPTYPE PropertyType,
819 [in] PNP_PROP_SIZE PropertySize,
820 [in, unique, size_is(PropertySize)] BYTE *PropertyBuffer,
821 [in] DWORD Flags);
822
823 /* Function 68 */
824 DWORD PNP_InstallDevInst(
825 [in] handle_t hBinding); /* FIXME */
826
827 /* Function 69 */
828 DWORD PNP_ApplyPowerSettings(
829 [in] handle_t hBinding); /* FIXME */
830
831 /* Function 70 */
832 DWORD PNP_DriverStoreAddDriverPackage(
833 [in] handle_t hBinding); /* FIXME */
834
835 /* Function 71 */
836 DWORD PNP_DriverStoreDeleteDriverPackage(
837 [in] handle_t hBinding); /* FIXME */
838
839 /* Function 72 */
840 DWORD PNP_RegisterServiceNotification(
841 [in] handle_t hBinding); /* FIXME */
842
843 /* Function 73 */
844 DWORD PNP_SetActiveService(
845 [in] handle_t hBinding); /* FIXME */
846
847 /* Function 74 */
848 DWORD PNP_DeleteServiceDevices(
849 [in] handle_t hBinding); /* FIXME */
850
851 cpp_quote("#endif /* WIN32_WINNT >= 0x0600 */")
852 cpp_quote("#endif /* WIN32_WINNT >= 0x0501 */")
853
854 }