summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPete Batard <pbatard@gmail.com>2010-03-09 00:20:06 +0000
committerPete Batard <pbatard@gmail.com>2010-03-09 00:20:06 +0000
commitb35218961942aa8740ab82010757cd0807196866 (patch)
tree6bce833cb65f209a5800445862a8d4bd40805ed4
parentcb781bf531ee56c5cbb06e3595edf73eedfe7bca (diff)
downloadlibusb-b35218961942aa8740ab82010757cd0807196866.tar.gz
removed resource.h + add cfmgr32 DLL refsa163
-rw-r--r--driver-install_2008.vcproj6
-rw-r--r--driver-resources_2008.vcproj4
-rw-r--r--libusb/os/driver_install.c22
-rw-r--r--libusb_2008.sln1
-rw-r--r--msvc/driver_resources.rc2
5 files changed, 25 insertions, 10 deletions
diff --git a/driver-install_2008.vcproj b/driver-install_2008.vcproj
index b902484..a2182c1 100644
--- a/driver-install_2008.vcproj
+++ b/driver-install_2008.vcproj
@@ -275,11 +275,7 @@
>
</File>
<File
- RelativePath=".\msvc\resource.h"
- >
- </File>
- <File
- RelativePath="libusb\os\windows_usb.h"
+ RelativePath=".\libusb\os\windows_usb.h"
>
</File>
</Filter>
diff --git a/driver-resources_2008.vcproj b/driver-resources_2008.vcproj
index 3dbaa88..5e6f977 100644
--- a/driver-resources_2008.vcproj
+++ b/driver-resources_2008.vcproj
@@ -285,10 +285,6 @@
>
</File>
</Filter>
- <File
- RelativePath=".\msvc\resource.h"
- >
- </File>
</Files>
<Globals>
</Globals>
diff --git a/libusb/os/driver_install.c b/libusb/os/driver_install.c
index f04e78e..0855f0f 100644
--- a/libusb/os/driver_install.c
+++ b/libusb/os/driver_install.c
@@ -88,6 +88,7 @@ const struct res resource[] = { {"AMD64_DLL1" , "amd64", "WdfCoInstaller01009.dl
{"X86_DLL2", "x86", "winusbcoinstaller2.dll"} };
const int nb_resources = sizeof(resource)/sizeof(resource[0]);
+extern char* sanitize_path(const char* path);
char* guid_to_string(const GUID guid)
{
static char guid_string[MAX_GUID_STRING_LENGTH];
@@ -109,6 +110,19 @@ void free_di(struct driver_info *start)
}
}
+bool cfgmgr32_available = false;
+
+static int init_cfgmgr32(void)
+{
+ DLL_LOAD(Cfgmgr32.dll, CM_Get_Parent, TRUE);
+ DLL_LOAD(Cfgmgr32.dll, CM_Get_Child, TRUE);
+ DLL_LOAD(Cfgmgr32.dll, CM_Get_Sibling, TRUE);
+ DLL_LOAD(Cfgmgr32.dll, CM_Get_Device_IDA, TRUE);
+ DLL_LOAD(Cfgmgr32.dll, CM_Get_Device_IDW, TRUE);
+
+ return LIBUSB_SUCCESS;
+}
+
struct driver_info* list_driverless(void)
{
unsigned i, j;
@@ -126,6 +140,10 @@ struct driver_info* list_driverless(void)
struct driver_info *ret = NULL, *cur = NULL, *drv_info;
bool driverless;
+ if (!cfgmgr32_available) {
+ init_cfgmgr32();
+ }
+
// List all connected USB devices
dev_info = SetupDiGetClassDevs(NULL, "USB", NULL, DIGCF_PRESENT|DIGCF_ALLCLASSES);
if (dev_info == INVALID_HANDLE_VALUE) {
@@ -166,6 +184,7 @@ struct driver_info* list_driverless(void)
continue;
}
*/
+
// TODO: can't always get a device desc => provide one
if ( (!SetupDiGetDeviceRegistryProperty(dev_info, &dev_info_data, SPDRP_DEVICEDESC,
&reg_type, (BYTE*)desc, MAX_KEY_LENGTH, &size)) ) {
@@ -180,7 +199,9 @@ struct driver_info* list_driverless(void)
i, r);
continue;
}
+
sanitized_short = sanitize_path(path);
+
if (sanitized_short == NULL) {
usbi_err(NULL, "could not sanitize path for device %d", i);
continue;
@@ -224,6 +245,7 @@ struct driver_info* list_driverless(void)
token = strtok (NULL, "#&");
}
}
+
return ret;
}
diff --git a/libusb_2008.sln b/libusb_2008.sln
index 00c19fe..15eae8d 100644
--- a/libusb_2008.sln
+++ b/libusb_2008.sln
@@ -7,6 +7,7 @@ EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lsusb", "examples\lsusb_2008.vcproj", "{F4938DB0-3DE7-4737-9C5A-EAD1BE819F87}"
ProjectSection(ProjectDependencies) = postProject
{9AA0E745-1A0A-4700-8ECB-6A6DE9DBF8B9} = {9AA0E745-1A0A-4700-8ECB-6A6DE9DBF8B9}
+ {BA852F82-4329-4CBE-82AA-9947FB48AD83} = {BA852F82-4329-4CBE-82AA-9947FB48AD83}
{349EE8F9-7D25-4909-AAF5-FF3FADE72187} = {349EE8F9-7D25-4909-AAF5-FF3FADE72187}
EndProjectSection
EndProject
diff --git a/msvc/driver_resources.rc b/msvc/driver_resources.rc
index b74831d..492f1d0 100644
--- a/msvc/driver_resources.rc
+++ b/msvc/driver_resources.rc
@@ -1,6 +1,6 @@
// Microsoft Visual C++ generated resource script.
//
-#include "resource.h"
+//#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////