Commit graph

619 commits

Author SHA1 Message Date
Pavel Gurvich
f6b5cb2056 UsbDk: Allow control transfers without data buffer
According to spec control transfer may have no data buffer.
Make driver process cases like this properly.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-07-03 08:54:37 +03:00
Pavel Gurvich
4a677d08fc UsbDk: Return proper status on CUsbDkRedirectorStrategy::IoInCallerContext failure
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-07-02 18:14:58 +03:00
Pavel Gurvich
bb1e76a829 UsbDk: Remove junk trace on SetAltSettings
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-07-02 18:11:04 +03:00
Pavel Gurvich
77131d9ff5 UsbDk: fix traces on user mode handle creation
During user mode redirector handle creation we wait for
device to appear. During this process we may take a few
unsuccessfull attempts to open device handle.

Do not print error messages for this attempts.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-07-02 18:10:29 +03:00
Pavel A
2985741dd6 UsbDk: Introduce .editorconfig file
Editorconfig is a nice tool that simplifies
maintenance of consistent coding style.

See http://editorconfig.org for details.

Signed-off-by: Pavel Aronsky <pavel.aronsky@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-22 09:31:22 +03:00
Pavel Aronsky
746614d717 UsbDk: added support for WinXP; get device speed
Signed-off-by: Pavel Aronsky <pavel.aronsky@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-16 15:05:47 +03:00
Pavel Aronsky
913582965c UsbDk: added check for IRQL in CIrp::ForwardAndWait
Signed-off-by: Pavel Aronsky <pavel.aronsky@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-16 15:05:46 +03:00
Pavel Aronsky
701988dd69 UsbDk: Drop dead code
CWdfUrb class and CWdfUsbTarget::ConfigurationDescriptor()
are not used anymore.

Signed-off-by: Pavel Aronsky <pavel.aronsky@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-16 15:05:45 +03:00
Pavel Gurvich
72cf6b764d UsbDk: Do not create symlinks for redirector devices
Symlinks not needed anymore since we create redirector handles
in kernel.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-12 01:02:49 +03:00
Pavel Gurvich
99f3c0dbef UsbDkHelper: Open redirector handle in driver
This commit contains user mode adaptations for
driver interface changes introduced by previous commit.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-12 01:00:08 +03:00
Dmitry Fleytman
5c4d0af852 UsbDk: Open redirector handle in driver
This commit makes redirection creation atomic operation
from user mode client point of view.

This ensures redirection will be stopped automatically
in case of unexpected user mode client termination.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-12 00:57:33 +03:00
Dmitry Fleytman
c95fb22cdb UsbDk: Introduce more CWdfDevice methods
Newly introduced:
    CreateUserModeHandle()
    Reference()
    Dereference()

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-12 00:54:35 +03:00
Pavel Gurvich
3abe48f93b UsbDk: Drop ReadTransferRequestSafe()
Use newly introduced generic utility
UsdDkReadUserBufferSafe() instead.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-12 00:22:54 +03:00
Pavel Gurvich
4a5b116872 UsbDk: Introduce UsdDkReadUserBufferSafe utility
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-12 00:21:34 +03:00
Pavel Gurvich
2b01cd5faf UsbDk: Add MillisecondsTo100Nanoseconds utility
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-12 00:16:37 +03:00
Pavel Gurvich
f67846ab44 UsbDk: Adjust acess mode of driver's IOCTLs
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-12 00:15:34 +03:00
Dmitry Fleytman
e20b3aa48f UsbDk-XP: Drop annoying assertions in unimplemented functions
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-09 11:50:29 +03:00
Dmitry Fleytman
f1208b981f UsbDK-XP: Change WDF version from 1.11 to 1.09
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-09 11:50:28 +03:00
Dmitry Fleytman
51fb96b7cb UsbDK-XP: use wcsncpy instead of wcsncpy_s
wcsncpy_s is not available ion XP kernel

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-09 11:50:27 +03:00
Dmitry Fleytman
d5d51dfd47 UsbDk: place all system includes into stdafx.h
This makes include policy more strict and ensures
all system includes properly wrapped with extern "C"

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-09 11:50:26 +03:00
Dmitry Fleytman
9d699219b8 UsbDk-XP: Setup proper linker input for the driver
Ensure driver links with WDK 7.1 libraries only.

Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-09 11:49:54 +03:00
Dmitry Fleytman
d881efe8ac build: Fix subsystem and linker versions for XP build
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-09 11:42:35 +03:00
Dmitry Fleytman
447de6ad71 build: add XP/2003 configurations
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-01 23:01:13 +03:00
Dmitry Fleytman
6c1b1e894e UsbDk: Fix packaging on the first build
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-06-01 20:21:34 +03:00
Pavel Gurvich
310ef26669 UsbDkHelper: remove unnecessary call to RemoveRedirection
With new kernel mode code redirection stops automatically
when redirector handle is closed.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-31 19:21:04 +03:00
Pavel Gurvich
0cf0c43f39 UsbDk: Register EvtFileClose callback for filter device
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-31 19:19:16 +03:00
Pavel Gurvich
093251727e UsbDk: Add OnClose callback to Strategies
OnClose is called when device symlink is fully closed by used mode.

