Don't use old_spacing-1 if old_spacing already has the minimum value.
[wine] / dlls / setupapi / devinst.c
1 /*
2  * SetupAPI device installer
3  *
4  * Copyright 2000 Andreas Mohr for Codeweavers
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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #include "windef.h"
22 #include "winbase.h"
23 #include "setupx16.h"
24 #include "wine/debug.h"
25 #include "setupapi.h"
26
27 WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
28
29 /***********************************************************************
30  *              DiGetClassDevs (SETUPX.304)
31  * Return a list of installed system devices.
32  * Uses HKLM\\ENUM to list devices.
33  */
34 RETERR16 WINAPI DiGetClassDevs16(LPLPDEVICE_INFO16 lplpdi,
35                                  LPCSTR lpszClassName, HWND16 hwndParent, INT16 iFlags)
36 {
37     LPDEVICE_INFO16 lpdi;
38
39     FIXME("(%p, '%s', %04x, %04x), semi-stub.\n",
40           lplpdi, lpszClassName, hwndParent, iFlags);
41     lpdi = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DEVICE_INFO16));
42     lpdi->cbSize = sizeof(DEVICE_INFO16);
43     *lplpdi = lpdi;
44     return OK;
45 }
46
47 /***********************************************************************
48  *              SetupDiGetDeviceInterfaceDetailA (SETUPAPI.@)
49  */
50 BOOL WINAPI SetupDiGetDeviceInterfaceDetailA(
51       HDEVINFO DeviceInfoSet,
52       PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
53       PSP_DEVICE_INTERFACE_DETAIL_DATAA DeviceInterfaceDetailData,
54       DWORD DeviceInterfaceDetailDataSize,
55       PDWORD RequiredSize,
56       PSP_DEVINFO_DATA DeviceInfoData )
57 {
58     FIXME("\n");
59     return FALSE;
60 }
61
62 /***********************************************************************
63  *              SetupDiGetDeviceInterfaceDetailW (SETUPAPI.@)
64  */
65 BOOL WINAPI SetupDiGetDeviceInterfaceDetailW(
66       HDEVINFO DeviceInfoSet,
67       PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
68       PSP_DEVICE_INTERFACE_DETAIL_DATAW DeviceInterfaceDetailData,
69       DWORD DeviceInterfaceDetailDataSize,
70       PDWORD RequiredSize,
71       PSP_DEVINFO_DATA DeviceInfoData )
72 {
73     FIXME("\n");
74     return FALSE;
75 }
76
77 /***********************************************************************
78  *              SetupDiEnumDeviceInterfaces (SETUPAPI.@)
79  */
80 BOOL WINAPI SetupDiEnumDeviceInterfaces(
81        HDEVINFO DeviceInfoSet,
82        PSP_DEVINFO_DATA DeviceInfoData,
83        CONST GUID * InterfaceClassGuid,
84        DWORD MemberIndex,
85        PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData)
86 {
87     FIXME("\n");
88     return FALSE;
89 }
90
91 /***********************************************************************
92  *              SetupDiGetClassDevsA (SETUPAPI.@)
93  */
94 HDEVINFO WINAPI SetupDiGetClassDevsA(
95        CONST GUID *class,
96        LPCSTR enumstr,
97        HWND parent,
98        DWORD flags)
99 {
100     FIXME("%s %s %p %08lx\n",debugstr_guid(class),enumstr,parent,flags);
101
102     return (HDEVINFO) INVALID_HANDLE_VALUE;
103 }
104
105 /***********************************************************************
106  *              SetupDiGetClassDevsW (SETUPAPI.@)
107  */
108 HDEVINFO WINAPI SetupDiGetClassDevsW(
109        CONST GUID *class,
110        LPCWSTR enumstr,
111        HWND parent,
112        DWORD flags)
113 {
114     FIXME("%s %s %p %08lx\n",debugstr_guid(class),debugstr_w(enumstr),parent,flags);
115
116     return (HDEVINFO) INVALID_HANDLE_VALUE;
117 }
118 /***********************************************************************
119  *              SetupDiEnumDeviceInfo (SETUPAPI.@)
120  */
121 BOOL WINAPI SetupDiEnumDeviceInfo(
122         HDEVINFO  devinfo,
123         DWORD  index,
124         PSP_DEVINFO_DATA info)
125 {
126     FIXME("%p %ld %p\n", devinfo, index, info );
127
128     if(info==NULL)
129         return FALSE;
130     if(info->cbSize < sizeof *info)
131         return FALSE;
132
133     return FALSE;
134 }
135
136 /***********************************************************************
137  *              SetupDiDestroyDeviceInfoList (SETUPAPI.@)
138  */
139 BOOL WINAPI SetupDiDestroyDeviceInfoList( HDEVINFO devinfo )
140 {
141     FIXME("%04lx\n", (DWORD)devinfo);
142     return FALSE;
143 }
144
145 /***********************************************************************
146  *              SetupDiGetDeviceRegistryPropertyA (SETUPAPI.@)
147  */
148 BOOL WINAPI SetupDiGetDeviceRegistryPropertyA(
149         HDEVINFO  devinfo,
150         PSP_DEVINFO_DATA  DeviceInfoData,
151         DWORD   Property,
152         PDWORD  PropertyRegDataType,
153         PBYTE   PropertyBuffer,
154         DWORD   PropertyBufferSize,
155         PDWORD  RequiredSize)
156 {
157     FIXME("%04lx %p %ld %p %p %ld %p\n", (DWORD)devinfo, DeviceInfoData,
158         Property, PropertyRegDataType, PropertyBuffer, PropertyBufferSize,
159         RequiredSize);
160     return FALSE;
161 }