-
Notifications
You must be signed in to change notification settings - Fork 78
Open
Description
Hi!
I noticed that when I create filter using usbfilter command the --product flag is ignored.
For example, this command:
VBoxManage.exe usbfilter add 0 --target "otus-astra-docker_default_1624884966310_75575" --name "Aktiv Rutoken ECP [0100]" --product "Rutoken ECP" --revision "0100" --productid "0030" --vendorid "0a89" --manufacturer "Aktiv"creates this filter:
Index: 0
Active: yes
Name: Any Rutoken ECP
VendorId: 0a89
ProductId: 0030
Revision: 0100
Manufacturer: Aktiv
Product:
Remote:
Serial Number:I thik that the cause of this because you are forgot to set product field here.
vbox/src/VBox/Frontends/VBoxManage/VBoxManageUSB.cpp
Lines 404 to 516 in b9657cd
| switch (cmd.mAction) | |
| { | |
| case USBFilterCmd::Add: | |
| { | |
| if (cmd.mGlobal) | |
| { | |
| ComPtr<IHostUSBDeviceFilter> flt; | |
| CHECK_ERROR_BREAK(host, CreateUSBDeviceFilter(f.mName.raw(), | |
| flt.asOutParam())); | |
| if (!f.mActive.isNull()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Active)(f.mActive)); | |
| if (!f.mVendorId.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(VendorId)(f.mVendorId.raw())); | |
| if (!f.mProductId.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(ProductId)(f.mProductId.raw())); | |
| if (!f.mRevision.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Revision)(f.mRevision.raw())); | |
| if (!f.mManufacturer.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Manufacturer)(f.mManufacturer.raw())); | |
| if (!f.mSerialNumber.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(SerialNumber)(f.mSerialNumber.raw())); | |
| if (!f.mMaskedInterfaces.isNull()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(MaskedInterfaces)(f.mMaskedInterfaces)); | |
| if (f.mAction != USBDeviceFilterAction_Null) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Action)(f.mAction)); | |
| CHECK_ERROR_BREAK(host, InsertUSBDeviceFilter(cmd.mIndex, flt)); | |
| } | |
| else | |
| { | |
| ComPtr<IUSBDeviceFilter> flt; | |
| CHECK_ERROR_BREAK(flts, CreateDeviceFilter(f.mName.raw(), | |
| flt.asOutParam())); | |
| if (!f.mActive.isNull()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Active)(f.mActive)); | |
| if (!f.mVendorId.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(VendorId)(f.mVendorId.raw())); | |
| if (!f.mProductId.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(ProductId)(f.mProductId.raw())); | |
| if (!f.mRevision.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Revision)(f.mRevision.raw())); | |
| if (!f.mManufacturer.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Manufacturer)(f.mManufacturer.raw())); | |
| if (!f.mRemote.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Remote)(f.mRemote.raw())); | |
| if (!f.mSerialNumber.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(SerialNumber)(f.mSerialNumber.raw())); | |
| if (!f.mMaskedInterfaces.isNull()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(MaskedInterfaces)(f.mMaskedInterfaces)); | |
| CHECK_ERROR_BREAK(flts, InsertDeviceFilter(cmd.mIndex, flt)); | |
| } | |
| break; | |
| } | |
| case USBFilterCmd::Modify: | |
| { | |
| if (cmd.mGlobal) | |
| { | |
| SafeIfaceArray <IHostUSBDeviceFilter> coll; | |
| CHECK_ERROR_BREAK(host, COMGETTER(USBDeviceFilters)(ComSafeArrayAsOutParam(coll))); | |
| ComPtr<IHostUSBDeviceFilter> flt = coll[cmd.mIndex]; | |
| if (!f.mName.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Name)(f.mName.raw())); | |
| if (!f.mActive.isNull()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Active)(f.mActive)); | |
| if (!f.mVendorId.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(VendorId)(f.mVendorId.raw())); | |
| if (!f.mProductId.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(ProductId)(f.mProductId.raw())); | |
| if (!f.mRevision.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Revision)(f.mRevision.raw())); | |
| if (!f.mManufacturer.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Manufacturer)(f.mManufacturer.raw())); | |
| if (!f.mSerialNumber.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(SerialNumber)(f.mSerialNumber.raw())); | |
| if (!f.mMaskedInterfaces.isNull()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(MaskedInterfaces)(f.mMaskedInterfaces)); | |
| if (f.mAction != USBDeviceFilterAction_Null) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Action)(f.mAction)); | |
| } | |
| else | |
| { | |
| SafeIfaceArray <IUSBDeviceFilter> coll; | |
| CHECK_ERROR_BREAK(flts, COMGETTER(DeviceFilters)(ComSafeArrayAsOutParam(coll))); | |
| ComPtr<IUSBDeviceFilter> flt = coll[cmd.mIndex]; | |
| if (!f.mName.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Name)(f.mName.raw())); | |
| if (!f.mActive.isNull()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Active)(f.mActive)); | |
| if (!f.mVendorId.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(VendorId)(f.mVendorId.raw())); | |
| if (!f.mProductId.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(ProductId)(f.mProductId.raw())); | |
| if (!f.mRevision.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Revision)(f.mRevision.raw())); | |
| if (!f.mManufacturer.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Manufacturer)(f.mManufacturer.raw())); | |
| if (!f.mRemote.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(Remote)(f.mRemote.raw())); | |
| if (!f.mSerialNumber.isEmpty()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(SerialNumber)(f.mSerialNumber.raw())); | |
| if (!f.mMaskedInterfaces.isNull()) | |
| CHECK_ERROR_BREAK(flt, COMSETTER(MaskedInterfaces)(f.mMaskedInterfaces)); | |
| } | |
| break; |
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels