oleaut32: Fixed setting oVft value in ITypeInfo2::GetFuncDesc.
[wine] / dlls / setupapi / stubs.c
1 /*
2  * SetupAPI stubs
3  *
4  * Copyright 2000 James Hatheway
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19  */
20
21 #include <stdarg.h>
22
23 #include "wine/debug.h"
24 #include "windef.h"
25 #include "winbase.h"
26 #include "wingdi.h"
27 #include "winuser.h"
28 #include "winreg.h"
29 #include "cfgmgr32.h"
30 #include "setupapi.h"
31 #include "winnls.h"
32
33 WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
34
35 /***********************************************************************
36  *              CM_Connect_MachineA  (SETUPAPI.@)
37  */
38 CONFIGRET WINAPI CM_Connect_MachineA(PCSTR name, PHMACHINE machine)
39 {
40   FIXME("(%s %p) stub\n", name, machine);
41   return CR_ACCESS_DENIED;
42 }
43
44 /***********************************************************************
45  *              CM_Connect_MachineW  (SETUPAPI.@)
46  */
47 CONFIGRET WINAPI CM_Connect_MachineW(PCWSTR name, PHMACHINE machine)
48 {
49   FIXME("\n");
50   return  CR_ACCESS_DENIED;
51 }
52
53 /***********************************************************************
54  *              CM_Create_DevNodeA  (SETUPAPI.@)
55  */
56 CONFIGRET WINAPI CM_Create_DevNodeA(PDEVINST pdnDevInst, DEVINSTID_A pDeviceID, DEVINST dnParent, ULONG ulFlags)
57 {
58   FIXME("(%p %s 0x%08x 0x%08x) stub\n", pdnDevInst, pDeviceID, dnParent, ulFlags);
59   return CR_SUCCESS;
60 }
61
62 /***********************************************************************
63  *              CM_Create_DevNodeW  (SETUPAPI.@)
64  */
65 CONFIGRET WINAPI CM_Create_DevNodeW(PDEVINST pdnDevInst, DEVINSTID_W pDeviceID, DEVINST dnParent, ULONG ulFlags)
66 {
67   FIXME("(%p %s 0x%08x 0x%08x) stub\n", pdnDevInst, debugstr_w(pDeviceID), dnParent, ulFlags);
68   return CR_SUCCESS;
69 }
70
71 /***********************************************************************
72  *              CM_Disconnect_Machine  (SETUPAPI.@)
73  */
74 CONFIGRET WINAPI CM_Disconnect_Machine(HMACHINE handle)
75 {
76   FIXME("\n");
77   return  CR_SUCCESS;
78
79 }
80
81 /***********************************************************************
82  *             CM_Get_Device_ID_ExA  (SETUPAPI.@)
83  */
84 DWORD WINAPI CM_Get_Device_ID_ExA(
85     DEVINST dnDevInst, PCHAR Buffer, ULONG BufferLen, ULONG ulFlags, HMACHINE hMachine)
86 {
87     FIXME("0x%08x %p 0x%08x 0x%08x %p\n", dnDevInst, Buffer, BufferLen, ulFlags, hMachine);
88     return CR_SUCCESS;
89 }
90
91 /***********************************************************************
92  *             CM_Get_Device_ID_ExW  (SETUPAPI.@)
93  */
94 DWORD WINAPI CM_Get_Device_ID_ExW(
95     DEVINST dnDevInst, PWCHAR Buffer, ULONG BufferLen, ULONG ulFlags, HMACHINE hMachine)
96 {
97     FIXME("0x%08x %p 0x%08x 0x%08x %p\n", dnDevInst, Buffer, BufferLen, ulFlags, hMachine);
98     return CR_SUCCESS;
99 }
100
101 /***********************************************************************
102  *             CM_Get_Device_ID_ListA  (SETUPAPI.@)
103  */
104 CONFIGRET WINAPI CM_Get_Device_ID_ListA(
105     PCSTR pszFilter, PCHAR Buffer, ULONG BufferLen, ULONG ulFlags )
106 {
107     FIXME("%s %p %d 0x%08x\n", debugstr_a(pszFilter), Buffer, BufferLen, ulFlags);
108
109     if (BufferLen >= 2) Buffer[0] = Buffer[1] = 0;
110     return CR_SUCCESS;
111 }
112
113 /***********************************************************************
114  *             CM_Get_Device_ID_ListW  (SETUPAPI.@)
115  */
116 CONFIGRET WINAPI CM_Get_Device_ID_ListW(
117     PCWSTR pszFilter, PWCHAR Buffer, ULONG BufferLen, ULONG ulFlags )
118 {
119     FIXME("%s %p %d 0x%08x\n", debugstr_w(pszFilter), Buffer, BufferLen, ulFlags);
120
121     if (BufferLen >= 2) Buffer[0] = Buffer[1] = 0;
122     return CR_SUCCESS;
123 }
124
125 /***********************************************************************
126  *             CM_Get_Device_ID_List_SizeA  (SETUPAPI.@)
127  */
128 CONFIGRET WINAPI CM_Get_Device_ID_List_SizeA( PULONG  pulLen, PCSTR  pszFilter, ULONG  ulFlags )
129 {
130     FIXME("%p %s 0x%08x\n", pulLen, debugstr_a(pszFilter), ulFlags);
131
132     return CR_SUCCESS;
133 }
134
135 /***********************************************************************
136  *             CM_Get_Device_ID_List_SizeW  (SETUPAPI.@)
137  */
138 CONFIGRET WINAPI CM_Get_Device_ID_List_SizeW( PULONG  pulLen, PCWSTR  pszFilter, ULONG  ulFlags )
139 {
140     FIXME("%p %s 0x%08x\n", pulLen, debugstr_w(pszFilter), ulFlags);
141
142     return CR_SUCCESS;
143 }
144
145 /***********************************************************************
146  *              CM_Get_Parent (SETUPAPI.@)
147  */
148 DWORD WINAPI CM_Get_Parent(PDEVINST pdnDevInst, DEVINST dnDevInst, ULONG ulFlags)
149 {
150     FIXME("%p 0x%08x 0x%08x stub\n", pdnDevInst, dnDevInst, ulFlags);
151     *pdnDevInst = dnDevInst;
152     return CR_SUCCESS;
153 }
154
155 /***********************************************************************
156  *              SetupInitializeFileLogW(SETUPAPI.@)
157  */
158 HSPFILELOG WINAPI SetupInitializeFileLogW(LPCWSTR LogFileName, DWORD Flags)
159 {
160     FIXME("Stub %s, 0x%x\n",debugstr_w(LogFileName),Flags);
161     return INVALID_HANDLE_VALUE;
162 }
163
164 /***********************************************************************
165  *              SetupInitializeFileLogA(SETUPAPI.@)
166  */
167 HSPFILELOG WINAPI SetupInitializeFileLogA(LPCSTR LogFileName, DWORD Flags)
168 {
169     FIXME("Stub %s, 0x%x\n",debugstr_a(LogFileName),Flags);
170     return INVALID_HANDLE_VALUE;
171 }
172
173 /***********************************************************************
174  *              SetupTerminateFileLog(SETUPAPI.@)
175  */
176 BOOL WINAPI SetupTerminateFileLog(HANDLE FileLogHandle)
177 {
178     FIXME ("Stub %p\n",FileLogHandle);
179     return TRUE;
180 }
181
182 /***********************************************************************
183  *              RegistryDelnode(SETUPAPI.@)
184  */
185 BOOL WINAPI RegistryDelnode(DWORD x, DWORD y)
186 {
187     FIXME("%08x %08x: stub\n", x, y);
188     return FALSE;
189 }
190
191 /***********************************************************************
192  *      SetupCloseLog(SETUPAPI.@)
193  */
194 void WINAPI SetupCloseLog(void)
195 {
196     FIXME("() stub\n");
197 }
198
199 /***********************************************************************
200  *      SetupLogErrorW(SETUPAPI.@)
201  */
202 BOOL WINAPI SetupLogErrorW(LPCWSTR MessageString, LogSeverity Severity)
203 {
204     FIXME("(%s, %d) stub\n", debugstr_w(MessageString), Severity);
205     return TRUE;
206 }
207
208 /***********************************************************************
209  *      SetupOpenLog(SETUPAPI.@)
210  */
211 BOOL WINAPI SetupOpenLog(BOOL Reserved)
212 {
213     FIXME("(%d) stub\n", Reserved);
214     return TRUE;
215 }
216
217 /***********************************************************************
218  *      SetupPromptReboot(SETUPAPI.@)
219  */
220 INT WINAPI SetupPromptReboot( HSPFILEQ file_queue, HWND owner, BOOL scan_only )
221 {
222     FIXME("%p, %p, %d\n", file_queue, owner, scan_only);
223     return 0;
224 }
225
226 /***********************************************************************
227  *      SetupQueryDrivesInDiskSpaceListA (SETUPAPI.@)
228  */
229 BOOL WINAPI SetupQueryDrivesInDiskSpaceListA(HDSKSPC disk_space, PSTR return_buffer, DWORD return_buffer_size, PDWORD required_size)
230 {
231     FIXME("%p, %p, %d, %p\n", disk_space, return_buffer, return_buffer_size, required_size);
232     return FALSE;
233 }
234
235 /***********************************************************************
236  *      SetupQueryDrivesInDiskSpaceListW (SETUPAPI.@)
237  */
238 BOOL WINAPI SetupQueryDrivesInDiskSpaceListW(HDSKSPC disk_space, PWSTR return_buffer, DWORD return_buffer_size, PDWORD required_size)
239 {
240     FIXME("%p, %p, %d, %p\n", disk_space, return_buffer, return_buffer_size, required_size);
241     return FALSE;
242 }
243
244 /***********************************************************************
245  *      SetupAddToSourceListA (SETUPAPI.@)
246  */
247 BOOL WINAPI SetupAddToSourceListA(DWORD flags, PCSTR source)
248 {
249     FIXME("0x%08x %s\n", flags, debugstr_a(source));
250     return TRUE;
251 }
252
253 /***********************************************************************
254  *      SetupAddToSourceListW (SETUPAPI.@)
255  */
256 BOOL WINAPI SetupAddToSourceListW(DWORD flags, PCWSTR source)
257 {
258     FIXME("0x%08x %s\n", flags, debugstr_w(source));
259     return TRUE;
260 }
261
262 /***********************************************************************
263  *      SetupSetSourceListA (SETUPAPI.@)
264  */
265 BOOL WINAPI SetupSetSourceListA(DWORD flags, PCSTR *list, UINT count)
266 {
267     FIXME("0x%08x %p %d\n", flags, list, count);
268     return FALSE;
269 }
270
271 /***********************************************************************
272  *      SetupSetSourceListW (SETUPAPI.@)
273  */
274 BOOL WINAPI SetupSetSourceListW(DWORD flags, PCWSTR *list, UINT count)
275 {
276     FIXME("0x%08x %p %d\n", flags, list, count);
277     return FALSE;
278 }
279
280 /***********************************************************************
281  *      SetupDiDestroyClassImageList (SETUPAPI.@)
282  */
283 BOOL WINAPI SetupDiDestroyClassImageList(PSP_CLASSIMAGELIST_DATA ClassListImageData)
284 {
285     FIXME("(%p) stub\n", ClassListImageData);
286     return TRUE;
287 }
288
289 /***********************************************************************
290  *      SetupDiGetClassImageList (SETUPAPI.@)
291  */
292 BOOL WINAPI SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA ClassImageListData)
293 {
294     FIXME("(%p) stub\n", ClassImageListData);
295     return FALSE;
296 }
297
298 /***********************************************************************
299  *      SetupDiGetClassImageList (SETUPAPI.@)
300  */
301 BOOL WINAPI SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA ClassImageListData, const GUID *class, PINT index)
302 {
303     FIXME("%p %p %p\n", ClassImageListData, class, index);
304     return FALSE;
305 }
306
307 /***********************************************************************
308  *      SetupDiOpenDeviceInfoA (SETUPAPI.@)
309  */
310 BOOL WINAPI SetupDiOpenDeviceInfoA(HDEVINFO DeviceInfoSet, PCSTR DeviceInstanceId,
311         HWND hwndParent, DWORD OpenFlags, PSP_DEVINFO_DATA DeviceInfoData)
312 {
313     FIXME("%p %s %p 0x%08x %p\n", DeviceInfoSet, debugstr_a(DeviceInstanceId),
314           hwndParent, OpenFlags, DeviceInfoData);
315     return FALSE;
316 }
317
318 /***********************************************************************
319  *      SetupDiOpenDeviceInfoW (SETUPAPI.@)
320  */
321 BOOL WINAPI SetupDiOpenDeviceInfoW(HDEVINFO DeviceInfoSet, PCWSTR DeviceInstanceId,
322         HWND hwndParent, DWORD OpenFlags, PSP_DEVINFO_DATA DeviceInfoData)
323 {
324     FIXME("%p %s %p 0x%08x %p\n", DeviceInfoSet, debugstr_w(DeviceInstanceId),
325           hwndParent, OpenFlags, DeviceInfoData);
326     return FALSE;
327 }
328
329 /***********************************************************************
330  *      CM_Locate_DevNodeA (SETUPAPI.@)
331  */
332 CONFIGRET WINAPI CM_Locate_DevNodeA(PDEVINST pdnDevInst, DEVINSTID_A pDeviceID, ULONG ulFlags)
333 {
334     FIXME("%p %s 0x%08x: stub\n", pdnDevInst, debugstr_a(pDeviceID), ulFlags);
335
336     return CR_FAILURE;
337 }
338
339 /***********************************************************************
340  *      CM_Locate_DevNodeW (SETUPAPI.@)
341  */
342 CONFIGRET WINAPI CM_Locate_DevNodeW(PDEVINST pdnDevInst, DEVINSTID_W pDeviceID, ULONG ulFlags)
343 {
344     FIXME("%p %s 0x%08x: stub\n", pdnDevInst, debugstr_w(pDeviceID), ulFlags);
345
346     return CR_FAILURE;
347 }
348
349 /***********************************************************************
350  *      CM_Locate_DevNode_ExA (SETUPAPI.@)
351  */
352 CONFIGRET WINAPI CM_Locate_DevNode_ExA(PDEVINST pdnDevInst, DEVINSTID_A pDeviceID, ULONG ulFlags, HMACHINE hMachine)
353 {
354     FIXME("%p %s 0x%08x %p: stub\n", pdnDevInst, debugstr_a(pDeviceID), ulFlags, hMachine);
355
356     return CR_FAILURE;
357 }
358
359 /***********************************************************************
360  *      CM_Locate_DevNode_ExW (SETUPAPI.@)
361  */
362 CONFIGRET WINAPI CM_Locate_DevNode_ExW(PDEVINST pdnDevInst, DEVINSTID_W pDeviceID, ULONG ulFlags, HMACHINE hMachine)
363 {
364     FIXME("%p %s 0x%08x %p: stub\n", pdnDevInst, debugstr_w(pDeviceID), ulFlags, hMachine);
365
366     return CR_FAILURE;
367 }
368
369 /***********************************************************************
370  *      CM_Get_Device_Interface_List_Size_ExA (SETUPAPI.@)
371  */
372 CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExA(PULONG len, LPGUID class, DEVINSTID_A id,
373                                                        ULONG flags, HMACHINE machine)
374 {
375     FIXME("%p %p %s 0x%08x %p: stub\n", len, class, debugstr_a(id), flags, machine);
376     return CR_FAILURE;
377 }
378
379 /***********************************************************************
380  *      CM_Get_Device_Interface_List_Size_ExW (SETUPAPI.@)
381  */
382 CONFIGRET WINAPI CM_Get_Device_Interface_List_Size_ExW(PULONG len, LPGUID class, DEVINSTID_W id,
383                                                        ULONG flags, HMACHINE machine)
384 {
385     FIXME("%p %p %s 0x%08x %p: stub\n", len, class, debugstr_w(id), flags, machine);
386     return CR_FAILURE;
387 }
388
389 /***********************************************************************
390  *      CM_Get_DevNode_Registry_Property_ExA (SETUPAPI.@)
391  */
392 CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExA(DEVINST dev, ULONG prop, PULONG regdatatype,
393     PVOID buf, PULONG len, ULONG flags, HMACHINE machine)
394 {
395     FIXME("0x%08x %u %p %p %p 0x%08x %p: stub\n", dev, prop, regdatatype, buf, len, flags, machine);
396     return CR_FAILURE;
397 }
398
399 /***********************************************************************
400  *      CM_Get_DevNode_Registry_Property_ExW (SETUPAPI.@)
401  */
402 CONFIGRET WINAPI CM_Get_DevNode_Registry_Property_ExW(DEVINST dev, ULONG prop, PULONG regdatatype,
403     PVOID buf, PULONG len, ULONG flags, HMACHINE machine)
404 {
405     FIXME("0x%08x %u %p %p %p 0x%08x %p: stub\n", dev, prop, regdatatype, buf, len, flags, machine);
406     return CR_FAILURE;
407 }
408
409 /***********************************************************************
410  *      CM_Enumerate_Classes (SETUPAPI.@)
411  */
412 CONFIGRET WINAPI CM_Enumerate_Classes(ULONG index, LPGUID class, ULONG flags)
413 {
414     FIXME("%u %p 0x%08x: stub\n", index, class, flags);
415     return CR_NO_SUCH_VALUE;
416 }
417
418 /***********************************************************************
419  *      CM_Get_Class_Registry_PropertyA (SETUPAPI.@)
420  */
421 CONFIGRET WINAPI CM_Get_Class_Registry_PropertyA(LPGUID class, ULONG prop, PULONG regdatatype,
422                                                  PVOID buf, ULONG len, ULONG flags, HMACHINE machine)
423 {
424     FIXME("%p %u %p %p %u 0x%08x %p: stub\n", class, prop, regdatatype, buf, len, flags, machine);
425     return CR_FAILURE;
426 }
427
428 /***********************************************************************
429  *      CM_Get_Class_Registry_PropertyW (SETUPAPI.@)
430  */
431 CONFIGRET WINAPI CM_Get_Class_Registry_PropertyW(LPGUID class, ULONG prop, PULONG regdatatype,
432                                                  PVOID buf, ULONG len, ULONG flags, HMACHINE machine)
433 {
434     FIXME("%p %u %p %p %u 0x%08x %p: stub\n", class, prop, regdatatype, buf, len, flags, machine);
435     return CR_FAILURE;
436 }
437
438 /***********************************************************************
439  *      CM_Set_Class_Registry_PropertyA (SETUPAPI.@)
440  */
441 CONFIGRET WINAPI CM_Set_Class_Registry_PropertyA(LPGUID class, ULONG prop, PVOID buf, ULONG len,
442                                                  ULONG flags, HMACHINE machine)
443 {
444     FIXME("%p %u %p %u 0x%08x %p: stub\n", class, prop, buf, len, flags, machine);
445     return CR_FAILURE;
446 }
447
448 /***********************************************************************
449  *      CM_Set_Class_Registry_PropertyW (SETUPAPI.@)
450  */
451 CONFIGRET WINAPI CM_Set_Class_Registry_PropertyW(LPGUID class, ULONG prop, PVOID buf, ULONG len,
452                                                  ULONG flags, HMACHINE machine)
453 {
454     FIXME("%p %u %p %u 0x%08x %p: stub\n", class, prop, buf, len, flags, machine);
455     return CR_FAILURE;
456 }
457
458 /***********************************************************************
459  *              SetupLogFileW  (SETUPAPI.@)
460  */
461 BOOL WINAPI SetupLogFileW(
462     HSPFILELOG FileLogHandle,
463     PCWSTR LogSectionName,
464     PCWSTR SourceFileName,
465     PCWSTR TargetFileName,
466     DWORD Checksum,
467     PCWSTR DiskTagfile,
468     PCWSTR DiskDescription,
469     PCWSTR OtherInfo,
470     DWORD Flags )
471 {
472     FIXME("(%p, %s, '%s', '%s', %d, %s, %s, %s, %d): stub\n", FileLogHandle,
473         debugstr_w(LogSectionName), debugstr_w(SourceFileName),
474         debugstr_w(TargetFileName), Checksum, debugstr_w(DiskTagfile),
475         debugstr_w(DiskDescription), debugstr_w(OtherInfo), Flags);
476
477     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
478     return FALSE;
479 }
480
481 /***********************************************************************
482  *              SetupLogFileA  (SETUPAPI.@)
483  */
484 BOOL WINAPI SetupLogFileA(
485     HSPFILELOG FileLogHandle,
486     PCSTR LogSectionName,
487     PCSTR SourceFileName,
488     PCSTR TargetFileName,
489     DWORD Checksum,
490     PCSTR DiskTagfile,
491     PCSTR DiskDescription,
492     PCSTR OtherInfo,
493     DWORD Flags )
494 {
495     FIXME("(%p, %p, '%s', '%s', %d, %p, %p, %p, %d): stub\n", FileLogHandle,
496         LogSectionName, SourceFileName, TargetFileName, Checksum, DiskTagfile,
497         DiskDescription, OtherInfo, Flags);
498
499     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
500     return FALSE;
501 }
502
503 /***********************************************************************
504  *              SetupDiBuildDriverInfoList  (SETUPAPI.@)
505  */
506
507 BOOL WINAPI SetupDiBuildDriverInfoList(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD DriverType)
508  {
509     FIXME(": stub %p, %p, %d\n", DeviceInfoSet, DeviceInfoData, DriverType);
510
511     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
512     return FALSE;
513  }
514
515 /***********************************************************************
516  *              SetupDiDeleteDeviceInfo  (SETUPAPI.@)
517  */
518
519 BOOL WINAPI SetupDiDeleteDeviceInfo(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData)
520  {
521     FIXME(": stub %p, %p\n", DeviceInfoSet, DeviceInfoData);
522
523     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
524     return FALSE;
525  }
526
527 /***********************************************************************
528  *              SetupDiDrawMiniIcon  (SETUPAPI.@)
529  */
530 INT WINAPI SetupDiDrawMiniIcon(HDC hdc, RECT rc, INT MiniIconIndex, DWORD Flags)
531 {
532     FIXME("(%p, %s, %d, %x) stub\n", hdc, wine_dbgstr_rect(&rc), MiniIconIndex, Flags);
533
534     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
535     return 0;
536 }
537
538 /***********************************************************************
539  *              SetupDiGetClassBitmapIndex  (SETUPAPI.@)
540  */
541 BOOL WINAPI SetupDiGetClassBitmapIndex(const GUID *ClassGuid, PINT MiniIconIndex)
542 {
543     FIXME("(%s, %p) stub\n", debugstr_guid(ClassGuid), MiniIconIndex);
544
545     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
546     return FALSE;
547 }
548
549 /***********************************************************************
550  *              SetupDiLoadClassIcon  (SETUPAPI.@)
551  */
552 BOOL WINAPI SetupDiLoadClassIcon(const GUID *ClassGuid, HICON *LargeIcon, PINT MiniIconIndex)
553 {
554     FIXME(": stub %s, %p, %p\n", debugstr_guid(ClassGuid), LargeIcon, MiniIconIndex);
555
556     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
557     return FALSE;
558 }
559
560 /***********************************************************************
561  *              SetupDiSetSelectedDevice  (SETUPAPI.@)
562  */
563 BOOL WINAPI SetupDiSetSelectedDevice(HDEVINFO SetupDiSetSelectedDevice, PSP_DEVINFO_DATA DeviceInfoData)
564 {
565     FIXME("(%p, %p) stub\n", SetupDiSetSelectedDevice, DeviceInfoData);
566
567     return TRUE;
568 }