[WIN32SS][USER32] Simplify CloseWindow (#986)
[reactos.git] / sdk / 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 endpoint("ncacn_np:[\\pipe\\plugplay]")
257 #ifndef __midl
258 ,explicit_handle
259 #endif
260 ]
261 interface pnp
262 {
263 /* Function 0 */
264 DWORD
265 __stdcall
266 PNP_Disconnect(
267 [in] handle_t hBinding); /* FIXME */
268
269 /* Function 1 */
270 DWORD
271 __stdcall
272 PNP_Connect(
273 [in] handle_t hBinding); /* FIXME */
274
275 /* Function 2 */
276 DWORD
277 __stdcall
278 PNP_GetVersion(
279 [in] handle_t hBinding,
280 [out] WORD *pVersion);
281
282 /* Function 3 */
283 DWORD
284 __stdcall
285 PNP_GetGlobalState(
286 [in] handle_t hBinding,
287 [out] DWORD *pulState,
288 [in] DWORD ulFlags);
289
290 /* Function 4 */
291 DWORD
292 __stdcall
293 PNP_InitDetection(
294 [in] handle_t hBinding);
295
296 /* Function 5 */
297 DWORD
298 __stdcall
299 PNP_ReportLogOn(
300 [in] handle_t hBinding,
301 [in] BOOL Admin,
302 [in] DWORD ProcessId);
303
304 /* Function 6 */
305 DWORD
306 __stdcall
307 PNP_ValidateDeviceInstance(
308 [in] handle_t hBinding,
309 [in, string, ref] LPWSTR pDeviceID,
310 [in] DWORD ulFlags);
311
312 /* Function 7 */
313 DWORD
314 __stdcall
315 PNP_GetRootDeviceInstance(
316 [in] handle_t hBinding,
317 [out, string, size_is(ulLength)] LPWSTR pDeviceID,
318 [in] PNP_RPC_STRING_LEN ulLength);
319
320 /* Function 8 */
321 cpp_quote("#define PNP_GET_PARENT_DEVICE_INSTANCE 0x1")
322 cpp_quote("#define PNP_GET_CHILD_DEVICE_INSTANCE 0x2")
323 cpp_quote("#define PNP_GET_SIBLING_DEVICE_INSTANCE 0x3")
324 DWORD
325 __stdcall
326 PNP_GetRelatedDeviceInstance(
327 [in] handle_t hBinding,
328 [in] DWORD ulRelationship,
329 [in, string, ref] LPWSTR pDeviceID,
330 [out, string, size_is(*pulLength)] LPWSTR pRelatedDeviceId,
331 [in, out] PNP_RPC_STRING_LEN *pulLength,
332 [in] DWORD ulFlags);
333
334 /* Function 9 */
335 cpp_quote("#define PNP_ENUMERATOR_SUBKEYS 0x1")
336 cpp_quote("#define PNP_CLASS_SUBKEYS 0x2")
337 DWORD
338 __stdcall
339 PNP_EnumerateSubKeys(
340 [in] handle_t hBinding,
341 [in] DWORD ulBranch,
342 [in] DWORD ulIndex,
343 [out, string, size_is(ulLength)] LPWSTR Buffer,
344 [in] PNP_RPC_STRING_LEN ulLength,
345 [out] PNP_RPC_STRING_LEN *pulRequiredLen,
346 [in] DWORD ulFlags);
347
348 /* Function 10 */
349 DWORD
350 __stdcall
351 PNP_GetDeviceList(
352 [in] handle_t hBinding,
353 [in, string, unique] LPWSTR pszFilter,
354 [out, size_is(*pulLength), length_is(*pulLength)] LPWSTR Buffer,
355 [in, out] PNP_RPC_STRING_LEN *pulLength,
356 [in] DWORD ulFlags);
357
358 /* Function 11 */
359 DWORD
360 __stdcall
361 PNP_GetDeviceListSize(
362 [in] handle_t hBinding,
363 [in, string, unique] LPWSTR pszFilter,
364 [out] PNP_RPC_BUFFER_SIZE *pulLen,
365 [in] DWORD ulFlags);
366
367 /* Function 12 */
368 DWORD
369 __stdcall
370 PNP_GetDepth(
371 [in] handle_t hBinding,
372 [in, string, ref] LPWSTR pszDeviceID,
373 [out] DWORD *pulDepth,
374 [in] DWORD ulFlags);
375
376 /* Function 13 */
377 DWORD
378 __stdcall
379 PNP_GetDeviceRegProp(
380 [in] handle_t hBinding,
381 [in, string, ref] LPWSTR pDeviceID,
382 [in] DWORD ulProperty,
383 [in, out] DWORD *pulRegDataType,
384 [out, size_is(*pulTransferLen), length_is(*pulTransferLen)] BYTE *Buffer,
385 [in, out] PNP_PROP_SIZE *pulTransferLen,
386 [in, out] PNP_PROP_SIZE *pulLength,
387 [in] DWORD ulFlags);
388
389 /* Function 14 */
390 DWORD
391 __stdcall
392 PNP_SetDeviceRegProp(
393 [in] handle_t hBinding,
394 [in, string, ref] LPWSTR pDeviceId,
395 [in] DWORD ulProperty,
396 [in] DWORD ulDataType,
397 [in, size_is(ulLength)] BYTE *Buffer,
398 [in] PNP_PROP_SIZE ulLength,
399 [in] DWORD ulFlags);
400
401 /* Function 15 */
402 DWORD
403 __stdcall
404 PNP_GetClassInstance(
405 [in] handle_t hBinding,
406 [in, string, ref] LPWSTR pDeviceId,
407 [out, string, size_is(ulLength)] LPWSTR pszClassInstance,
408 [in] PNP_RPC_STRING_LEN ulLength);
409
410 /* Function 16 */
411 DWORD
412 __stdcall
413 PNP_CreateKey(
414 [in] handle_t hBinding,
415 [in, string, ref] LPWSTR pszSubKey,
416 [in] DWORD samDesired,
417 [in] DWORD ulFlags);
418
419 /* Function 17 */
420 DWORD
421 __stdcall
422 PNP_DeleteRegistryKey(
423 [in] handle_t hBinding,
424 [in, string, ref] LPWSTR pszDeviceID,
425 [in, string, ref] LPWSTR pszParentKey,
426 [in, string, ref] LPWSTR pszChildKey,
427 [in] DWORD ulFlags);
428
429 /* Function 18 */
430 DWORD
431 __stdcall
432 PNP_GetClassCount(
433 [in] handle_t hBinding,
434 [out] DWORD *pulClassCount,
435 [in] DWORD ulFlags);
436
437 /* Function 19 */
438 DWORD
439 __stdcall
440 PNP_GetClassName(
441 [in] handle_t hBinding,
442 [in, string, ref] LPWSTR pszClassGuid,
443 [out, string, size_is(*pulLength)] LPWSTR Buffer,
444 [in, out] PNP_RPC_STRING_LEN *pulLength,
445 [in] DWORD ulFlags);
446
447 /* Function 20 */
448 DWORD
449 __stdcall
450 PNP_DeleteClassKey(
451 [in] handle_t hBinding,
452 [in, string, ref] LPWSTR pszClassGuid,
453 [in] DWORD ulFlags);
454
455 /* Function 21 */
456 DWORD
457 __stdcall
458 PNP_GetInterfaceDeviceAlias(
459 [in] handle_t hBinding,
460 [in, string, ref] LPWSTR pszInterfaceDevice,
461 [in] GUID *AliasInterfaceGuid,
462 [out, string, size_is(*pulTransferLen)] LPWSTR pszAliasInterfaceDevice,
463 [in, out] PNP_RPC_STRING_LEN *pulLength,
464 [in, out] PNP_RPC_STRING_LEN *pulTransferLen,
465 [in] DWORD ulFlags);
466
467 /* Function 22 */
468 DWORD
469 __stdcall
470 PNP_GetInterfaceDeviceList(
471 [in] handle_t hBinding,
472 [in] GUID *InterfaceGuid,
473 [in, string, unique] LPWSTR pszDeviceID,
474 [out, size_is(*pulLength), length_is(*pulLength)] BYTE *Buffer,
475 [in, out] PNP_RPC_BUFFER_SIZE *pulLength,
476 [in] DWORD ulFlags);
477
478 /* Function 23 */
479 DWORD
480 __stdcall
481 PNP_GetInterfaceDeviceListSize(
482 [in] handle_t hBinding,
483 [out] PNP_RPC_BUFFER_SIZE *pulLen,
484 [in] GUID *InterfaceGuid,
485 [in, string, unique] LPWSTR pszDeviceID,
486 [in] DWORD ulFlags);
487
488 /* Function 24 */
489 DWORD
490 __stdcall
491 PNP_RegisterDeviceClassAssociation(
492 [in] handle_t hBinding,
493 [in, string, unique] LPWSTR pszDeviceID,
494 [in] GUID *InterfaceGuid,
495 [in, string, unique] LPWSTR pszReference,
496 [out, string, size_is(*pulTransferLen)] LPWSTR pszSymLink,
497 [in, out] PNP_RPC_STRING_LEN *pulLength,
498 [in, out] PNP_RPC_STRING_LEN *pulTransferLen,
499 [in] DWORD ulFlags);
500
501 /* Function 25 */
502 DWORD
503 __stdcall
504 PNP_UnregisterDeviceClassAssociation(
505 [in] handle_t hBinding,
506 [in, string, unique] LPWSTR pszInterfaceDevice,
507 [in] DWORD ulFlags);
508
509 /* Function 26 */
510 DWORD
511 __stdcall
512 PNP_GetClassRegProp(
513 [in] handle_t hBinding,
514 [in, string, ref] LPWSTR pszClassGuid,
515 [in] DWORD ulProperty,
516 [in, out] DWORD *pulRegDataType,
517 [out, size_is(*pulTransferLen), length_is(*pulTransferLen)] BYTE *Buffer,
518 [in, out] PNP_RPC_STRING_LEN *pulTransferLen,
519 [in, out] PNP_RPC_STRING_LEN *pulLength,
520 [in] DWORD ulFlags);
521
522 /* Function 27 */
523 DWORD
524 __stdcall
525 PNP_SetClassRegProp(
526 [in] handle_t hBinding,
527 [in, string, ref] LPWSTR pszClassGuid,
528 [in] DWORD ulProperty,
529 [in] DWORD ulDataType,
530 [in, size_is(ulLength)] BYTE *Buffer,
531 [in] PNP_PROP_SIZE ulLength,
532 [in] DWORD ulFlags);
533
534 /* Function 28 */
535 DWORD
536 __stdcall
537 PNP_CreateDevInst(
538 [in] handle_t hBinding,
539 [in, out, string, size_is(ulLength)] LPWSTR pszDeviceID,
540 [in, string, ref] LPWSTR pszParentDeviceID,
541 [in] PNP_RPC_STRING_LEN ulLength,
542 [in] DWORD ulFlags);
543
544 /* Function 29 */
545 cpp_quote("#define PNP_DEVINST_MOVE 0x2")
546 cpp_quote("#define PNP_DEVINST_SETUP 0x3")
547 cpp_quote("#define PNP_DEVINST_ENABLE 0x4")
548 cpp_quote("#define PNP_DEVINST_DISABLE 0x5")
549 cpp_quote("#define PNP_DEVINST_REENUMERATE 0x7")
550 DWORD
551 __stdcall
552 PNP_DeviceInstanceAction(
553 [in] handle_t hBinding,
554 [in] DWORD ulAction,
555 [in] DWORD ulFlags,
556 [in, string, unique] LPWSTR pszDeviceInstance1,
557 [in, string, unique] LPWSTR pszDeviceInstance2);
558
559 /* Function 30 */
560 DWORD
561 __stdcall
562 PNP_GetDeviceStatus(
563 [in] handle_t hBinding,
564 [in, string, unique] LPWSTR pDeviceID,
565 [out] DWORD *pulStatus,
566 [out] DWORD *pulProblem,
567 [in] DWORD ulFlags);
568
569 /* Function 31 */
570 DWORD
571 __stdcall
572 PNP_SetDeviceProblem(
573 [in] handle_t hBinding,
574 [in, string, unique] LPWSTR pDeviceID,
575 [in] DWORD ulProblem,
576 [in] DWORD ulFlags);
577
578 /* Function 32 */
579 DWORD
580 __stdcall
581 PNP_DisableDevInst(
582 [in] handle_t hBinding,
583 [in, string, unique] LPWSTR pDeviceID,
584 [in, out, unique] PPNP_VETO_TYPE pVetoType,
585 [in, out, string, unique, size_is(ulNameLength)] LPWSTR pszVetoName,
586 [in] DWORD ulNameLength,
587 [in] DWORD ulFlags);
588
589 /* Function 33 */
590 DWORD
591 __stdcall
592 PNP_UninstallDevInst(
593 [in] handle_t hBinding,
594 [in, string, unique] LPWSTR pDeviceID,
595 [in] DWORD ulFlags);
596
597 /* Function 34 */
598 DWORD
599 __stdcall
600 PNP_AddID(
601 [in] handle_t hBinding,
602 [in, string, unique] LPWSTR pszDeviceID,
603 [in, string, ref] LPWSTR pszID,
604 [in] DWORD ulFlags);
605
606 /* Function 35 */
607 DWORD
608 __stdcall
609 PNP_RegisterDriver(
610 [in] handle_t hBinding,
611 [in, string, ref] LPWSTR pszDeviceID,
612 [in] DWORD ulFlags);
613
614 /* Function 36 */
615 DWORD
616 __stdcall
617 PNP_QueryRemove(
618 [in] handle_t hBinding,
619 [in, string, ref] LPWSTR pszDeviceID,
620 [in, out, unique] PPNP_VETO_TYPE pVetoType,
621 [in, out, string, unique, size_is(ulNameLength)] LPWSTR pszVetoName,
622 [in] DWORD ulNameLength,
623 [in] DWORD ulFlags);
624
625 /* Function 37 */
626 DWORD
627 __stdcall
628 PNP_RequestDeviceEject(
629 [in] handle_t hBinding,
630 [in, string, ref] LPWSTR pszDeviceID,
631 [in, out, unique] PPNP_VETO_TYPE pVetoType,
632 [in, out, string, unique, size_is(ulNameLength)] LPWSTR pszVetoName,
633 [in] DWORD ulNameLength,
634 [in] DWORD ulFlags);
635
636 /* Function 38 */
637 DWORD
638 __stdcall
639 PNP_IsDockStationPresent(
640 [in] handle_t hBinding,
641 [in, out, unique] BOOL *Present);
642
643 /* Function 39 */
644 DWORD
645 __stdcall
646 PNP_RequestEjectPC(
647 [in] handle_t hBinding);
648
649 /* Function 40 */
650 cpp_quote("#define PNP_GET_HWPROFFLAGS 0x1")
651 cpp_quote("#define PNP_SET_HWPROFFLAGS 0x2")
652 DWORD
653 __stdcall
654 PNP_HwProfFlags(
655 [in] handle_t hBinding,
656 [in] DWORD ulAction,
657 [in, string, ref] LPWSTR pDeviceID,
658 [in] DWORD ulConfig,
659 [in, out] DWORD *pulValue,
660 [in, out, unique] PPNP_VETO_TYPE pVetoType,
661 [in, out, string, unique, size_is(ulNameLength)] LPWSTR pszVetoName,
662 [in] DWORD ulNameLength,
663 [in] DWORD ulFlags);
664
665 /* Function 41 */
666 DWORD
667 __stdcall
668 PNP_GetHwProfInfo(
669 [in] handle_t hBinding,
670 [in] DWORD ulIndex,
671 [in, out, ref] HWPROFILEINFO *pHWProfileInfo,
672 [in, range(0, 168)] DWORD ulProfileInfoSize,
673 /* FIXME: should be [in, range(0, sizeof(HWPROFILEINFO))] DWORD ulProfileInfoSize, */
674 [in] DWORD ulFlags);
675
676 /* Function 42 */
677 DWORD
678 __stdcall
679 PNP_AddEmptyLogConf(
680 [in] handle_t hBinding,
681 [in, string, ref] LPWSTR pDeviceID,
682 [in] DWORD ulPriority,
683 [out] DWORD *pulLogConfTag,
684 [in] DWORD ulFlags);
685
686 /* Function 43 */
687 DWORD
688 __stdcall
689 PNP_FreeLogConf(
690 [in] handle_t hBinding,
691 [in, string, ref] LPWSTR pDeviceID,
692 [in] DWORD ulLogConfType,
693 [in] DWORD ulLogConfTag,
694 [in] DWORD ulFlags);
695
696 /* Function 44 */
697 DWORD
698 __stdcall
699 PNP_GetFirstLogConf(
700 [in] handle_t hBinding,
701 [in, string, ref] LPWSTR pDeviceID,
702 [in] DWORD ulLogConfType,
703 [out] DWORD *pulLogConfTag,
704 [in] DWORD ulFlags);
705
706 /* Function 45 */
707 DWORD
708 __stdcall
709 PNP_GetNextLogConf(
710 [in] handle_t hBinding,
711 [in, string, ref] LPWSTR pDeviceID,
712 [in] DWORD ulLogConfType,
713 [in] DWORD ulCurrentTag,
714 [out] DWORD *pulNextTag,
715 [in] DWORD ulFlags);
716
717 /* Function 46 */
718 DWORD
719 __stdcall
720 PNP_GetLogConfPriority(
721 [in] handle_t hBinding,
722 [in, string, ref] LPWSTR pDeviceID,
723 [in] DWORD ulType,
724 [in] DWORD ulTag,
725 [out] DWORD *pPriority,
726 [in] DWORD ulFlags);
727
728 /* Function 47 */
729 DWORD
730 __stdcall
731 PNP_AddResDes(
732 [in] handle_t hBinding,
733 [in, string, ref] LPWSTR pDeviceID,
734 [in] DWORD ulLogConfTag,
735 [in] DWORD ulLogConfType,
736 [in] RESOURCEID ResourceID,
737 [out] DWORD *pulResourceTag,
738 [in, size_is(ResourceLen)] BYTE *ResourceData,
739 [in] PNP_RPC_BUFFER_SIZE ResourceLen,
740 [in] DWORD ulFlags);
741
742 /* Function 48 */
743 DWORD
744 __stdcall
745 PNP_FreeResDes(
746 [in] handle_t hBinding,
747 [in, string, ref] LPWSTR pDeviceID,
748 [in] DWORD ulLogConfTag,
749 [in] DWORD ulLogConfType,
750 [in] RESOURCEID ResourceID,
751 [in] DWORD ulResourceTag,
752 [out] DWORD *pulPreviousResType,
753 [out] DWORD *pulPreviousResTag,
754 [in] DWORD ulFlags);
755
756 /* Function 49 */
757 DWORD
758 __stdcall
759 PNP_GetNextResDes(
760 [in] handle_t hBinding,
761 [in, string, ref] LPWSTR pDeviceID,
762 [in] DWORD ulLogConfTag,
763 [in] DWORD ulLogConfType,
764 [in] RESOURCEID ResourceID,
765 [in] DWORD ulResourceTag,
766 [out] DWORD *pulNextResType,
767 [out] DWORD *pulNextResTag,
768 [in] DWORD ulFlags);
769
770 /* Function 50 */
771 DWORD
772 __stdcall
773 PNP_GetResDesData(
774 [in] handle_t hBinding,
775 [in, string, ref] LPWSTR pDeviceID,
776 [in] DWORD ulLogConfTag,
777 [in] DWORD ulLogConfType,
778 [in] RESOURCEID ResourceID,
779 [in] DWORD ulResourceTag,
780 [out, size_is(BufferLen)] BYTE *Buffer,
781 [in] PNP_RPC_BUFFER_SIZE BufferLen,
782 [in] DWORD ulFlags);
783
784 /* Function 51 */
785 DWORD
786 __stdcall
787 PNP_GetResDesDataSize(
788 [in] handle_t hBinding,
789 [in, string, ref] LPWSTR pDeviceID,
790 [in] DWORD ulLogConfTag,
791 [in] DWORD ulLogConfType,
792 [in] RESOURCEID ResourceID,
793 [in] DWORD ulResourceTag,
794 [out] DWORD *pulSize,
795 [in] DWORD ulFlags);
796
797 /* Function 52 */
798 DWORD
799 __stdcall
800 PNP_ModifyResDes(
801 [in] handle_t hBinding,
802 [in, string, ref] LPWSTR pDeviceID,
803 [in] DWORD ulLogConfTag,
804 [in] DWORD ulLogConfType,
805 [in] RESOURCEID CurrentResourceID,
806 [in] RESOURCEID NewResourceID,
807 [in] DWORD ulResourceTag,
808 [in, size_is(ResourceLen)] BYTE *ResourceData,
809 [in] PNP_RPC_BUFFER_SIZE ResourceLen,
810 [in] DWORD ulFlags);
811
812 /* Function 53 */
813 DWORD
814 __stdcall
815 PNP_DetectResourceConflict(
816 [in] handle_t hBinding,
817 [in, string, ref] LPWSTR pDeviceID,
818 [in] RESOURCEID ResourceID,
819 [in, size_is(ResourceLen)] BYTE *ResourceData,
820 [in] PNP_RPC_BUFFER_SIZE ResourceLen,
821 [out] BOOL *pbConflictDetected,
822 [in] DWORD ulFlags);
823
824 /* Function 54 */
825 DWORD
826 __stdcall
827 PNP_QueryResConfList(
828 [in] handle_t hBinding,
829 [in, string, ref] LPWSTR pDeviceID,
830 [in] RESOURCEID ResourceID,
831 [in, size_is(ResourceLen)] BYTE *ResourceData,
832 [in] PNP_RPC_BUFFER_SIZE ResourceLen,
833 [out, size_is(BufferLen)] BYTE *Buffer,
834 [in] PNP_RPC_BUFFER_SIZE BufferLen,
835 [in] DWORD ulFlags);
836
837 /* Function 55 */
838 DWORD
839 __stdcall
840 PNP_SetHwProf(
841 [in] handle_t hBinding,
842 [in] DWORD ulHardwareProfile,
843 [in] DWORD ulFlags);
844
845 /* Function 56 */
846 DWORD
847 __stdcall
848 PNP_QueryArbitratorFreeData(
849 [in] handle_t hBinding,
850 [out,size_is(DataLen)] BYTE *pData,
851 [in] DWORD DataLen,
852 [in, string, ref] LPWSTR pDeviceID,
853 [in] RESOURCEID ResourceID,
854 [in] DWORD ulFlags);
855
856 /* Function 57 */
857 DWORD
858 __stdcall
859 PNP_QueryArbitratorFreeSize(
860 [in] handle_t hBinding,
861 [out] DWORD *pulSize,
862 [in, string, ref] LPWSTR pDeviceID,
863 [in] RESOURCEID ResourceID,
864 [in] DWORD ulFlags);
865
866 /* Function 58 */
867 DWORD
868 __stdcall
869 PNP_RunDetection(
870 [in] handle_t hBinding,
871 [in] DWORD ulFlags);
872
873 /* Function 59 */
874 DWORD
875 __stdcall
876 PNP_RegisterNotification(
877 [in] handle_t hBinding,
878 [in] DWORD ulFlags,
879 [out] DWORD *pulNotifyData);
880
881 /* Function 60 */
882 DWORD
883 __stdcall
884 PNP_UnregisterNotification(
885 [in] handle_t hBinding,
886 [in] DWORD ulNotifyData);
887
888 cpp_quote("#if _WIN32_WINNT >= 0x0501")
889
890 /* Function 61 */
891 DWORD
892 __stdcall
893 PNP_GetCustomDevProp(
894 [in] handle_t hBinding,
895 [in, string, ref] LPWSTR pDeviceID,
896 [in, string, ref] LPWSTR CustomPropName,
897 [out] DWORD *pulRegDataType,
898 [out, size_is(*pulLength), length_is(*pulTransferLen)] BYTE *Buffer,
899 [out] PNP_RPC_STRING_LEN *pulTransferLen,
900 [in, out] PNP_RPC_STRING_LEN *pulLength,
901 [in] DWORD ulFlags);
902
903 /* Function 62 */
904 DWORD
905 __stdcall
906 PNP_GetVersionInternal(
907 [in] handle_t hBinding,
908 [in, out] WORD *pwVersion);
909
910 /* Function 63 */
911 DWORD
912 __stdcall
913 PNP_GetBlockedDriverInfo(
914 [in] handle_t hBinding,
915 [out, size_is(*pulLength), length_is(*pulTransferLen)] BYTE *Buffer,
916 [out] PNP_RPC_BUFFER_SIZE *pulTransferLen,
917 [in, out] PNP_RPC_BUFFER_SIZE *pulLength,
918 [in] DWORD ulFlags);
919
920 /* Function 64 */
921 DWORD
922 __stdcall
923 PNP_GetServerSideDeviceInstallFlags(
924 [in] handle_t hBinding,
925 [out] DWORD *pulSSDIFlags,
926 [in] DWORD ulFlags);
927
928 /* Functions 65 to 74 are Vista+, see r63565 */
929
930 cpp_quote("#endif /* _WIN32_WINNT >= 0x0501 */")
931
932 }