- Fix header mess by using a common header setupapi_private.h - Move some structure definitions from devinst.c to setupapi_private.h Modified: trunk/reactos/lib/setupapi/cfgmgr.c Modified: trunk/reactos/lib/setupapi/devinst.c Modified: trunk/reactos/lib/setupapi/dirid.c Modified: trunk/reactos/lib/setupapi/diskspace.c Modified: trunk/reactos/lib/setupapi/infparse.c Modified: trunk/reactos/lib/setupapi/install.c Modified: trunk/reactos/lib/setupapi/misc.c Modified: trunk/reactos/lib/setupapi/parser.c Modified: trunk/reactos/lib/setupapi/queue.c Modified: trunk/reactos/lib/setupapi/rpc.c Modified: trunk/reactos/lib/setupapi/setupapi_private.h Modified: trunk/reactos/lib/setupapi/setupcab.c Modified: trunk/reactos/lib/setupapi/stringtable.c Modified: trunk/reactos/lib/setupapi/stubs.c Modified: trunk/reactos/lib/setupapi/virtcopy.c _____
Modified: trunk/reactos/lib/setupapi/cfgmgr.c --- trunk/reactos/lib/setupapi/cfgmgr.c 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/cfgmgr.c 2005-11-06 23:23:45 UTC (rev 19031) @@ -19,25 +19,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-#include <stdarg.h> - -#include "windef.h" -#include "winbase.h" -#include "wingdi.h" -#include "winuser.h" -#include "winnls.h" -#include "winreg.h" -#include "setupapi.h" -#include "cfgmgr32.h" #include "setupapi_private.h"
-#include "rpc.h" -#include "rpc_private.h" - -#include "pnp_c.h" - -#include "wine/debug.h" - WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
/* Registry key and value names */ _____
Modified: trunk/reactos/lib/setupapi/devinst.c --- trunk/reactos/lib/setupapi/devinst.c 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/devinst.c 2005-11-06 23:23:45 UTC (rev 19031) @@ -19,23 +19,9 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-#include "config.h" -#include "wine/port.h" - -#include <stdarg.h> - -#include <windows.h> -#include "setupapi.h" -#include "wine/debug.h" -#include "wine/unicode.h" -#include "cfgmgr32.h" -#include "initguid.h" -#define NTOS_MODE_USER -#include <ndk/ntndk.h> - +#define INITGUID #include "setupapi_private.h"
- WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
/* Unicode constants */ @@ -87,8 +73,6 @@ IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, IN OUT PCOINSTALLER_CONTEXT_DATA Context);
-#define SETUP_DEV_INFO_SET_MAGIC 0xd00ff057 - struct CoInstallerElement { LIST_ENTRY ListEntry; @@ -99,105 +83,6 @@ PVOID PrivateData; };
-struct DeviceInterface /* Element of DeviceInfoElement.InterfaceListHead */ -{ - LIST_ENTRY ListEntry; - - struct DeviceInfoElement* DeviceInfo; - GUID InterfaceClassGuid; - - - /* SPINT_ACTIVE : the interface is active/enabled - * SPINT_DEFAULT: the interface is the default interface for the device class FIXME??? - * SPINT_REMOVED: the interface is removed - */ - DWORD Flags; - - WCHAR SymbolicLink[0]; /* \?\ACPI#PNP0501#4&2658d0a0&0#{GUID} */ -}; - -/* We don't want to open the .inf file to read only one information in it, so keep a handle to it once it - * has been already loaded once. Keep also a reference counter */ -struct InfFileDetails -{ - HINF hInf; - LONG References; -}; - -struct DriverInfoElement /* Element of DeviceInfoSet.DriverListHead and DeviceInfoElement.DriverListHead */ -{ - LIST_ENTRY ListEntry; - - DWORD DriverRank; - SP_DRVINFO_DATA_V2_W Info; - SP_DRVINFO_DETAIL_DATA_W Details; - GUID ClassGuid; - LPWSTR MatchingId; - struct InfFileDetails *InfFileDetails; -}; - -struct DeviceInfoElement /* Element of DeviceInfoSet.ListHead */ -{ - LIST_ENTRY ListEntry; - - /* Reserved Field points to a struct DriverInfoElement */ - SP_DEVINSTALL_PARAMS_W InstallParams; - - /* Information about devnode: - * - DeviceName: - * "Root*PNP0501" for example. - * It doesn't contain the unique ID for the device - * (points into the Data field at the end of the structure) - * WARNING: no NULL char exist between DeviceName and UniqueId - * in Data field! - * - UniqueId - * "5&1be2108e&0" or "0000" - * If DICD_GENERATE_ID is specified in creation flags, - * this unique ID is autogenerated using 4 digits, base 10 - * (points into the Data field at the end of the structure) - * - DeviceDescription - * String which identifies the device. Can be NULL. If not NULL, - * points into the Data field at the end of the structure - * - ClassGuid - * Identifies the class of this device. FIXME: can it be GUID_NULL? - * - CreationFlags - * Is a combination of: - * - DICD_GENERATE_ID - * the unique ID needs to be generated - * - DICD_INHERIT_CLASSDRVS - * inherit driver of the device info set (== same pointer) - */ - PCWSTR DeviceName; - PCWSTR UniqueId; - PCWSTR DeviceDescription; - GUID ClassGuid; - DWORD CreationFlags; - - /* If CreationFlags contains DICD_INHERIT_CLASSDRVS, this list is invalid */ - /* If the driver is not searched/detected, this list is empty */ - LIST_ENTRY DriverListHead; /* List of struct DriverInfoElement */ - - /* List of interfaces implemented by this device */ - LIST_ENTRY InterfaceListHead; /* List of struct DeviceInterface */ - - WCHAR Data[0]; -}; - -struct DeviceInfoSet /* HDEVINFO */ -{ - DWORD magic; /* SETUP_DEV_INFO_SET_MAGIC */ - GUID ClassGuid; /* If != GUID_NULL, only devices of this class can be in the device info set */ - HKEY HKLM; /* Local or distant HKEY_LOCAL_MACHINE registry key */ - - /* Reserved Field points to a struct DriverInfoElement */ - SP_DEVINSTALL_PARAMS_W InstallParams; - - /* If the driver is not searched/detected, this list is empty */ - LIST_ENTRY DriverListHead; /* List of struct DriverInfoElement */ - - LIST_ENTRY ListHead; /* List of struct DeviceInfoElement */ -}; -
/*********************************************************************** * SetupDiBuildClassInfoList (SETUPAPI.@) */ @@ -5465,6 +5350,10 @@ { BOOL ret = FALSE;
+ TRACE("%p %p %p %p %lu %p\n", DeviceInfoSet, DeviceInfoData, + DriverInfoData, DriverInfoDetailData, + DriverInfoDetailDataSize, RequiredSize); + if (!DeviceInfoSet) SetLastError(ERROR_INVALID_PARAMETER); else if (DeviceInfoSet == (HDEVINFO)INVALID_HANDLE_VALUE) @@ -5482,7 +5371,7 @@ else if (DriverInfoDetailData && DriverInfoDetailData->cbSize != sizeof(SP_DRVINFO_DETAIL_DATA_W)) SetLastError(ERROR_INVALID_USER_BUFFER); else if (DriverInfoDetailData && DriverInfoDetailData->Reserved == 0) - SetLastError(ERROR_INVALID_PARAMETER); + SetLastError(ERROR_NO_DRIVER_SELECTED); else { struct DriverInfoElement *driverInfoElement; _____
Modified: trunk/reactos/lib/setupapi/dirid.c --- trunk/reactos/lib/setupapi/dirid.c 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/dirid.c 2005-11-06 23:23:45 UTC (rev 19031) @@ -18,21 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-#include <stdarg.h> - -#include "windef.h" -#include "winbase.h" -#include "winreg.h" -#include "winternl.h" -#include "winerror.h" -#include "wingdi.h" -#include "winuser.h" -#include "winnls.h" -#include "setupapi.h" -#include "shlobj.h" -#include "wine/unicode.h" #include "setupapi_private.h" -#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
_____
Modified: trunk/reactos/lib/setupapi/diskspace.c --- trunk/reactos/lib/setupapi/diskspace.c 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/diskspace.c 2005-11-06 23:23:45 UTC (rev 19031) @@ -18,17 +18,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-#include <stdarg.h> +#include "setupapi_private.h"
-#include "windef.h" -#include "winbase.h" -#include "wingdi.h" -#include "winuser.h" -#include "winnls.h" -#include "winreg.h" -#include "setupapi.h" -#include "wine/debug.h" - WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
typedef struct { _____
Modified: trunk/reactos/lib/setupapi/infparse.c --- trunk/reactos/lib/setupapi/infparse.c 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/infparse.c 2005-11-06 23:23:45 UTC (rev 19031) @@ -25,20 +25,7 @@
* (IpSaveRestorePosition, IpFindNextMatchLine, ...). */
-#include <stdarg.h> -#include <string.h> - -#include "windef.h" -#include "winbase.h" -#include "winreg.h" -#include "winternl.h" -#include "wingdi.h" -#include "winuser.h" -#include "winnls.h" -#include "setupapi.h" -#include "setupx16.h" #include "setupapi_private.h" -#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
_____
Modified: trunk/reactos/lib/setupapi/install.c --- trunk/reactos/lib/setupapi/install.c 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/install.c 2005-11-06 23:23:45 UTC (rev 19031) @@ -18,20 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-#include <stdarg.h> - -#include "windef.h" -#include "winbase.h" -#include "winreg.h" -#include "winternl.h" -#include "winerror.h" -#include "wingdi.h" -#include "winuser.h" -#include "winnls.h" -#include "setupapi.h" #include "setupapi_private.h" -#include "wine/unicode.h" -#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
_____
Modified: trunk/reactos/lib/setupapi/misc.c --- trunk/reactos/lib/setupapi/misc.c 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/misc.c 2005-11-06 23:23:45 UTC (rev 19031) @@ -18,24 +18,10 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-#include <stdarg.h> - -#include "windef.h" -#include "winbase.h" -#include "wingdi.h" -#include "winuser.h" -#include "winreg.h" -#include "setupapi.h" - -#include "wine/unicode.h" -#include "wine/debug.h" - #include "setupapi_private.h"
- WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
-
/*********************************************************************** *** * MyFree [SETUPAPI.@] * _____
Modified: trunk/reactos/lib/setupapi/parser.c --- trunk/reactos/lib/setupapi/parser.c 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/parser.c 2005-11-06 23:23:45 UTC (rev 19031) @@ -19,30 +19,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-#include "config.h" -#include "wine/port.h" - -#include <assert.h> -#include <limits.h> -#include <stdarg.h> -#include <string.h> -#include <stdlib.h> - -#include "windef.h" -#include "winbase.h" -#include "wingdi.h" -#include "winuser.h" -#include "winnls.h" -#include "winreg.h" -#include "winternl.h" -#include "winerror.h" -#include "cfgmgr32.h" -#include "setupapi.h" #include "setupapi_private.h"
-#include "wine/unicode.h" -#include "wine/debug.h" - WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
/* Unicode constants */ _____
Modified: trunk/reactos/lib/setupapi/queue.c --- trunk/reactos/lib/setupapi/queue.c 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/queue.c 2005-11-06 23:23:45 UTC (rev 19031) @@ -18,21 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-#include <stdarg.h> - -#include "windef.h" -#include "winbase.h" -#include "winreg.h" -#include "winternl.h" -#include "winerror.h" -#include "wingdi.h" -#include "winuser.h" -#include "winnls.h" -#include "setupapi.h" -#include "wine/unicode.h" #include "setupapi_private.h" -#include "winver.h" -#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
_____
Modified: trunk/reactos/lib/setupapi/rpc.c --- trunk/reactos/lib/setupapi/rpc.c 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/rpc.c 2005-11-06 23:23:45 UTC (rev 19031) @@ -18,12 +18,9 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-#include <windows.h> -#include <rpc.h> -#include <rpcdce.h> -#include <setupapi.h> -#include "rpc_private.h" +#include "setupapi_private.h"
+WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
static RPC_BINDING_HANDLE LocalBindingHandle = NULL; static HSTRING_TABLE LocalStringTable = NULL; _____
Modified: trunk/reactos/lib/setupapi/setupapi_private.h --- trunk/reactos/lib/setupapi/setupapi_private.h 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/setupapi_private.h 2005-11-06 23:23:45 UTC (rev 19031) @@ -1,5 +1,6 @@
/* * Copyright 2001 Andreas Mohr + * Copyright 2005 HervÚ Poussineau * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -19,11 +20,132 @@ #ifndef __SETUPAPI_PRIVATE_H #define __SETUPAPI_PRIVATE_H
+#include <assert.h> +#include <fcntl.h> +#include <share.h> + +#include <windows.h> +#include <cfgmgr32.h> +#include <fdi.h> +#include <setupapi.h> +#include <shlobj.h> +#include <wine/debug.h> +#include <wine/unicode.h> +#define NTOS_MODE_USER +#include <ndk/ntndk.h> + +#include <pnp_c.h> +#include "rpc_private.h" +#include "resource.h" + +#define SETUP_DEV_INFO_SET_MAGIC 0xd00ff057 + +struct DeviceInterface /* Element of DeviceInfoElement.InterfaceListHead */ +{ + LIST_ENTRY ListEntry; + + struct DeviceInfoElement* DeviceInfo; + GUID InterfaceClassGuid; + + + /* SPINT_ACTIVE : the interface is active/enabled + * SPINT_DEFAULT: the interface is the default interface for the device class FIXME??? + * SPINT_REMOVED: the interface is removed + */ + DWORD Flags; + + WCHAR SymbolicLink[0]; /* \?\ACPI#PNP0501#4&2658d0a0&0#{GUID} */ +}; + +/* We don't want to open the .inf file to read only one information in it, so keep a handle to it once it + * has been already loaded once. Keep also a reference counter */ +struct InfFileDetails +{ + HINF hInf; + LONG References; +}; + +struct DriverInfoElement /* Element of DeviceInfoSet.DriverListHead and DeviceInfoElement.DriverListHead */ +{ + LIST_ENTRY ListEntry; + + DWORD DriverRank; + SP_DRVINFO_DATA_V2_W Info; + SP_DRVINFO_DETAIL_DATA_W Details; + GUID ClassGuid; + LPWSTR MatchingId; + struct InfFileDetails *InfFileDetails; +}; + +struct DeviceInfoElement /* Element of DeviceInfoSet.ListHead */ +{ + LIST_ENTRY ListEntry; + + /* Reserved Field points to a struct DriverInfoElement */ + SP_DEVINSTALL_PARAMS_W InstallParams; + + /* Information about devnode: + * - DeviceName: + * "Root*PNP0501" for example. + * It doesn't contain the unique ID for the device + * (points into the Data field at the end of the structure) + * WARNING: no NULL char exist between DeviceName and UniqueId + * in Data field! + * - UniqueId + * "5&1be2108e&0" or "0000" + * If DICD_GENERATE_ID is specified in creation flags, + * this unique ID is autogenerated using 4 digits, base 10 + * (points into the Data field at the end of the structure) + * - DeviceDescription + * String which identifies the device. Can be NULL. If not NULL, + * points into the Data field at the end of the structure + * - ClassGuid + * Identifies the class of this device. FIXME: can it be GUID_NULL? + * - CreationFlags + * Is a combination of: + * - DICD_GENERATE_ID + * the unique ID needs to be generated + * - DICD_INHERIT_CLASSDRVS + * inherit driver of the device info set (== same pointer) + */ + PCWSTR DeviceName; + PCWSTR UniqueId; + PCWSTR DeviceDescription; + GUID ClassGuid; + DWORD CreationFlags; + + /* If CreationFlags contains DICD_INHERIT_CLASSDRVS, this list is invalid */ + /* If the driver is not searched/detected, this list is empty */ + LIST_ENTRY DriverListHead; /* List of struct DriverInfoElement */ + + /* List of interfaces implemented by this device */ + LIST_ENTRY InterfaceListHead; /* List of struct DeviceInterface */ + + WCHAR Data[0]; +}; + +struct DeviceInfoSet /* HDEVINFO */ +{ + DWORD magic; /* SETUP_DEV_INFO_SET_MAGIC */ + GUID ClassGuid; /* If != GUID_NULL, only devices of this class can be in the device info set */ + HKEY HKLM; /* Local or distant HKEY_LOCAL_MACHINE registry key */ + + /* Reserved Field points to a struct DriverInfoElement */ + SP_DEVINSTALL_PARAMS_W InstallParams; + + /* If the driver is not searched/detected, this list is empty */ + LIST_ENTRY DriverListHead; /* List of struct DriverInfoElement */ + + LIST_ENTRY ListHead; /* List of struct DeviceInfoElement */ +}; + #define COPYFILEDLGORD 1000 #define SOURCESTRORD 500 #define DESTSTRORD 501 #define PROGRESSORD 502
+extern HINSTANCE hInstance; +#define RC_STRING_MAX_SIZE 256
#define REG_INSTALLEDFILES "System\CurrentControlSet\Control\InstalledFiles" #define REGPART_RENAME "\Rename" _____
Modified: trunk/reactos/lib/setupapi/setupcab.c --- trunk/reactos/lib/setupapi/setupcab.c 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/setupcab.c 2005-11-06 23:23:45 UTC (rev 19031) @@ -23,27 +23,8 @@
* */
-#include <stdarg.h> -#include <string.h> -#include <stdlib.h> - -#include "wine/debug.h" -#include "windef.h" -#include "winbase.h" -#include "wingdi.h" -#include "winuser.h" -#include "winnls.h" -#include "winreg.h" -#include "setupapi.h" #include "setupapi_private.h" -#include "fdi.h" -#include "wine/unicode.h"
-#include "fcntl.h" -#include "share.h" - -#include "wine/debug.h" - HINSTANCE hInstance = 0; OSVERSIONINFOW OsVersionInfo;
_____
Modified: trunk/reactos/lib/setupapi/stringtable.c --- trunk/reactos/lib/setupapi/stringtable.c 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/stringtable.c 2005-11-06 23:23:45 UTC (rev 19031) @@ -18,18 +18,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-#include <stdarg.h> +#include "setupapi_private.h"
-#include "windef.h" -#include "winbase.h" -#include "wingdi.h" -#include "winuser.h" -#include "winreg.h" -#include "setupapi.h" - -#include "wine/debug.h" - - #define TABLE_DEFAULT_SIZE 256
WINE_DEFAULT_DEBUG_CHANNEL(setupapi); _____
Modified: trunk/reactos/lib/setupapi/stubs.c --- trunk/reactos/lib/setupapi/stubs.c 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/stubs.c 2005-11-06 23:23:45 UTC (rev 19031) @@ -18,17 +18,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-#include <stdarg.h> +#include "setupapi_private.h"
-#include "wine/debug.h" -#include "windef.h" -#include "winbase.h" -#include "wingdi.h" -#include "winuser.h" -#include "winnls.h" -#include "winreg.h" -#include "setupapi.h" - WINE_DEFAULT_DEBUG_CHANNEL(setupapi);
/*********************************************************************** _____
Modified: trunk/reactos/lib/setupapi/virtcopy.c --- trunk/reactos/lib/setupapi/virtcopy.c 2005-11-06 18:21:00 UTC (rev 19030) +++ trunk/reactos/lib/setupapi/virtcopy.c 2005-11-06 23:23:45 UTC (rev 19031) @@ -21,19 +21,7 @@
* This is bad ! We ought to have 16bit resource handling working. */
-#include <stdarg.h> -#include <string.h> -#include "windef.h" -#include "winbase.h" -#include "winuser.h" -#include "winreg.h" -#include "wownt32.h" -#include "wingdi.h" -#include "winnls.h" -#include "setupapi.h" -#include "setupx16.h" #include "setupapi_private.h" -#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(setupapi);