[Spice-devel] [PATCH 1/6] usbclerk: dos2unix

Arnon Gilboa agilboa at redhat.com
Mon Jul 23 23:34:43 PDT 2012


Thanks Hans, I'll fix that.

Hans de Goede wrote:
> Hi,
>
> Series looks good, only remark I have is that with 6/6
> you're not passing in interface information, that really is
> not a good idea, since for almost all devices if you want to filter
> on usb classes (which you usually do) the interesting bits are in
> the interface info.
>
> Now it might be that when usbclerk runs you don't know the configuration,
> but most devices have only 1 config, so for those that is not a 
> problem :)
>
> For multi config devices, you can do as you do now and not pass in any
> interface info, or simply pass in the interface info for the currently
> active config. Note that what happens on the host side is that the filter
> gets run for the current config, and if the config changes it gets re-run
> with the new interface info.
>
> Regards,
>
> Hans
>
>
>
> On 07/23/2012 11:23 AM, Arnon Gilboa wrote:
>> ---
>>   usbclerk.cpp |   72 
>> +++++++++++++++++++++++++++++-----------------------------
>>   1 files changed, 36 insertions(+), 36 deletions(-)
>>
>> diff --git a/usbclerk.cpp b/usbclerk.cpp
>> index 792f544..441f4a1 100644
>> --- a/usbclerk.cpp
>> +++ b/usbclerk.cpp
>> @@ -1,6 +1,6 @@
>>   #include <windows.h>
>>   #include <setupapi.h>
>> -#include <cfgmgr32.h>
>> +#include <cfgmgr32.h>
>>   #include <stdio.h>
>>   #include <string.h>
>>   #include <tchar.h>
>> @@ -37,8 +37,8 @@ private:
>>       bool dispatch_message(CHAR *buffer, DWORD bytes, USBClerkReply 
>> *reply);
>>       bool install_winusb_driver(int vid, int pid);
>>       bool remove_winusb_driver(int vid, int pid);
>> -    bool remove_dev(HDEVINFO devs, PSP_DEVINFO_DATA dev_info);
>> -    bool rescan();
>> +    bool remove_dev(HDEVINFO devs, PSP_DEVINFO_DATA dev_info);
>> +    bool rescan();
>>       static DWORD WINAPI control_handler(DWORD control, DWORD 
>> event_type,
>>                                           LPVOID event_data, LPVOID 
>> context);
>>       static VOID WINAPI main(DWORD argc, TCHAR * argv[]);
>> @@ -289,7 +289,7 @@ bool USBClerk::execute()
>>           if (!ConnectNamedPipe(_pipe, NULL) && GetLastError() != 
>> ERROR_PIPE_CONNECTED) {
>>               vd_printf("ConnectNamedPipe() failed: %u", 
>> GetLastError());
>>               break;
>> -        }
>> +        }
>>           if (!ReadFile(_pipe, &buffer, sizeof(buffer), &bytes, NULL)) {
>>               vd_printf("ReadFile() failed: %d", GetLastError());
>>               goto disconnect;
>> @@ -433,52 +433,52 @@ cleanup:
>>   bool USBClerk::remove_winusb_driver(int vid, int pid)
>>   {
>>       HDEVINFO devs;
>> -    DWORD dev_index;
>> -    SP_DEVINFO_DATA dev_info;
>> +    DWORD dev_index;
>> +    SP_DEVINFO_DATA dev_info;
>>       TCHAR dev_prefix[MAX_DEVICE_ID_LEN];
>> -    TCHAR dev_id[MAX_DEVICE_ID_LEN];
>> -    bool ret = false;
>> +    TCHAR dev_id[MAX_DEVICE_ID_LEN];
>> +    bool ret = false;
>>
>> -    devs = SetupDiGetClassDevs(NULL, L"USB", NULL, DIGCF_ALLCLASSES);
>> +    devs = SetupDiGetClassDevs(NULL, L"USB", NULL, DIGCF_ALLCLASSES);
>>       if (devs == INVALID_HANDLE_VALUE) {
>>           vd_printf("SetupDiGetClassDevsEx failed: %u", GetLastError());
>>           return false;
>>       }
>>
>>       swprintf(dev_prefix, MAX_DEVICE_ID_LEN, 
>> L"USB\\VID_%04x&PID_%04x", vid, pid);
>> -    dev_info.cbSize = sizeof(dev_info);
>> -    for (dev_index = 0; SetupDiEnumDeviceInfo(devs, dev_index, 
>> &dev_info); dev_index++) {
>> -        if (SetupDiGetDeviceInstanceId(devs, &dev_info, dev_id, 
>> MAX_DEVICE_ID_LEN, NULL) &&
>> -                wcsstr(dev_id, dev_prefix)) {
>> -            vd_printf("Removing %S", dev_id);
>> -            ret = remove_dev(devs, &dev_info);
>> -            break;
>> -        }
>> -    }
>> +    dev_info.cbSize = sizeof(dev_info);
>> +    for (dev_index = 0; SetupDiEnumDeviceInfo(devs, dev_index, 
>> &dev_info); dev_index++) {
>> +        if (SetupDiGetDeviceInstanceId(devs, &dev_info, dev_id, 
>> MAX_DEVICE_ID_LEN, NULL) &&
>> +                wcsstr(dev_id, dev_prefix)) {
>> +            vd_printf("Removing %S", dev_id);
>> +            ret = remove_dev(devs, &dev_info);
>> +            break;
>> +        }
>> +    }
>>       SetupDiDestroyDeviceInfoList(devs);
>> -    ret = ret && rescan();
>> +    ret = ret && rescan();
>>       return ret;
>>   }
>>
>> -bool USBClerk::remove_dev(HDEVINFO devs, PSP_DEVINFO_DATA dev_info)
>> -{
>> -    SP_REMOVEDEVICE_PARAMS rmd_params;
>> -
>> -    rmd_params.ClassInstallHeader.cbSize = 
>> sizeof(SP_CLASSINSTALL_HEADER);
>> -    rmd_params.ClassInstallHeader.InstallFunction = DIF_REMOVE;
>> -    rmd_params.Scope = DI_REMOVEDEVICE_GLOBAL;
>> -    rmd_params.HwProfile = 0;
>> -    return (SetupDiSetClassInstallParams(devs, dev_info,
>> -                &rmd_params.ClassInstallHeader, sizeof(rmd_params)) &&
>> -            SetupDiCallClassInstaller(DIF_REMOVE, devs, dev_info));
>> +bool USBClerk::remove_dev(HDEVINFO devs, PSP_DEVINFO_DATA dev_info)
>> +{
>> +    SP_REMOVEDEVICE_PARAMS rmd_params;
>> +
>> +    rmd_params.ClassInstallHeader.cbSize = 
>> sizeof(SP_CLASSINSTALL_HEADER);
>> +    rmd_params.ClassInstallHeader.InstallFunction = DIF_REMOVE;
>> +    rmd_params.Scope = DI_REMOVEDEVICE_GLOBAL;
>> +    rmd_params.HwProfile = 0;
>> +    return (SetupDiSetClassInstallParams(devs, dev_info,
>> +                &rmd_params.ClassInstallHeader, sizeof(rmd_params)) &&
>> +            SetupDiCallClassInstaller(DIF_REMOVE, devs, dev_info));
>>   }
>>
>> -bool USBClerk::rescan()
>> -{
>> -    DEVINST dev_root;
>> -
>> -    return (CM_Locate_DevNode_Ex(&dev_root, NULL, 
>> CM_LOCATE_DEVNODE_NORMAL, NULL) == CR_SUCCESS &&
>> -            CM_Reenumerate_DevNode_Ex(dev_root, 0, NULL) == 
>> CR_SUCCESS);
>> +bool USBClerk::rescan()
>> +{
>> +    DEVINST dev_root;
>> +
>> +    return (CM_Locate_DevNode_Ex(&dev_root, NULL, 
>> CM_LOCATE_DEVNODE_NORMAL, NULL) == CR_SUCCESS &&
>> +            CM_Reenumerate_DevNode_Ex(dev_root, 0, NULL) == 
>> CR_SUCCESS);
>>   }
>>
>>   int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
>>



More information about the Spice-devel mailing list