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