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