Commit graph

619 commits

Author SHA1 Message Date
Dmitry Fleytman
9fa5fc08ac UsbDk: Prevent double request completion in IoInCallerContext
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
9e09d8b764 UsbDk: Implement control transfer logic
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
b66be8ed62 UsbDk: Introduce USB target raw device accessor
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
49fceb5323 UsbDk: Trivial: clean printouts
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
167cc7ad4c UsbDk: Introduce CWdfRequest::Detach() operation
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
5edf49500b UsbDk: WdfRequest: add generic request processor based on memory objects
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
6708ad11c3 UsbDk: Make null strategy reference control device
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
48ef084147 UsbDk: Strategy: Add accessor for control device object
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
375a5eb10d UsbDk: Avoid multiple redirections of the same device
For some USB devices system calls our AddDevice callback for FDO.
In addition we call the same callback for PDO of the devices we
want to redirect. In this case we will try to install our filter
two times into the same stack which is problematic.

This patch eliminates such a possibility.

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
af4d7e21e7 UsbDk: Make CUsbDkRedirection compare operators const
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
9935ca0aa7 UsbDk: Make device access process non-existing properties properly
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
ee3e3f77ac UsbDk: Mark string compare operators const
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
c3e056bb39 UsbDk: class for pre-allocated WDF memory buffers
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
357e47a92b UsbDk: Make CWdmMemoryBuffer support nullptr pointers
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
55a29f05ea UsbDk: Make CRegText treat nullptr as empty string
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
eb5d30d7d4 UsbDk: Logic for USB device interfaces configuration
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
5f6978b2ce UsbDk: Extend CObjHolder functionality
1. Add destroy() method
2. Predefine delete function for arrays destruction

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
e763ac9a98 UsbDk: Fix memory allocation failure handling
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
c5ea213221 UsbDk: Fix start redirect error value
It is inconsistent to return nullptr as invalid handle.
The proper value for invalid handle is INVALID_HANDLE_VALUE.

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
8004a32e5e UsbDk: Introduce skeleton for select configuration handler
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
ad12e20e12 UsbDk: Introduce generic IO handlers for filter strategy
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
a19d5ed719 UsbDk: Introduce IO target retriever for WDF device
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
84403b65b2 UsbDk: Introduce generic WDF request handlers
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
4566ccdac0 UsbDk: Introduce WDF request forwarding logic
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
31d1737fbe UsbDk: Add incoming queue for redirector devices
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
43a4ac1672 UsbDk: IoInCallerContext callback for redirector strategy
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
79cac7bc0e UsbDk: Introduce filter device request context configuration
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
cdc4e99478 UsbDk: Extend CWdfRequest interface
1. Request parameters accessor
  2. Make WDF object available for derived classes

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
0ec933789c UsbDk: Introduce method for device requests configuration
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
1fef4eee3c UsbDk: Make filter devices receive IoInCallerContext event
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
d3686076c1 UsbDk: FilterDeviceInit: introduce shortcut for strategy retrieval
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
aef9d9be01 UsbDk: CWdfDevice: method for IoInCallerContext callback registration
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
ff5f649436 UsbDk: User buffers retrieval for CWdfRequest
Two methods added:
  1. CWdfRequest::FetchSafeReadBuffer()
  2. CWdfRequest::FetchSafeWriteBuffer()

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
a37e2a4a0b UsbDk: Trivial: ULONG* -> PULONG in interfaces
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
59f80a0f90 UsbDk: Introduce API for configuration descriptors retrieval
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
c0098eefed UsbDk: Introduce GetPDOByDeviceID() helper
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00
Dmitry Fleytman
57025f34c1 UsbDk: make DoUSBDeviceOp() more generic
Make CUsbDkControlDeviceQueue::DoUSBDeviceOp() input buffer type
a template parameter.

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00
Dmitry Fleytman
98584c1d6f UsbDk: Query configuration descriptor method for WDM device accessor
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00
Dmitry Fleytman
400e6e1c9f UsbDk: Introduce send URB helper
Function UsbDkSendUrbSynchronously() introduced

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00
Dmitry Fleytman
eefbd06435 UsbDk: Supply USB device descriptors on enumeration
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00
Dmitry Fleytman
c174d4011b UsbDk: Query device descriptor method for WDM device accessor
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00
Dmitry Fleytman
e3662ef431 UsbDk: Generic UsbBuildGetDescriptorRequest() wrapper
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00
Dmitry Fleytman
46c8381df5 UsbDk: Introduce CIrpBase class with common code
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00
Dmitry Fleytman
d7c84252c7 UsbDkHelper: Better check for buffer overflow case on IOCTL
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00
Dmitry Fleytman
8ce936c7be UsbDk: Fix control device IOCTLS access type
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00
Dmitry Fleytman
3f7e5bdeae UsbDk: Add UsbTarget instance to redirector strategy
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00
Dmitry Fleytman
d2a311752d UsbDk: Introduce CWdfUsbTarget class
Class that encapsulates USB device communication:
 - Descriptors query
 - Pipe transfers (not implemented yet)

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00
Dmitry Fleytman
44b596d0b7 UsbDk: Introduce generic IOCTL method for DriverFile class
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00
Dmitry Fleytman
3465cf56cc UsbDk: Trivial: Fix traces severity
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00
Dmitry Fleytman
7704e07c34 UsbDk: Make redirected device serial numbers dynamic
This is needed to allow simultaneous multiple devices redirection.

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:13 +03:00