From 4f1bec2125a52bd4fa48ed9e2ff3f76836a4ed32 Mon Sep 17 00:00:00 2001 From: Dmitry Fleytman Date: Thu, 28 Jan 2016 14:57:47 +0200 Subject: [PATCH] ControlDevice: Add method for device descriptor retrieval Signed-off-by: Dmitry Fleytman --- UsbDk/ControlDevice.cpp | 11 +++++++++++ UsbDk/ControlDevice.h | 3 +++ 2 files changed, 14 insertions(+) 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; }