Commit graph

291 commits

Author SHA1 Message Date
Dmitry Fleytman
6d5b7151ee UsbDk: Trivial: Replace NULL with nullptr
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
d680b5b139 UsbDk: Fix ReadPipe/WritePipe number of bytes transferred propagation
Number of bytes transferred returned by ReadFile/WriteFile cannot
be larger then the size of buffer passed to the function.

Since buffer passed to ReadFile/WriteFile is our request
structure and number of bytes transferred to/from usb device
depends on buffer size passed via the request structure and not on
request structure size we have to return actual number of bytes
transferred via some field in request structure and not via system
facilities.

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
008699089f UsbDkHelper: Fix read/write logic
Do not destroy redirector handle after each operation.

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
1447b8d476 UsbDk: disable maximum packet size check for pipes
It's up to client to send packets of allowed size.

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
655307e7b3 UsbDk: Fix WdfRequest unsafe buffers interface
1. Fix buffers probing methods semantics
2. Remove template directives where not required

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
e602d6c4cc UsbDk: Trivial: traces cleanup/fixes
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
5cdaf656f9 UsbDkHelper: Introduce ReadPipe/WritePipe API
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
e3c976d432 UsbDkHelper: Introduce generic read/write methods
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
33ceed2b33 UsbDk: Redirector queue read/write methods
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
54cc88bc61 UsbDk: Redirector strategy read/write methods
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
8c2b454cae UsbDk: Simplify strategy interface
Make filter strategy methods accept raw WDF requests.
This simplifies overall request handling code.

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
a5bba7bf0c UsbDk: Introduce read/write endpoint logic
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
f2b18a5706 UsbDk: Make WdfRequest detach return original object
This change slightly simplifies CWdfRequest class usage

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
b50b2eddb8 UsbDk: Method for sending request with completion
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
46cac03bc6 UsbDk: CWdfRequest: introduce internal object accessor
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:15 +03:00
Dmitry Fleytman
685f789979 UsbDk: CWdfRequest methods for read/written bytes number specification
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
799164e90d UsbDk: Trivial: simplify WdfRequest completion code
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
ba060102dd UsbDk: Introduce accessors for WdfRequest unsafe buffers
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
00dec94f34 UsbDk: Assign HUB strategy to devices of class HUB
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
267311dcfe UsbDk: Introduce UsbDeviceIsHub helper
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
527a0b774f UsbDkController: Handle start redirect return value properly
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
Dmitry Fleytman
9a12b44669 UsbDkHelper: Trivial: typos and cosmetics
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-11 19:26:14 +03:00
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