Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
c074966b
Commit
c074966b
authored
Nov 06, 2019
by
Zebediah Figura
Committed by
Alexandre Julliard
Nov 07, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winebus.sys: Stop creating a setupapi device.
ntoskrnl.exe handles this now. Signed-off-by:
Zebediah Figura
<
z.figura12@gmail.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
81cda52d
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
11 additions
and
70 deletions
+11
-70
Makefile.in
dlls/winebus.sys/Makefile.in
+1
-1
bus.h
dlls/winebus.sys/bus.h
+1
-1
bus_iohid.c
dlls/winebus.sys/bus_iohid.c
+1
-4
bus_sdl.c
dlls/winebus.sys/bus_sdl.c
+2
-6
bus_udev.c
dlls/winebus.sys/bus_udev.c
+2
-6
main.c
dlls/winebus.sys/main.c
+4
-52
No files found.
dlls/winebus.sys/Makefile.in
View file @
c074966b
MODULE
=
winebus.sys
IMPORTS
=
ntoskrnl
setupapi
advapi32
IMPORTS
=
ntoskrnl advapi32
EXTRALIBS
=
$(IOKIT_LIBS)
$(UDEV_LIBS)
EXTRAINCL
=
$(UDEV_CFLAGS)
$(SDL2_CFLAGS)
EXTRADLLFLAGS
=
-Wl
,--subsystem,native
...
...
dlls/winebus.sys/bus.h
View file @
c074966b
...
...
@@ -43,7 +43,7 @@ void *get_platform_private(DEVICE_OBJECT *device) DECLSPEC_HIDDEN;
/* HID Plug and Play Bus */
DEVICE_OBJECT
*
bus_create_hid_device
(
const
WCHAR
*
busidW
,
WORD
vid
,
WORD
pid
,
WORD
input
,
DWORD
version
,
DWORD
uid
,
const
WCHAR
*
serialW
,
BOOL
is_gamepad
,
const
GUID
*
class
,
const
platform_vtbl
*
vtbl
,
DWORD
platform_data_size
)
DECLSPEC_HIDDEN
;
const
platform_vtbl
*
vtbl
,
DWORD
platform_data_size
)
DECLSPEC_HIDDEN
;
DEVICE_OBJECT
*
bus_find_hid_device
(
const
platform_vtbl
*
vtbl
,
void
*
platform_dev
)
DECLSPEC_HIDDEN
;
void
bus_remove_hid_device
(
DEVICE_OBJECT
*
device
)
DECLSPEC_HIDDEN
;
void
process_hid_report
(
DEVICE_OBJECT
*
device
,
BYTE
*
report
,
DWORD
length
)
DECLSPEC_HIDDEN
;
...
...
dlls/winebus.sys/bus_iohid.c
View file @
c074966b
...
...
@@ -102,9 +102,6 @@ static HANDLE run_loop_handle;
static
const
WCHAR
busidW
[]
=
{
'I'
,
'O'
,
'H'
,
'I'
,
'D'
,
0
};
#include "initguid.h"
DEFINE_GUID
(
GUID_DEVCLASS_IOHID
,
0x989D309D
,
0x0470
,
0x4E1A
,
0x89
,
0x38
,
0x50
,
0x1F
,
0x42
,
0xBD
,
0x9A
,
0xCD
);
struct
platform_private
{
IOHIDDeviceRef
device
;
...
...
@@ -348,7 +345,7 @@ static void handle_DeviceMatchingCallback(void *context, IOReturn result, void *
input
=
0
;
device
=
bus_create_hid_device
(
busidW
,
vid
,
pid
,
input
,
version
,
uid
,
str
?
serial_string
:
NULL
,
is_gamepad
,
&
GUID_DEVCLASS_IOHID
,
version
,
uid
,
str
?
serial_string
:
NULL
,
is_gamepad
,
&
iohid_vtbl
,
sizeof
(
struct
platform_private
));
if
(
!
device
)
ERR
(
"Failed to create device
\n
"
);
...
...
dlls/winebus.sys/bus_sdl.c
View file @
c074966b
...
...
@@ -66,9 +66,6 @@ static const WCHAR sdl_busidW[] = {'S','D','L','J','O','Y',0};
static
DWORD
map_controllers
=
0
;
#include "initguid.h"
DEFINE_GUID
(
GUID_DEVCLASS_SDL
,
0x463d60b5
,
0x802b
,
0x4bb2
,
0x8f
,
0xdb
,
0x7d
,
0xa9
,
0xb9
,
0x96
,
0x04
,
0xd8
);
static
void
*
sdl_handle
=
NULL
;
static
HANDLE
deviceloop_handle
;
static
UINT
quit_event
=
-
1
;
...
...
@@ -974,9 +971,8 @@ static void try_add_device(unsigned int index)
if
(
is_xbox_gamepad
)
input
=
0
;
device
=
bus_create_hid_device
(
sdl_busidW
,
vid
,
pid
,
input
,
version
,
index
,
serial
,
is_xbox_gamepad
,
&
GUID_DEVCLASS_SDL
,
&
sdl_vtbl
,
sizeof
(
struct
platform_private
));
device
=
bus_create_hid_device
(
sdl_busidW
,
vid
,
pid
,
input
,
version
,
index
,
serial
,
is_xbox_gamepad
,
&
sdl_vtbl
,
sizeof
(
struct
platform_private
));
if
(
device
)
{
...
...
dlls/winebus.sys/bus_udev.c
View file @
c074966b
...
...
@@ -98,10 +98,6 @@ static int deviceloop_control[2];
static
const
WCHAR
hidraw_busidW
[]
=
{
'H'
,
'I'
,
'D'
,
'R'
,
'A'
,
'W'
,
0
};
static
const
WCHAR
lnxev_busidW
[]
=
{
'L'
,
'N'
,
'X'
,
'E'
,
'V'
,
0
};
#include "initguid.h"
DEFINE_GUID
(
GUID_DEVCLASS_HIDRAW
,
0x3def44ad
,
0x242e
,
0x46e5
,
0x82
,
0x6d
,
0x70
,
0x72
,
0x13
,
0xf3
,
0xaa
,
0x81
);
DEFINE_GUID
(
GUID_DEVCLASS_LINUXEVENT
,
0x1b932c0d
,
0xfea7
,
0x42cd
,
0x8e
,
0xaa
,
0x0e
,
0x48
,
0x79
,
0xb6
,
0x9e
,
0xaa
);
struct
platform_private
{
struct
udev_device
*
udev_device
;
...
...
@@ -1241,13 +1237,13 @@ static void try_add_device(struct udev_device *dev)
if
(
strcmp
(
subsystem
,
"hidraw"
)
==
0
)
{
device
=
bus_create_hid_device
(
hidraw_busidW
,
vid
,
pid
,
input
,
version
,
0
,
serial
,
is_gamepad
,
&
GUID_DEVCLASS_HIDRAW
,
&
hidraw_vtbl
,
sizeof
(
struct
platform_private
));
&
hidraw_vtbl
,
sizeof
(
struct
platform_private
));
}
#ifdef HAS_PROPER_INPUT_HEADER
else
if
(
strcmp
(
subsystem
,
"input"
)
==
0
)
{
device
=
bus_create_hid_device
(
lnxev_busidW
,
vid
,
pid
,
input
,
version
,
0
,
serial
,
is_gamepad
,
&
GUID_DEVCLASS_LINUXEVENT
,
&
lnxev_vtbl
,
sizeof
(
struct
wine_input_private
));
&
lnxev_vtbl
,
sizeof
(
struct
wine_input_private
));
}
#endif
...
...
dlls/winebus.sys/main.c
View file @
c074966b
...
...
@@ -25,13 +25,7 @@
#include "ntstatus.h"
#define WIN32_NO_STATUS
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "winternl.h"
#include "winreg.h"
#include "setupapi.h"
#include "cfgmgr32.h"
#include "winioctl.h"
#include "hidusage.h"
#include "ddk/wdm.h"
...
...
@@ -47,8 +41,6 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
plugplay
);
WINE_DECLARE_DEBUG_CHANNEL
(
hid_report
);
static
const
WCHAR
backslashW
[]
=
{
'\\'
,
0
};
struct
product_desc
{
WORD
vid
;
...
...
@@ -223,23 +215,20 @@ static WCHAR *get_compatible_ids(DEVICE_OBJECT *device)
DEVICE_OBJECT
*
bus_create_hid_device
(
const
WCHAR
*
busidW
,
WORD
vid
,
WORD
pid
,
WORD
input
,
DWORD
version
,
DWORD
uid
,
const
WCHAR
*
serialW
,
BOOL
is_gamepad
,
const
GUID
*
class
,
const
platform_vtbl
*
vtbl
,
DWORD
platform_data_size
)
const
platform_vtbl
*
vtbl
,
DWORD
platform_data_size
)
{
static
const
WCHAR
device_name_fmtW
[]
=
{
'\\'
,
'D'
,
'e'
,
'v'
,
'i'
,
'c'
,
'e'
,
'\\'
,
'%'
,
's'
,
'#'
,
'%'
,
'p'
,
0
};
WCHAR
*
id
,
instance
[
MAX_DEVICE_ID_LEN
];
struct
device_extension
*
ext
;
struct
pnp_device
*
pnp_dev
;
DEVICE_OBJECT
*
device
;
UNICODE_STRING
nameW
;
WCHAR
dev_name
[
256
];
HDEVINFO
devinfo
;
SP_DEVINFO_DATA
data
=
{
sizeof
(
data
)};
NTSTATUS
status
;
DWORD
length
;
TRACE
(
"(%s, %04x, %04x, %04x, %u, %u, %s, %u, %
s, %
p, %u)
\n
"
,
TRACE
(
"(%s, %04x, %04x, %04x, %u, %u, %s, %u, %p, %u)
\n
"
,
debugstr_w
(
busidW
),
vid
,
pid
,
input
,
version
,
uid
,
debugstr_w
(
serialW
),
is_gamepad
,
debugstr_guid
(
class
),
vtbl
,
platform_data_size
);
is_gamepad
,
vtbl
,
platform_data_size
);
if
(
!
(
pnp_dev
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
*
pnp_dev
))))
return
NULL
;
...
...
@@ -286,41 +275,6 @@ DEVICE_OBJECT *bus_create_hid_device(const WCHAR *busidW, WORD vid, WORD pid,
list_add_tail
(
&
pnp_devset
,
&
pnp_dev
->
entry
);
LeaveCriticalSection
(
&
device_list_cs
);
devinfo
=
SetupDiCreateDeviceInfoList
(
class
,
NULL
);
if
(
devinfo
==
INVALID_HANDLE_VALUE
)
{
ERR
(
"failed to create device info list, error %#x
\n
"
,
GetLastError
());
goto
error
;
}
if
(
!
(
id
=
get_device_id
(
device
)))
{
ERR
(
"failed to generate instance id
\n
"
);
goto
error
;
}
strcpyW
(
instance
,
id
);
ExFreePool
(
id
);
if
(
!
(
id
=
get_instance_id
(
device
)))
{
ERR
(
"failed to generate instance id
\n
"
);
goto
error
;
}
strcatW
(
instance
,
backslashW
);
strcatW
(
instance
,
id
);
ExFreePool
(
id
);
if
(
SetupDiCreateDeviceInfoW
(
devinfo
,
instance
,
class
,
NULL
,
NULL
,
DICD_INHERIT_CLASSDRVS
,
&
data
))
{
if
(
!
SetupDiRegisterDeviceInfo
(
devinfo
,
&
data
,
0
,
NULL
,
NULL
,
NULL
))
ERR
(
"failed to register device info, error %#x
\n
"
,
GetLastError
());
}
else
if
(
GetLastError
()
!=
ERROR_DEVINST_ALREADY_EXISTS
)
ERR
(
"failed to create device info, error %#x
\n
"
,
GetLastError
());
error:
SetupDiDestroyDeviceInfoList
(
devinfo
);
return
device
;
}
...
...
@@ -556,11 +510,9 @@ static const platform_vtbl mouse_vtbl =
static
void
mouse_device_create
(
void
)
{
static
const
GUID
wine_mouse_class
=
{
0xdfe2580e
,
0x52fd
,
0x453d
,{
0xa2
,
0xc1
,
0x33
,
0x81
,
0xf2
,
0x32
,
0x68
,
0x4c
}};
static
const
WCHAR
busidW
[]
=
{
'W'
,
'I'
,
'N'
,
'E'
,
'M'
,
'O'
,
'U'
,
'S'
,
'E'
,
0
};
mouse_obj
=
bus_create_hid_device
(
busidW
,
0
,
0
,
-
1
,
0
,
0
,
busidW
,
FALSE
,
&
wine_mouse_class
,
&
mouse_vtbl
,
0
);
mouse_obj
=
bus_create_hid_device
(
busidW
,
0
,
0
,
-
1
,
0
,
0
,
busidW
,
FALSE
,
&
mouse_vtbl
,
0
);
IoInvalidateDeviceRelations
(
bus_pdo
,
BusRelations
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment