Commit graph

102 commits

Author SHA1 Message Date
Dmitry Fleytman
8dab75aecb UsbDkController: Beautifications
1. Debug output removed
2. Better device enumeration format

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:11 +03:00
Dmitry Fleytman
653ce6b4ad UsbDk: Drop ping IOCTL and children dump logic
Debugging code removed.

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:11 +03:00
Pavel Gurvich
2bdf99483e UsbDkController: Add ResetDevice functionality to Controller
Add ResetDevice functionality to Controller

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:11 +03:00
Pavel Gurvich
9352d2887c UsbDkHelper: Add ResetDevice functionality to Helper
Add ResetDevice functionality to Helper

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:11 +03:00
Pavel Gurvich
75dfc650a5 UsbDk: Implement ResedDevice IOCTL functionality in kernel
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:11 +03:00
Dmitry Fleytman
488ceb3b29 UsbDk: Comment out PDO cloning logic
Cloning code to be refactored and moved to corresponding classes

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:11 +03:00
Pavel Gurvich
33bdbde394 UsbDk: Extend CUsbDkChildDevice with PDO and Match()
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:11 +03:00
Dmitry Fleytman
37c665c52b UsbDk: ControlDevice: Make all USB devices enumeration code generic
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:11 +03:00
Dmitry Fleytman
68baf5b6c8 UsbDk: Add conditional USB devices enumeration into filter device class
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:11 +03:00
Dmitry Fleytman
408b46fd15 UsbDk: Add constant predicates
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:11 +03:00
Dmitry Fleytman
bc3fe48519 UsbDk: Make lists return indication of whether iteration was stopped
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:11 +03:00
Dmitry Fleytman
03f1e8d59b UsbDk: Add ForEachIf method into list class
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:11 +03:00
Dmitry Fleytman
8ad530b07d UsbDk: Fix USB devices enumeration
USB devices enumeration logic  placed device information
into output buffer improperly

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:11 +03:00
Dmitry Fleytman
2f421af937 UsbDk: Introduce USB WDM device access class with reset logic
class CWdmUsbDeviceAccess introduced

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:11 +03:00
Pavel Gurvich
395491d18d UsbDk: Introduce class for DeviceIoControl IRPs
class CIoControlIrp added

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
d2dc75c14b UsbDk: Fix CIrp cleanup
Do not hold target device reference in case IRP allocation failure

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
dd4cfefbe9 UsbDk: CIrp beautifications
NULL --> nullptr
VOID --> void

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
a60dffc87a UsbDk: Make CIrp use CWdmEvent
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
462c365327 UsbDk: CDeviceAccess class factory dropped
Doesn't bring any added value, just makes code more complex

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
1061862779 UsbDk: Introduce WDM event class
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
5fc743fc07 Global: Adding .gitignore to repository
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
dc831178e5 UsbDk: Couple of build warnings fixed
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Pavel Gurvich
9069176985 UsbDkController: add device enumeration to test application
Add device enumeration to UsbDkController

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Pavel Gurvich
c0bf20d715 UsbDkHelper: add EnumerateDevice functionality to UsbDkHelper
Add flow of device enumeration to DriverAccess

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Pavel Gurvich
139457073b UsbDk: add enumeration of USB devices to ControlDevice
Add functionality to ControlDevice that allows counting and enumerating USB devices

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Pavel Gurvich
771555ed40 UsbDk: prepare FilterDevice for device enumeration
FilterDevice: fix functions of CUsbDkChildDevice;
add GetChildrenCount() to CUsbDkFilterDevice;
Make m_ChildDevices counting list

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Pavel Gurvich
ce2c4e5ea7 UsbDk: Make list enumeration interruptible
Functor may return false to stop enumeration

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Pavel Gurvich
8539bed118 UsbDkHelper: Improve exception messages
Add newline after exception message.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Pavel Gurvich
cd3c207b03 UsbDkHelper: Do not fail DeleteServiceObject when service does not exist
Return when OpenService fails because service does
not exist

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Pavel Gurvich
ef0c3d33b9 UsbDkHelper: Add time flow to architecture doc
Add time flow of Time flow after reset USB Host Controller (or reboot of machine),
Time flow of configuration UsbDk driver,
Time flow of enumeration after reset specific device

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Pavel Gurvich
440221e5b4 UsbDkHelper: Restrict install/uninstall under WoW64
Add check that user is not trying to install 32 bit package on 64 bit system

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Pavel Gurvich
0f9d483c6f UsbDkHelper: Do full roll-back on install failure.
Run uninstall process if installation failed.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Pavel Gurvich
81180a2a83 UsbDkHelper: Print both error message and error number.
Print both error message and error number returned from GetLastError() on exception.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Pavel Gurvich
3137e01236 UsbDkHelper: Print exception text to all sources
Print exception text to both OutputDebugString and console

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Pavel Gurvich
8f545c05e8 UsbDkHelper: Do not fail uninstall due to non-existing items to be deleted
Do not fail uninstall if driver file does not exist in windows/system32
Also do not fail uninstall in other cases when something does not exist - i.e. service, UpperFilters entry etc.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Pavel Gurvich
4041e40878 UsbDkHelper: Beautify exception syntax.
Insert general string to constructor. Add Constructor with error code.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
1a1edc7f5a UsbDk: CUsbDkControl: Dump all children devices on PING
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
c06e5461f3 UsbDk: CUsbDkFilterDevice: introduce children list
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
7ae3eaf31b UsbDk: Usual deleted contructors for filter device class
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
d4887eba35 UsbDk: Introduce class for child USB device information
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
f2f2541104 UsbDk: Introduce funtion to query USB device serial number
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
53c79ec79e UsbDk/Helper: Introduce data structure for device enumeration
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
de546ef4ff UsbDk: CWdmList::ForEach() fix recursive lock acquisition
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
12ef2e4ec9 UsbDk: Make CRegText instances non-paged
This is needed for access with spinlocks

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
c518508b31 UsbDk: Register filter devices in control device
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
9c36561fcd UsbDk: CUsbDkControlDevice: Add interface for filters registration
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
afeef67e62 UsbDk: Make CUsbDkFilterDevice objects suitable for CWdmList
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
a9ca161690 UsbDk: Introduce entry removal function for CWdmList
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
6ee40a363b UsbDk: Introduce UsbDkFilterDevice class
- Introduce filtering logic class
 - Make control device creation logic object oriented
 - Integrate control device creation with filter devices creation

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00
Dmitry Fleytman
ac848be907 UsbDk: Introduce CPreAllocatedDeviceInit class
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:10 +03:00