For redirector strategy OnClose stops redirection.
For other strategies OnClose is currently no-op.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-31 19:17:12 +03:00
Dmitry Fleytman
2514bdc4ea UsbDk: trivial Drop redundant class name specification
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-29 15:47:19 +03:00
Pavel Gurvich
0c872018fc UsbDk: trivial: drop unnecessary includes
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-29 15:47:18 +03:00
Dmitry Fleytman
54d062775c UsbDkController: print device speed on enumeration
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-29 15:47:17 +03:00
Dmitry Fleytman
1af417f1d7 UsbDk: Supply USB device speed on enumeration
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-29 15:34:07 +03:00
Dmitry Fleytman
32ed150d95 UsbDk: Read and store device speed on child registration
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-29 15:34:06 +03:00
Dmitry Fleytman
d141a9fc60 UsbDk: Introduce USB device speed fetcher function
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-29 15:34:05 +03:00
Dmitry Fleytman
f7a82043b5 UsbDk: Introduce USBD wrapper class
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-29 15:34:04 +03:00
Pavel Gurvich
18709c5e64 UsbDk: Add device speed definitions to API structures
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-29 14:20:55 +03:00
Pavel Gurvich
6239ffba38 UsbDkHelper: Introduce ResetDevice API
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-26 18:42:52 +03:00
Pavel Gurvich
32e7243f99 UsbDk: Implement RESET_DEVICE IOCTL
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-26 18:42:51 +03:00
Pavel Gurvich
c2adb1f0eb UsbDk: Introduce RESET DEVICE IOCTL definition
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-26 18:41:18 +03:00
Pavel Gurvich
7ef985384e UsbDk: Make all interface fields ULONG64
This is needed to make structures similar on all architectures
and all compilers.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-26 18:41:17 +03:00
Pavel Gurvich
02076801c4 UsbDkHelper: Add UsbDk_SetAltsetting API
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-26 18:41:17 +03:00
Pavel Gurvich
40154c5bab UsbDk: Implement IOCTL_USBDK_DEVICE_SET_ALTSETTING
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-26 18:41:16 +03:00
Pavel Gurvich
c0f71a13ee UsbDk: Introduce SET_ALTSETTING IOCTL definition
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-26 18:41:15 +03:00
Pavel Gurvich
780ef1202d UsbDk: Add Start/Stop methods to Wdf Queue class
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-26 18:41:15 +03:00
Pavel Gurvich
34dea22308 UsbDk: Separate transfer and configuration requests processing
Introduce separate queues for different types of requests:

1. Read/Write queue
2. Configuration (IOCTL) queue

This is needed to stop transfers during reconfiguration.

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-26 18:41:14 +03:00
Pavel Gurvich
225d12c9d8 UsbDk: Drop Control Transfer IOCTL
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-26 18:41:13 +03:00
Pavel Gurvich
96ac1e3f9b UsbDk: Implement Control Transfer via R/W functions
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-26 17:59:23 +03:00
Pavel Gurvich
caebe2ac7c UsbDk: Define virtual endpoint for control transfers
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-26 17:57:43 +03:00
Pavel Gurvich
00da1f59fc UsbDk: make stop redirection synchronous
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-20 12:03:27 +03:00
Dmitry Fleytman
87c3c67991 UsbDk: Introduce class for objects reference counting
Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-20 12:03:26 +03:00
Pavel Gurvich
b0e4908e3e UsbDk: do not create symlinks for HUB filters
Those symlinks are not used by user mode API

Signed-off-by: Pavel Gurvich <pavel@daynix.com>
Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
2014-05-20 12:03:25 +03:00