diff --git a/UsbDk/ControlDevice.cpp b/UsbDk/ControlDevice.cpp index f2ac416..e86bea4 100644 --- a/UsbDk/ControlDevice.cpp +++ b/UsbDk/ControlDevice.cpp @@ -337,6 +337,17 @@ bool CUsbDkControlDevice::UsbDeviceExists(const USB_DK_DEVICE_ID &ID) return !EnumUsbDevicesByID(ID, ConstFalse); } +bool CUsbDkControlDevice::GetDeviceDescriptor(const USB_DK_DEVICE_ID &DeviceID, + USB_DEVICE_DESCRIPTOR &Descriptor) +{ + return !EnumUsbDevicesByID(DeviceID, + [&Descriptor](CUsbDkChildDevice *Child) -> bool + { + Descriptor = Child->DeviceDescriptor(); + return false; + }); +} + PDEVICE_OBJECT CUsbDkControlDevice::GetPDOByDeviceID(const USB_DK_DEVICE_ID &DeviceID) { PDEVICE_OBJECT PDO = nullptr; diff --git a/UsbDk/ControlDevice.h b/UsbDk/ControlDevice.h index 1f16c55..56c46e9 100644 --- a/UsbDk/ControlDevice.h +++ b/UsbDk/ControlDevice.h @@ -267,6 +267,9 @@ public: PUSB_CONFIGURATION_DESCRIPTOR Descriptor, size_t *OutputBuffLen); + bool GetDeviceDescriptor(const USB_DK_DEVICE_ID &DeviceID, + USB_DEVICE_DESCRIPTOR &Descriptor); + static bool Allocate(); static void Deallocate() { delete m_UsbDkControlDevice; }