You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Compare commits
23 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
a46b9ff3dc | ||
|
6589142220 | ||
|
fd3bb06a4c | ||
|
49aafeb17b | ||
|
841e2a8cda | ||
|
4aa460b8cd | ||
|
512d0b1d30 | ||
|
ff10ae6e74 | ||
|
fcfeaf092c | ||
|
2da5f18812 | ||
|
004a5a5717 | ||
|
7447216104 | ||
|
938dddf7df | ||
|
618e349c72 | ||
|
2007f010ac | ||
|
fb4fcb4da6 | ||
|
74068f2cab | ||
|
31157f5ed4 | ||
|
3813f414ed | ||
|
c6f239ef2e | ||
|
3b3cb09acc | ||
|
5734c2c2df | ||
|
8ceae1a2a3 |
@@ -1,2 +1,2 @@
|
||||
Fixes: Fixes compile warnings.
|
||||
Depends: mailing-list-patches
|
||||
#Depends: mailing-list-patches
|
||||
|
2
patches/cryptext-CryptExtOpenCER/definition
Normal file
2
patches/cryptext-CryptExtOpenCER/definition
Normal file
@@ -0,0 +1,2 @@
|
||||
# Taken from the mailing list - July 2019.
|
||||
Fixes: cryptext: Implement CryptExtOpenCER.
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1 +0,0 @@
|
||||
Fixes: [44958] dbgeng: Support IDebugClient7 interface.
|
@@ -237,7 +237,7 @@ index bc58c1817c..3c643afe15 100644
|
||||
+ DestroyWindow(window);
|
||||
+}
|
||||
+
|
||||
+static void test_texture_wrong_caps()
|
||||
+static void test_texture_wrong_caps(void)
|
||||
+{
|
||||
+ trace("Hardware device.\n");
|
||||
+ test_texture_wrong_caps_(FALSE);
|
||||
|
@@ -81,7 +81,7 @@ index 0000000000..9ecc3d54be
|
||||
+
|
||||
+#include "wine/test.h"
|
||||
+
|
||||
+static void test_IDirectManipulationManager2()
|
||||
+static void test_IDirectManipulationManager2(void)
|
||||
+{
|
||||
+ IDirectManipulationManager2 *manager2;
|
||||
+ IDirectManipulationUpdateManager *update;
|
||||
|
@@ -1,42 +0,0 @@
|
||||
From 804021e621413998b319f887eed3f754df784fcd Mon Sep 17 00:00:00 2001
|
||||
From: Ken Thomases <ken@codeweavers.com>
|
||||
Date: Thu, 27 Mar 2014 18:18:46 -0500
|
||||
Subject: winemac: Make GetMonitorInfo() give a different device name
|
||||
(\\.\DISPLAY<n>) to each monitor.
|
||||
|
||||
---
|
||||
dlls/winemac.drv/display.c | 10 ++++++----
|
||||
1 file changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/winemac.drv/display.c b/dlls/winemac.drv/display.c
|
||||
index e1357d8..f82289d 100644
|
||||
--- a/dlls/winemac.drv/display.c
|
||||
+++ b/dlls/winemac.drv/display.c
|
||||
@@ -1210,7 +1210,7 @@ done:
|
||||
*/
|
||||
BOOL CDECL macdrv_GetMonitorInfo(HMONITOR monitor, LPMONITORINFO info)
|
||||
{
|
||||
- static const WCHAR adapter_name[] = { '\\','\\','.','\\','D','I','S','P','L','A','Y','1',0 };
|
||||
+ static const WCHAR adapter_name[] = { '\\','\\','.','\\','D','I','S','P','L','A','Y','%','d',0 };
|
||||
struct macdrv_display *displays;
|
||||
int num_displays;
|
||||
CGDirectDisplayID display_id;
|
||||
@@ -1240,10 +1240,12 @@ BOOL CDECL macdrv_GetMonitorInfo(HMONITOR monitor, LPMONITORINFO info)
|
||||
info->dwFlags = (i == 0) ? MONITORINFOF_PRIMARY : 0;
|
||||
|
||||
if (info->cbSize >= sizeof(MONITORINFOEXW))
|
||||
- lstrcpyW(((MONITORINFOEXW*)info)->szDevice, adapter_name);
|
||||
+ snprintfW(((MONITORINFOEXW*)info)->szDevice, sizeof(((MONITORINFOEXW*)info)->szDevice) / sizeof(WCHAR),
|
||||
+ adapter_name, i + 1);
|
||||
|
||||
- TRACE(" -> rcMonitor %s rcWork %s dwFlags %08x\n", wine_dbgstr_rect(&info->rcMonitor),
|
||||
- wine_dbgstr_rect(&info->rcWork), info->dwFlags);
|
||||
+ TRACE(" -> rcMonitor %s rcWork %s dwFlags %08x szDevice %s\n", wine_dbgstr_rect(&info->rcMonitor),
|
||||
+ wine_dbgstr_rect(&info->rcWork), info->dwFlags,
|
||||
+ info->cbSize >= sizeof(MONITORINFOEXW) ? debugstr_w(((MONITORINFOEXW*)info)->szDevice) : "n/a");
|
||||
}
|
||||
else
|
||||
{
|
||||
--
|
||||
2.6.1
|
||||
|
@@ -1,3 +0,0 @@
|
||||
Fixes: [34978] Multiple applications need EnumDisplayDevicesW implementation
|
||||
Fixes: [37709] GetMonitorInfo returns the same name for all monitors
|
||||
Fixes: [41258] Return a more reasonable display DeviceID
|
@@ -1,78 +0,0 @@
|
||||
From 81d946aef87b60fa5a013eda5656c10726c5bd0a Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Wed, 30 Jan 2019 16:23:25 +1100
|
||||
Subject: [PATCH] httpapi: Fake success from HttpCreateServerSession
|
||||
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46549
|
||||
---
|
||||
dlls/httpapi/httpapi_main.c | 10 +++++++++-
|
||||
dlls/httpapi/tests/httpapi.c | 10 +++++-----
|
||||
2 files changed, 14 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/dlls/httpapi/httpapi_main.c b/dlls/httpapi/httpapi_main.c
|
||||
index 3ab03995e4..44e72c6f41 100644
|
||||
--- a/dlls/httpapi/httpapi_main.c
|
||||
+++ b/dlls/httpapi/httpapi_main.c
|
||||
@@ -190,7 +190,15 @@ ULONG WINAPI HttpAddUrl( HANDLE handle, PCWSTR url, PVOID reserved )
|
||||
ULONG WINAPI HttpCreateServerSession( HTTPAPI_VERSION version, HTTP_SERVER_SESSION_ID *id, ULONG reserved )
|
||||
{
|
||||
FIXME( "({%d,%d}, %p, %d): stub!\n", version.HttpApiMajorVersion, version.HttpApiMinorVersion, id, reserved );
|
||||
- return ERROR_ACCESS_DENIED;
|
||||
+
|
||||
+ if(!id || reserved)
|
||||
+ return ERROR_INVALID_PARAMETER;
|
||||
+ if((version.HttpApiMajorVersion != 1 && version.HttpApiMajorVersion != 2) || version.HttpApiMinorVersion != 0)
|
||||
+ return ERROR_REVISION_MISMATCH;
|
||||
+
|
||||
+ *id = 0xabcdefff;
|
||||
+
|
||||
+ return NO_ERROR;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
diff --git a/dlls/httpapi/tests/httpapi.c b/dlls/httpapi/tests/httpapi.c
|
||||
index e1437552a8..e090390b89 100644
|
||||
--- a/dlls/httpapi/tests/httpapi.c
|
||||
+++ b/dlls/httpapi/tests/httpapi.c
|
||||
@@ -92,25 +92,26 @@ static void test_HttpCreateServerSession(void)
|
||||
version.HttpApiMajorVersion = 1;
|
||||
version.HttpApiMinorVersion = 0;
|
||||
ret = pHttpCreateServerSession(version, NULL, 0);
|
||||
-todo_wine
|
||||
+ ok(ret == ERROR_INVALID_PARAMETER, "Unexpected return value %u.\n", ret);
|
||||
+
|
||||
+ version.HttpApiMajorVersion = 1;
|
||||
+ version.HttpApiMinorVersion = 0;
|
||||
+ ret = pHttpCreateServerSession(version, &session, 1);
|
||||
ok(ret == ERROR_INVALID_PARAMETER, "Unexpected return value %u.\n", ret);
|
||||
|
||||
version.HttpApiMajorVersion = 1;
|
||||
version.HttpApiMinorVersion = 1;
|
||||
ret = pHttpCreateServerSession(version, &session, 0);
|
||||
-todo_wine
|
||||
ok(ret == ERROR_REVISION_MISMATCH, "Unexpected return value %u.\n", ret);
|
||||
|
||||
version.HttpApiMajorVersion = 3;
|
||||
version.HttpApiMinorVersion = 0;
|
||||
ret = pHttpCreateServerSession(version, &session, 0);
|
||||
-todo_wine
|
||||
ok(ret == ERROR_REVISION_MISMATCH, "Unexpected return value %u.\n", ret);
|
||||
|
||||
version.HttpApiMajorVersion = 2;
|
||||
version.HttpApiMinorVersion = 0;
|
||||
ret = pHttpCreateServerSession(version, &session, 0);
|
||||
-todo_wine
|
||||
ok(!ret, "Unexpected return value %u.\n", ret);
|
||||
ret = pHttpCloseServerSession(session);
|
||||
todo_wine
|
||||
@@ -119,7 +120,6 @@ todo_wine
|
||||
version.HttpApiMajorVersion = 1;
|
||||
version.HttpApiMinorVersion = 0;
|
||||
ret = pHttpCreateServerSession(version, &session, 0);
|
||||
-todo_wine
|
||||
ok(!ret, "Unexpected return value %u.\n", ret);
|
||||
ret = pHttpCloseServerSession(session);
|
||||
todo_wine
|
||||
--
|
||||
2.20.1
|
||||
|
@@ -1,59 +0,0 @@
|
||||
From fd6e709fad9b70a8d19ed6521e3375658c2c951f Mon Sep 17 00:00:00 2001
|
||||
From: Esdras Tarsis <esdrastarsis@gmail.com>
|
||||
Date: Sat, 30 Mar 2019 18:59:05 -0300
|
||||
Subject: [PATCH] httpapi: Add CreateUrlGroup stub.
|
||||
|
||||
---
|
||||
dlls/httpapi/httpapi.spec | 1 +
|
||||
dlls/httpapi/httpapi_main.c | 12 ++++++++++++
|
||||
include/http.h | 1 +
|
||||
3 files changed, 14 insertions(+)
|
||||
|
||||
diff --git a/dlls/httpapi/httpapi.spec b/dlls/httpapi/httpapi.spec
|
||||
index 1d8fcd8..bcd09e7 100644
|
||||
--- a/dlls/httpapi/httpapi.spec
|
||||
+++ b/dlls/httpapi/httpapi.spec
|
||||
@@ -7,6 +7,7 @@
|
||||
@ stub HttpCreateFilter
|
||||
@ stdcall HttpCreateHttpHandle(ptr long)
|
||||
@ stdcall HttpCreateServerSession(long ptr long)
|
||||
+@ stdcall HttpCreateUrlGroup(int64 ptr long)
|
||||
@ stdcall HttpCloseServerSession(int64)
|
||||
@ stub HttpDeleteConfigGroup
|
||||
@ stdcall HttpDeleteServiceConfiguration(ptr long ptr long ptr)
|
||||
diff --git a/dlls/httpapi/httpapi_main.c b/dlls/httpapi/httpapi_main.c
|
||||
index 3ab0399..9280fc1 100644
|
||||
--- a/dlls/httpapi/httpapi_main.c
|
||||
+++ b/dlls/httpapi/httpapi_main.c
|
||||
@@ -201,3 +201,15 @@ ULONG WINAPI HttpCloseServerSession( HTTP_SERVER_SESSION_ID id )
|
||||
FIXME( "(%s): stub!\n", wine_dbgstr_longlong(id));
|
||||
return ERROR_INVALID_PARAMETER;
|
||||
}
|
||||
+
|
||||
+/***********************************************************************
|
||||
+ * HttpCreateUrlGroup (HTTPAPI.@)
|
||||
+ */
|
||||
+ULONG WINAPI HttpCreateUrlGroup( HTTP_SERVER_SESSION_ID id, HTTP_URL_GROUP_ID *urlgroupid, ULONG reserved )
|
||||
+{
|
||||
+ FIXME( "(%s, %p, %d): stub!\n", wine_dbgstr_longlong(id), urlgroupid, reserved );
|
||||
+
|
||||
+ *urlgroupid = 0xdeadbeef;
|
||||
+
|
||||
+ return NO_ERROR;
|
||||
+}
|
||||
\ No newline at end of file
|
||||
diff --git a/include/http.h b/include/http.h
|
||||
index 8f284a8..50a10f8 100644
|
||||
--- a/include/http.h
|
||||
+++ b/include/http.h
|
||||
@@ -59,6 +59,7 @@ ULONG WINAPI HttpTerminate(ULONG,PVOID);
|
||||
|
||||
ULONG WINAPI HttpAddUrl(HANDLE,PCWSTR,PVOID);
|
||||
ULONG WINAPI HttpCreateHttpHandle(PHANDLE,ULONG);
|
||||
+ULONG WINAPI HttpCreateUrlGroup(HTTP_SERVER_SESSION_ID,PHTTP_URL_GROUP_ID,ULONG);
|
||||
ULONG WINAPI HttpCreateServerSession(HTTPAPI_VERSION,PHTTP_SERVER_SESSION_ID,ULONG);
|
||||
ULONG WINAPI HttpCloseServerSession(HTTP_SERVER_SESSION_ID);
|
||||
ULONG WINAPI HttpDeleteServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,LPOVERLAPPED);
|
||||
--
|
||||
1.9.1
|
||||
|
@@ -1,57 +0,0 @@
|
||||
From 1b3f783460eb8aa93e6a8da583dfc8edd3d6de9e Mon Sep 17 00:00:00 2001
|
||||
From: Esdras Tarsis <esdrastarsis@gmail.com>
|
||||
Date: Sat, 30 Mar 2019 19:07:39 -0300
|
||||
Subject: [PATCH] httpapi: Add CloseUrlGroup stub.
|
||||
|
||||
---
|
||||
dlls/httpapi/httpapi.spec | 1 +
|
||||
dlls/httpapi/httpapi_main.c | 9 +++++++++
|
||||
include/http.h | 1 +
|
||||
3 files changed, 11 insertions(+)
|
||||
|
||||
diff --git a/dlls/httpapi/httpapi.spec b/dlls/httpapi/httpapi.spec
|
||||
index bcd09e7..b7d3705 100644
|
||||
--- a/dlls/httpapi/httpapi.spec
|
||||
+++ b/dlls/httpapi/httpapi.spec
|
||||
@@ -8,6 +8,7 @@
|
||||
@ stdcall HttpCreateHttpHandle(ptr long)
|
||||
@ stdcall HttpCreateServerSession(long ptr long)
|
||||
@ stdcall HttpCreateUrlGroup(int64 ptr long)
|
||||
+@ stdcall HttpCloseUrlGroup(int64)
|
||||
@ stdcall HttpCloseServerSession(int64)
|
||||
@ stub HttpDeleteConfigGroup
|
||||
@ stdcall HttpDeleteServiceConfiguration(ptr long ptr long ptr)
|
||||
diff --git a/dlls/httpapi/httpapi_main.c b/dlls/httpapi/httpapi_main.c
|
||||
index 9280fc1..eca3b00 100644
|
||||
--- a/dlls/httpapi/httpapi_main.c
|
||||
+++ b/dlls/httpapi/httpapi_main.c
|
||||
@@ -212,4 +212,13 @@ ULONG WINAPI HttpCreateUrlGroup( HTTP_SERVER_SESSION_ID id, HTTP_URL_GROUP_ID *u
|
||||
*urlgroupid = 0xdeadbeef;
|
||||
|
||||
return NO_ERROR;
|
||||
+}
|
||||
+
|
||||
+/***********************************************************************
|
||||
+ * HttpCloseUrlGroup (HTTPAPI.@)
|
||||
+ */
|
||||
+ULONG WINAPI HttpCloseUrlGroup( HTTP_URL_GROUP_ID urlgroupid )
|
||||
+{
|
||||
+ FIXME( "(%s): stub!\n", wine_dbgstr_longlong(urlgroupid));
|
||||
+ return NO_ERROR;
|
||||
}
|
||||
\ No newline at end of file
|
||||
diff --git a/include/http.h b/include/http.h
|
||||
index 50a10f8..aa490dc 100644
|
||||
--- a/include/http.h
|
||||
+++ b/include/http.h
|
||||
@@ -61,6 +61,7 @@ ULONG WINAPI HttpAddUrl(HANDLE,PCWSTR,PVOID);
|
||||
ULONG WINAPI HttpCreateHttpHandle(PHANDLE,ULONG);
|
||||
ULONG WINAPI HttpCreateUrlGroup(HTTP_SERVER_SESSION_ID,PHTTP_URL_GROUP_ID,ULONG);
|
||||
ULONG WINAPI HttpCreateServerSession(HTTPAPI_VERSION,PHTTP_SERVER_SESSION_ID,ULONG);
|
||||
+ULONG WINAPI HttpCloseUrlGroup(HTTP_URL_GROUP_ID);
|
||||
ULONG WINAPI HttpCloseServerSession(HTTP_SERVER_SESSION_ID);
|
||||
ULONG WINAPI HttpDeleteServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,LPOVERLAPPED);
|
||||
ULONG WINAPI HttpQueryServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,PVOID,ULONG,PULONG,LPOVERLAPPED);
|
||||
--
|
||||
1.9.1
|
||||
|
@@ -1,60 +0,0 @@
|
||||
From 13541d8ff0af57d8b3bc1dfbcb83bbd1020084f9 Mon Sep 17 00:00:00 2001
|
||||
From: Esdras Tarsis <esdrastarsis@gmail.com>
|
||||
Date: Sun, 31 Mar 2019 06:18:21 -0300
|
||||
Subject: [PATCH] httpapi: Add CreateRequestQueue stub.
|
||||
|
||||
---
|
||||
dlls/httpapi/httpapi.spec | 1 +
|
||||
dlls/httpapi/httpapi_main.c | 13 ++++++++++++-
|
||||
include/http.h | 1 +
|
||||
3 files changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/httpapi/httpapi.spec b/dlls/httpapi/httpapi.spec
|
||||
index b7d3705..235c4ac 100644
|
||||
--- a/dlls/httpapi/httpapi.spec
|
||||
+++ b/dlls/httpapi/httpapi.spec
|
||||
@@ -7,6 +7,7 @@
|
||||
@ stub HttpCreateFilter
|
||||
@ stdcall HttpCreateHttpHandle(ptr long)
|
||||
@ stdcall HttpCreateServerSession(long ptr long)
|
||||
+@ stdcall HttpCreateRequestQueue(long wstr ptr long ptr)
|
||||
@ stdcall HttpCreateUrlGroup(int64 ptr long)
|
||||
@ stdcall HttpCloseUrlGroup(int64)
|
||||
@ stdcall HttpCloseServerSession(int64)
|
||||
diff --git a/dlls/httpapi/httpapi_main.c b/dlls/httpapi/httpapi_main.c
|
||||
index eca3b00..7c83f81 100644
|
||||
--- a/dlls/httpapi/httpapi_main.c
|
||||
+++ b/dlls/httpapi/httpapi_main.c
|
||||
@@ -221,4 +221,15 @@ ULONG WINAPI HttpCloseUrlGroup( HTTP_URL_GROUP_ID urlgroupid )
|
||||
{
|
||||
FIXME( "(%s): stub!\n", wine_dbgstr_longlong(urlgroupid));
|
||||
return NO_ERROR;
|
||||
-}
|
||||
\ No newline at end of file
|
||||
+}
|
||||
+
|
||||
+/***********************************************************************
|
||||
+ * HttpCreateRequestQueue (HTTPAPI.@)
|
||||
+ */
|
||||
+ULONG WINAPI HttpCreateRequestQueue( HTTPAPI_VERSION version, PCWSTR name, PSECURITY_ATTRIBUTES security, ULONG flags, PHANDLE request )
|
||||
+{
|
||||
+ FIXME( "({%d,%d}, %s, %p, 0x%x, %p): stub!\n",version.HttpApiMajorVersion,version.HttpApiMinorVersion,debugstr_w(name),security,flags,request );
|
||||
+
|
||||
+ *request = (HANDLE)0xbeefdead;
|
||||
+ return NO_ERROR;
|
||||
+}
|
||||
diff --git a/include/http.h b/include/http.h
|
||||
index aa490dc..9ad7e10 100644
|
||||
--- a/include/http.h
|
||||
+++ b/include/http.h
|
||||
@@ -60,6 +60,7 @@ ULONG WINAPI HttpTerminate(ULONG,PVOID);
|
||||
ULONG WINAPI HttpAddUrl(HANDLE,PCWSTR,PVOID);
|
||||
ULONG WINAPI HttpCreateHttpHandle(PHANDLE,ULONG);
|
||||
ULONG WINAPI HttpCreateUrlGroup(HTTP_SERVER_SESSION_ID,PHTTP_URL_GROUP_ID,ULONG);
|
||||
+ULONG WINAPI HttpCreateRequestQueue(HTTPAPI_VERSION,PCWSTR,PSECURITY_ATTRIBUTES,ULONG,PHANDLE);
|
||||
ULONG WINAPI HttpCreateServerSession(HTTPAPI_VERSION,PHTTP_SERVER_SESSION_ID,ULONG);
|
||||
ULONG WINAPI HttpCloseUrlGroup(HTTP_URL_GROUP_ID);
|
||||
ULONG WINAPI HttpCloseServerSession(HTTP_SERVER_SESSION_ID);
|
||||
--
|
||||
1.9.1
|
||||
|
@@ -1,75 +0,0 @@
|
||||
From 017787e85014a96f76f0a2a02b577d489e35f08d Mon Sep 17 00:00:00 2001
|
||||
From: Esdras Tarsis <esdrastarsis@gmail.com>
|
||||
Date: Sun, 31 Mar 2019 07:17:26 -0300
|
||||
Subject: [PATCH] httpapi: Add SetUrlGroupProperty stub.
|
||||
|
||||
---
|
||||
dlls/httpapi/httpapi.spec | 1 +
|
||||
dlls/httpapi/httpapi_main.c | 10 ++++++++++
|
||||
include/http.h | 13 +++++++++++++
|
||||
3 files changed, 24 insertions(+)
|
||||
|
||||
diff --git a/dlls/httpapi/httpapi.spec b/dlls/httpapi/httpapi.spec
|
||||
index 235c4ac..c1d3b6e 100644
|
||||
--- a/dlls/httpapi/httpapi.spec
|
||||
+++ b/dlls/httpapi/httpapi.spec
|
||||
@@ -50,6 +50,7 @@
|
||||
@ stub HttpSetControlChannelInformation
|
||||
@ stub HttpSetServerContextInformation
|
||||
@ stdcall HttpSetServiceConfiguration(ptr long ptr long ptr)
|
||||
+@ stdcall HttpSetUrlGroupProperty(int64 long ptr long)
|
||||
@ stub HttpShutdownAppPool
|
||||
@ stub HttpShutdownFilter
|
||||
@ stdcall HttpTerminate(long ptr)
|
||||
diff --git a/dlls/httpapi/httpapi_main.c b/dlls/httpapi/httpapi_main.c
|
||||
index 7c83f81..3cb349f 100644
|
||||
--- a/dlls/httpapi/httpapi_main.c
|
||||
+++ b/dlls/httpapi/httpapi_main.c
|
||||
@@ -233,3 +233,13 @@ ULONG WINAPI HttpCreateRequestQueue( HTTPAPI_VERSION version, PCWSTR name, PSECU
|
||||
*request = (HANDLE)0xbeefdead;
|
||||
return NO_ERROR;
|
||||
}
|
||||
+
|
||||
+/***********************************************************************
|
||||
+ * HttpSetUrlGroupProperty (HTTPAPI.@)
|
||||
+ */
|
||||
+ULONG WINAPI HttpSetUrlGroupProperty( HTTP_URL_GROUP_ID urlgroupid, HTTP_SERVER_PROPERTY property, void *property_info, ULONG property_info_length )
|
||||
+{
|
||||
+ FIXME( "(%s, %d, %p, %d): stub!\n", wine_dbgstr_longlong(urlgroupid), property, property_info, property_info_length );
|
||||
+ return NO_ERROR;
|
||||
+}
|
||||
+
|
||||
diff --git a/include/http.h b/include/http.h
|
||||
index 9ad7e10..9ac7309 100644
|
||||
--- a/include/http.h
|
||||
+++ b/include/http.h
|
||||
@@ -50,6 +50,18 @@ typedef enum _HTTP_SERVICE_CONFIG_ID
|
||||
HttpServiceConfigMax
|
||||
} HTTP_SERVICE_CONFIG_ID, *PHTTP_SERVICE_CONFIG_ID;
|
||||
|
||||
+typedef enum _HTTP_SERVER_PROPERTY
|
||||
+{
|
||||
+ HttpServerAuthenticationProperty,
|
||||
+ HttpServerExtendedAuthenticationProperty,
|
||||
+ HttpServerQosProperty,
|
||||
+ HttpServerBindingProperty,
|
||||
+ HttpServerLoggingProperty,
|
||||
+ HttpServerStateProperty,
|
||||
+ HttpServerTimeoutsProperty,
|
||||
+ HttpServerChannelBindProperty
|
||||
+} HTTP_SERVER_PROPERTY, *PHTTP_SERVER_PROPERTY;
|
||||
+
|
||||
typedef ULONGLONG HTTP_OPAQUE_ID, *PHTTP_OPAQUE_ID;
|
||||
typedef HTTP_OPAQUE_ID HTTP_SERVER_SESSION_ID, *PHTTP_SERVER_SESSION_ID;
|
||||
typedef HTTP_OPAQUE_ID HTTP_URL_GROUP_ID, *PHTTP_URL_GROUP_ID;
|
||||
@@ -67,6 +79,7 @@ ULONG WINAPI HttpCloseServerSession(HTTP_SERVER_SESSION_ID);
|
||||
ULONG WINAPI HttpDeleteServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,LPOVERLAPPED);
|
||||
ULONG WINAPI HttpQueryServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,PVOID,ULONG,PULONG,LPOVERLAPPED);
|
||||
ULONG WINAPI HttpSetServiceConfiguration(HANDLE,HTTP_SERVICE_CONFIG_ID,PVOID,ULONG,LPOVERLAPPED);
|
||||
+ULONG WINAPI HttpSetUrlGroupProperty(HTTP_URL_GROUP_ID,HTTP_SERVER_PROPERTY,void *,ULONG);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
--
|
||||
1.9.1
|
||||
|
@@ -1,62 +0,0 @@
|
||||
From 6c61664a2177dcd7ed63d217e9ec6e807d998d3a Mon Sep 17 00:00:00 2001
|
||||
From: Esdras Tarsis <esdrastarsis@gmail.com>
|
||||
Date: Sun, 31 Mar 2019 07:32:57 -0300
|
||||
Subject: [PATCH] httpapi: Add AddUrlToUrlGroup stub.
|
||||
|
||||
---
|
||||
dlls/httpapi/httpapi.spec | 1 +
|
||||
dlls/httpapi/httpapi_main.c | 9 +++++++++
|
||||
include/http.h | 3 ++-
|
||||
3 files changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/httpapi/httpapi.spec b/dlls/httpapi/httpapi.spec
|
||||
index c1d3b6e..b337696 100644
|
||||
--- a/dlls/httpapi/httpapi.spec
|
||||
+++ b/dlls/httpapi/httpapi.spec
|
||||
@@ -1,6 +1,7 @@
|
||||
@ stub HttpAddFragmentToCache
|
||||
@ stdcall HttpAddUrl(ptr wstr ptr)
|
||||
@ stub HttpAddUrlToConfigGroup
|
||||
+@ stdcall HttpAddUrlToUrlGroup(int64 wstr int64 long)
|
||||
@ stub HttpCancelHttpRequest
|
||||
@ stub HttpCreateAppPool
|
||||
@ stub HttpCreateConfigGroup
|
||||
diff --git a/dlls/httpapi/httpapi_main.c b/dlls/httpapi/httpapi_main.c
|
||||
index 3cb349f..a844139 100644
|
||||
--- a/dlls/httpapi/httpapi_main.c
|
||||
+++ b/dlls/httpapi/httpapi_main.c
|
||||
@@ -243,3 +243,12 @@ ULONG WINAPI HttpSetUrlGroupProperty( HTTP_URL_GROUP_ID urlgroupid, HTTP_SERVER_
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
+/***********************************************************************
|
||||
+ * HttpAddUrlToUrlGroup (HTTPAPI.@)
|
||||
+ */
|
||||
+ULONG WINAPI HttpAddUrlToUrlGroup( HTTP_URL_GROUP_ID urlgroupid, PCWSTR name, HTTP_URL_CONTEXT urlcontext, ULONG reserved )
|
||||
+{
|
||||
+ FIXME( "(%s, %s, %s, %d): stub!\n", wine_dbgstr_longlong(urlgroupid), debugstr_w(name), wine_dbgstr_longlong(urlcontext), reserved );
|
||||
+ return NO_ERROR;
|
||||
+}
|
||||
+
|
||||
diff --git a/include/http.h b/include/http.h
|
||||
index 9ac7309..7d86b33 100644
|
||||
--- a/include/http.h
|
||||
+++ b/include/http.h
|
||||
@@ -64,12 +64,13 @@ typedef enum _HTTP_SERVER_PROPERTY
|
||||
|
||||
typedef ULONGLONG HTTP_OPAQUE_ID, *PHTTP_OPAQUE_ID;
|
||||
typedef HTTP_OPAQUE_ID HTTP_SERVER_SESSION_ID, *PHTTP_SERVER_SESSION_ID;
|
||||
-typedef HTTP_OPAQUE_ID HTTP_URL_GROUP_ID, *PHTTP_URL_GROUP_ID;
|
||||
+typedef HTTP_OPAQUE_ID HTTP_URL_GROUP_ID, *PHTTP_URL_GROUP_ID, HTTP_URL_CONTEXT, *PHTTP_URL_CONTEXT;
|
||||
|
||||
ULONG WINAPI HttpInitialize(HTTPAPI_VERSION,ULONG,PVOID);
|
||||
ULONG WINAPI HttpTerminate(ULONG,PVOID);
|
||||
|
||||
ULONG WINAPI HttpAddUrl(HANDLE,PCWSTR,PVOID);
|
||||
+ULONG WINAPI HttpAddUrlToUrlGroup(HTTP_URL_GROUP_ID,PCWSTR,HTTP_URL_CONTEXT,ULONG);
|
||||
ULONG WINAPI HttpCreateHttpHandle(PHANDLE,ULONG);
|
||||
ULONG WINAPI HttpCreateUrlGroup(HTTP_SERVER_SESSION_ID,PHTTP_URL_GROUP_ID,ULONG);
|
||||
ULONG WINAPI HttpCreateRequestQueue(HTTPAPI_VERSION,PCWSTR,PSECURITY_ATTRIBUTES,ULONG,PHANDLE);
|
||||
--
|
||||
1.9.1
|
||||
|
@@ -1,4 +0,0 @@
|
||||
# This is to see, if the return value of HttpCreateServerSession is causing
|
||||
# PUBG Lite to fail on Launch. The end solution maybe to implement a working
|
||||
# httpapi DLL.
|
||||
Fixes: [46549] httpapi: Fake success from HttpCreateServerSession
|
@@ -32,7 +32,7 @@ index 992437047..e10bfd95a 100644
|
||||
+
|
||||
+ TRACE("(%d)\n", newDEP);
|
||||
+
|
||||
+ if (is_wow64 || system_DEP_policy != OptIn && system_DEP_policy != OptOut )
|
||||
+ if (is_wow64 || (system_DEP_policy != OptIn && system_DEP_policy != OptOut) )
|
||||
+ {
|
||||
+ SetLastError(ERROR_ACCESS_DENIED);
|
||||
+ return FALSE;
|
||||
|
@@ -1,311 +0,0 @@
|
||||
From cefe28f14b32726d67fcc17e0c5195c1f8d3f61e Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <zfigura@codeweavers.com>
|
||||
Date: Mon, 8 Jul 2019 11:32:27 -0500
|
||||
Subject: [PATCH] user32: Also scan for mouse devices in
|
||||
GetRawInputDeviceList().
|
||||
|
||||
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
|
||||
---
|
||||
dlls/user32/rawinput.c | 124 ++++++++++++++++++++++----------------
|
||||
dlls/user32/tests/input.c | 2 +-
|
||||
2 files changed, 74 insertions(+), 52 deletions(-)
|
||||
|
||||
diff --git a/dlls/user32/rawinput.c b/dlls/user32/rawinput.c
|
||||
index 49cf9f73a0..e83da29009 100644
|
||||
--- a/dlls/user32/rawinput.c
|
||||
+++ b/dlls/user32/rawinput.c
|
||||
@@ -36,27 +36,30 @@
|
||||
|
||||
#include "user_private.h"
|
||||
|
||||
+#include "initguid.h"
|
||||
+#include "ntddmou.h"
|
||||
+
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(rawinput);
|
||||
|
||||
-struct hid_device
|
||||
+struct device
|
||||
{
|
||||
WCHAR *path;
|
||||
HANDLE file;
|
||||
- RID_DEVICE_INFO_HID info;
|
||||
+ RID_DEVICE_INFO info;
|
||||
PHIDP_PREPARSED_DATA data;
|
||||
};
|
||||
|
||||
-static struct hid_device *hid_devices;
|
||||
-static unsigned int hid_devices_count, hid_devices_max;
|
||||
+static struct device *rawinput_devices;
|
||||
+static unsigned int rawinput_devices_count, rawinput_devices_max;
|
||||
|
||||
-static CRITICAL_SECTION hid_devices_cs;
|
||||
-static CRITICAL_SECTION_DEBUG hid_devices_cs_debug =
|
||||
+static CRITICAL_SECTION rawinput_devices_cs;
|
||||
+static CRITICAL_SECTION_DEBUG rawinput_devices_cs_debug =
|
||||
{
|
||||
- 0, 0, &hid_devices_cs,
|
||||
- { &hid_devices_cs_debug.ProcessLocksList, &hid_devices_cs_debug.ProcessLocksList },
|
||||
- 0, 0, { (DWORD_PTR)(__FILE__ ": hid_devices_cs") }
|
||||
+ 0, 0, &rawinput_devices_cs,
|
||||
+ { &rawinput_devices_cs_debug.ProcessLocksList, &rawinput_devices_cs_debug.ProcessLocksList },
|
||||
+ 0, 0, { (DWORD_PTR)(__FILE__ ": rawinput_devices_cs") }
|
||||
};
|
||||
-static CRITICAL_SECTION hid_devices_cs = { &hid_devices_cs_debug, -1, 0, 0, 0, 0 };
|
||||
+static CRITICAL_SECTION rawinput_devices_cs = { &rawinput_devices_cs_debug, -1, 0, 0, 0, 0 };
|
||||
|
||||
static BOOL array_reserve(void **elements, unsigned int *capacity, unsigned int count, unsigned int size)
|
||||
{
|
||||
@@ -85,10 +88,10 @@ static BOOL array_reserve(void **elements, unsigned int *capacity, unsigned int
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
-static struct hid_device *add_device(HDEVINFO set, SP_DEVICE_INTERFACE_DATA *iface)
|
||||
+static struct device *add_device(HDEVINFO set, SP_DEVICE_INTERFACE_DATA *iface)
|
||||
{
|
||||
SP_DEVICE_INTERFACE_DETAIL_DATA_W *detail;
|
||||
- struct hid_device *device;
|
||||
+ struct device *device;
|
||||
HANDLE file;
|
||||
WCHAR *path;
|
||||
DWORD size;
|
||||
@@ -126,7 +129,8 @@ static struct hid_device *add_device(HDEVINFO set, SP_DEVICE_INTERFACE_DATA *ifa
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- if (!array_reserve((void **)&hid_devices, &hid_devices_max, hid_devices_count + 1, sizeof(*hid_devices)))
|
||||
+ if (!array_reserve((void **)&rawinput_devices, &rawinput_devices_max,
|
||||
+ rawinput_devices_count + 1, sizeof(*rawinput_devices)))
|
||||
{
|
||||
ERR("Failed to allocate memory.\n");
|
||||
CloseHandle(file);
|
||||
@@ -134,19 +138,20 @@ static struct hid_device *add_device(HDEVINFO set, SP_DEVICE_INTERFACE_DATA *ifa
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- device = &hid_devices[hid_devices_count++];
|
||||
+ device = &rawinput_devices[rawinput_devices_count++];
|
||||
device->path = path;
|
||||
device->file = file;
|
||||
+ device->info.cbSize = sizeof(RID_DEVICE_INFO);
|
||||
|
||||
return device;
|
||||
}
|
||||
|
||||
-static void find_hid_devices(void)
|
||||
+static void find_devices(void)
|
||||
{
|
||||
static ULONGLONG last_check;
|
||||
|
||||
SP_DEVICE_INTERFACE_DATA iface = { sizeof(iface) };
|
||||
- struct hid_device *device;
|
||||
+ struct device *device;
|
||||
HIDD_ATTRIBUTES attr;
|
||||
HIDP_CAPS caps;
|
||||
GUID hid_guid;
|
||||
@@ -159,18 +164,18 @@ static void find_hid_devices(void)
|
||||
|
||||
HidD_GetHidGuid(&hid_guid);
|
||||
|
||||
- set = SetupDiGetClassDevsW(&hid_guid, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT);
|
||||
-
|
||||
- EnterCriticalSection(&hid_devices_cs);
|
||||
+ EnterCriticalSection(&rawinput_devices_cs);
|
||||
|
||||
/* destroy previous list */
|
||||
- for (idx = 0; idx < hid_devices_count; ++idx)
|
||||
+ for (idx = 0; idx < rawinput_devices_count; ++idx)
|
||||
{
|
||||
- CloseHandle(hid_devices[idx].file);
|
||||
- heap_free(hid_devices[idx].path);
|
||||
+ CloseHandle(rawinput_devices[idx].file);
|
||||
+ heap_free(rawinput_devices[idx].path);
|
||||
}
|
||||
+ rawinput_devices_count = 0;
|
||||
+
|
||||
+ set = SetupDiGetClassDevsW(&hid_guid, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT);
|
||||
|
||||
- hid_devices_count = 0;
|
||||
for (idx = 0; SetupDiEnumDeviceInterfaces(set, NULL, &hid_guid, idx, &iface); ++idx)
|
||||
{
|
||||
if (!(device = add_device(set, &iface)))
|
||||
@@ -179,9 +184,11 @@ static void find_hid_devices(void)
|
||||
attr.Size = sizeof(HIDD_ATTRIBUTES);
|
||||
if (!HidD_GetAttributes(device->file, &attr))
|
||||
WARN("Failed to get attributes.\n");
|
||||
- device->info.dwVendorId = attr.VendorID;
|
||||
- device->info.dwProductId = attr.ProductID;
|
||||
- device->info.dwVersionNumber = attr.VersionNumber;
|
||||
+
|
||||
+ device->info.dwType = RIM_TYPEHID;
|
||||
+ device->info.u.hid.dwVendorId = attr.VendorID;
|
||||
+ device->info.u.hid.dwProductId = attr.ProductID;
|
||||
+ device->info.u.hid.dwVersionNumber = attr.VersionNumber;
|
||||
|
||||
if (!HidD_GetPreparsedData(device->file, &device->data))
|
||||
WARN("Failed to get preparsed data.\n");
|
||||
@@ -189,12 +196,28 @@ static void find_hid_devices(void)
|
||||
if (!HidP_GetCaps(device->data, &caps))
|
||||
WARN("Failed to get caps.\n");
|
||||
|
||||
- device->info.usUsagePage = caps.UsagePage;
|
||||
- device->info.usUsage = caps.Usage;
|
||||
+ device->info.u.hid.usUsagePage = caps.UsagePage;
|
||||
+ device->info.u.hid.usUsage = caps.Usage;
|
||||
}
|
||||
|
||||
- LeaveCriticalSection(&hid_devices_cs);
|
||||
SetupDiDestroyDeviceInfoList(set);
|
||||
+
|
||||
+ set = SetupDiGetClassDevsW(&GUID_DEVINTERFACE_MOUSE, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT);
|
||||
+
|
||||
+ for (idx = 0; SetupDiEnumDeviceInterfaces(set, NULL, &GUID_DEVINTERFACE_MOUSE, idx, &iface); ++idx)
|
||||
+ {
|
||||
+ static const RID_DEVICE_INFO_MOUSE mouse_info = {1, 5, 0, FALSE};
|
||||
+
|
||||
+ if (!(device = add_device(set, &iface)))
|
||||
+ continue;
|
||||
+
|
||||
+ device->info.dwType = RIM_TYPEMOUSE;
|
||||
+ device->info.u.mouse = mouse_info;
|
||||
+ }
|
||||
+
|
||||
+ SetupDiDestroyDeviceInfoList(set);
|
||||
+
|
||||
+ LeaveCriticalSection(&rawinput_devices_cs);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
@@ -218,18 +241,18 @@ UINT WINAPI GetRawInputDeviceList(RAWINPUTDEVICELIST *devices, UINT *device_coun
|
||||
return ~0U;
|
||||
}
|
||||
|
||||
- find_hid_devices();
|
||||
+ find_devices();
|
||||
|
||||
if (!devices)
|
||||
{
|
||||
- *device_count = 2 + hid_devices_count;
|
||||
+ *device_count = 2 + rawinput_devices_count;
|
||||
return 0;
|
||||
}
|
||||
|
||||
- if (*device_count < 2 + hid_devices_count)
|
||||
+ if (*device_count < 2 + rawinput_devices_count)
|
||||
{
|
||||
SetLastError(ERROR_INSUFFICIENT_BUFFER);
|
||||
- *device_count = 2 + hid_devices_count;
|
||||
+ *device_count = 2 + rawinput_devices_count;
|
||||
return ~0U;
|
||||
}
|
||||
|
||||
@@ -238,13 +261,13 @@ UINT WINAPI GetRawInputDeviceList(RAWINPUTDEVICELIST *devices, UINT *device_coun
|
||||
devices[1].hDevice = WINE_KEYBOARD_HANDLE;
|
||||
devices[1].dwType = RIM_TYPEKEYBOARD;
|
||||
|
||||
- for (i = 0; i < hid_devices_count; ++i)
|
||||
+ for (i = 0; i < rawinput_devices_count; ++i)
|
||||
{
|
||||
- devices[2 + i].hDevice = &hid_devices[i];
|
||||
- devices[2 + i].dwType = RIM_TYPEHID;
|
||||
+ devices[2 + i].hDevice = &rawinput_devices[i];
|
||||
+ devices[2 + i].dwType = rawinput_devices[i].info.dwType;
|
||||
}
|
||||
|
||||
- return 2 + hid_devices_count;
|
||||
+ return 2 + rawinput_devices_count;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
@@ -386,41 +409,41 @@ UINT WINAPI GetRawInputDeviceInfoA(HANDLE device, UINT command, void *data, UINT
|
||||
/***********************************************************************
|
||||
* GetRawInputDeviceInfoW (USER32.@)
|
||||
*/
|
||||
-UINT WINAPI GetRawInputDeviceInfoW(HANDLE device, UINT command, void *data, UINT *data_size)
|
||||
+UINT WINAPI GetRawInputDeviceInfoW(HANDLE handle, UINT command, void *data, UINT *data_size)
|
||||
{
|
||||
/* FIXME: Most of this is made up. */
|
||||
static const WCHAR keyboard_name[] = {'\\','\\','?','\\','W','I','N','E','_','K','E','Y','B','O','A','R','D',0};
|
||||
static const WCHAR mouse_name[] = {'\\','\\','?','\\','W','I','N','E','_','M','O','U','S','E',0};
|
||||
static const RID_DEVICE_INFO_KEYBOARD keyboard_info = {0, 0, 1, 12, 3, 101};
|
||||
static const RID_DEVICE_INFO_MOUSE mouse_info = {1, 5, 0, FALSE};
|
||||
- struct hid_device *hid_device;
|
||||
const WCHAR *name = NULL;
|
||||
RID_DEVICE_INFO *info;
|
||||
+ struct device *device;
|
||||
UINT s;
|
||||
|
||||
- TRACE("device %p, command %#x, data %p, data_size %p.\n",
|
||||
- device, command, data, data_size);
|
||||
+ TRACE("handle %p, command %#x, data %p, data_size %p.\n",
|
||||
+ handle, command, data, data_size);
|
||||
|
||||
if (!data_size) return ~0U;
|
||||
|
||||
switch (command)
|
||||
{
|
||||
case RIDI_DEVICENAME:
|
||||
- if (device == WINE_MOUSE_HANDLE)
|
||||
+ if (handle == WINE_MOUSE_HANDLE)
|
||||
{
|
||||
s = ARRAY_SIZE(mouse_name);
|
||||
name = mouse_name;
|
||||
}
|
||||
- else if (device == WINE_KEYBOARD_HANDLE)
|
||||
+ else if (handle == WINE_KEYBOARD_HANDLE)
|
||||
{
|
||||
s = ARRAY_SIZE(keyboard_name);
|
||||
name = keyboard_name;
|
||||
}
|
||||
else
|
||||
{
|
||||
- hid_device = device;
|
||||
- s = strlenW(hid_device->path) + 1;
|
||||
- name = hid_device->path;
|
||||
+ device = handle;
|
||||
+ s = strlenW(device->path) + 1;
|
||||
+ name = device->path;
|
||||
}
|
||||
break;
|
||||
case RIDI_DEVICEINFO:
|
||||
@@ -450,21 +473,20 @@ UINT WINAPI GetRawInputDeviceInfoW(HANDLE device, UINT command, void *data, UINT
|
||||
|
||||
info = data;
|
||||
info->cbSize = sizeof(*info);
|
||||
- if (device == WINE_MOUSE_HANDLE)
|
||||
+ if (handle == WINE_MOUSE_HANDLE)
|
||||
{
|
||||
info->dwType = RIM_TYPEMOUSE;
|
||||
info->u.mouse = mouse_info;
|
||||
}
|
||||
- else if (device == WINE_KEYBOARD_HANDLE)
|
||||
+ else if (handle == WINE_KEYBOARD_HANDLE)
|
||||
{
|
||||
info->dwType = RIM_TYPEKEYBOARD;
|
||||
info->u.keyboard = keyboard_info;
|
||||
}
|
||||
else
|
||||
{
|
||||
- hid_device = device;
|
||||
- info->dwType = RIM_TYPEHID;
|
||||
- info->u.hid = hid_device->info;
|
||||
+ device = handle;
|
||||
+ *info = device->info;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c
|
||||
index d0dc4a8bcf..78f46bb6ba 100644
|
||||
--- a/dlls/user32/tests/input.c
|
||||
+++ b/dlls/user32/tests/input.c
|
||||
@@ -1670,7 +1670,7 @@ static void test_GetRawInputDeviceList(void)
|
||||
* understand that; so use the \\?\ prefix instead */
|
||||
name[1] = '\\';
|
||||
file = CreateFileW(name, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
|
||||
- todo_wine_if(info.dwType != RIM_TYPEHID)
|
||||
+ todo_wine_if(i == 0 || i == 1)
|
||||
ok(file != INVALID_HANDLE_VALUE, "Failed to open %s, error %u\n", wine_dbgstr_w(name), GetLastError());
|
||||
CloseHandle(file);
|
||||
}
|
||||
--
|
||||
2.17.1
|
||||
|
@@ -1,157 +0,0 @@
|
||||
From a4fda32d2dc0115017f3fa87413d84a08d193328 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Tue, 9 Jul 2019 11:12:07 +0200
|
||||
Subject: [PATCH] winebus.sys: Report the native product string for some Xbox
|
||||
gamepads
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Some games are checking the hid product string of connected gamepads in
|
||||
order to decide whether or not to activate rumble.
|
||||
|
||||
Wine usually delegates these queries to the backend driver, but they
|
||||
don't always report the same product strings as on Windows. This will
|
||||
allow to override backend strings with the actual strings as reported
|
||||
by native drivers.
|
||||
|
||||
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
|
||||
---
|
||||
dlls/winebus.sys/main.c | 98 ++++++++++++++++++++++++++++++++++-------
|
||||
1 file changed, 81 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/dlls/winebus.sys/main.c b/dlls/winebus.sys/main.c
|
||||
index 26200bde3e..12ff0b3e15 100644
|
||||
--- a/dlls/winebus.sys/main.c
|
||||
+++ b/dlls/winebus.sys/main.c
|
||||
@@ -49,22 +49,39 @@ WINE_DECLARE_DEBUG_CHANNEL(hid_report);
|
||||
|
||||
static const WCHAR backslashW[] = {'\\',0};
|
||||
|
||||
+struct product_desc
|
||||
+{
|
||||
+ WORD vid;
|
||||
+ WORD pid;
|
||||
+ const WCHAR* manufacturer;
|
||||
+ const WCHAR* product;
|
||||
+ const WCHAR* serialnumber;
|
||||
+};
|
||||
+
|
||||
#define VID_MICROSOFT 0x045e
|
||||
|
||||
-static const WORD PID_XBOX_CONTROLLERS[] = {
|
||||
- 0x0202, /* Xbox Controller */
|
||||
- 0x0285, /* Xbox Controller S */
|
||||
- 0x0289, /* Xbox Controller S */
|
||||
- 0x028e, /* Xbox360 Controller */
|
||||
- 0x028f, /* Xbox360 Wireless Controller */
|
||||
- 0x02d1, /* Xbox One Controller */
|
||||
- 0x02dd, /* Xbox One Controller (Covert Forces/Firmware 2015) */
|
||||
- 0x02e0, /* Xbox One X Controller */
|
||||
- 0x02e3, /* Xbox One Elite Controller */
|
||||
- 0x02e6, /* Wireless XBox Controller Dongle */
|
||||
- 0x02ea, /* Xbox One S Controller */
|
||||
- 0x02fd, /* Xbox One S Controller (Firmware 2017) */
|
||||
- 0x0719, /* Xbox 360 Wireless Adapter */
|
||||
+static const WCHAR xbox360_product_string[] = {
|
||||
+ 'C','o','n','t','r','o','l','l','e','r',' ','(','X','B','O','X',' ','3','6','0',' ','F','o','r',' ','W','i','n','d','o','w','s',')',0
|
||||
+};
|
||||
+
|
||||
+static const WCHAR xboxone_product_string[] = {
|
||||
+ 'C','o','n','t','r','o','l','l','e','r',' ','(','X','B','O','X',' ','O','n','e',' ','F','o','r',' ','W','i','n','d','o','w','s',')',0
|
||||
+};
|
||||
+
|
||||
+static const struct product_desc XBOX_CONTROLLERS[] = {
|
||||
+ {VID_MICROSOFT, 0x0202, NULL, NULL, NULL}, /* Xbox Controller */
|
||||
+ {VID_MICROSOFT, 0x0285, NULL, NULL, NULL}, /* Xbox Controller S */
|
||||
+ {VID_MICROSOFT, 0x0289, NULL, NULL, NULL}, /* Xbox Controller S */
|
||||
+ {VID_MICROSOFT, 0x028e, NULL, xbox360_product_string, NULL}, /* Xbox360 Controller */
|
||||
+ {VID_MICROSOFT, 0x028f, NULL, xbox360_product_string, NULL}, /* Xbox360 Wireless Controller */
|
||||
+ {VID_MICROSOFT, 0x02d1, NULL, xboxone_product_string, NULL}, /* Xbox One Controller */
|
||||
+ {VID_MICROSOFT, 0x02dd, NULL, xboxone_product_string, NULL}, /* Xbox One Controller (Covert Forces/Firmware 2015) */
|
||||
+ {VID_MICROSOFT, 0x02e0, NULL, NULL, NULL}, /* Xbox One X Controller */
|
||||
+ {VID_MICROSOFT, 0x02e3, NULL, xboxone_product_string, NULL}, /* Xbox One Elite Controller */
|
||||
+ {VID_MICROSOFT, 0x02e6, NULL, NULL, NULL}, /* Wireless XBox Controller Dongle */
|
||||
+ {VID_MICROSOFT, 0x02ea, NULL, xboxone_product_string, NULL}, /* Xbox One S Controller */
|
||||
+ {VID_MICROSOFT, 0x02fd, NULL, xboxone_product_string, NULL}, /* Xbox One S Controller (Firmware 2017) */
|
||||
+ {VID_MICROSOFT, 0x0719, NULL, xbox360_product_string, NULL}, /* Xbox 360 Wireless Adapter */
|
||||
};
|
||||
|
||||
static DRIVER_OBJECT *driver_obj;
|
||||
@@ -565,6 +582,51 @@ static NTSTATUS deliver_last_report(struct device_extension *ext, DWORD buffer_l
|
||||
}
|
||||
}
|
||||
|
||||
+static NTSTATUS hid_get_native_string(DEVICE_OBJECT *device, DWORD index, WCHAR *buffer, DWORD length)
|
||||
+{
|
||||
+ struct device_extension *ext = (struct device_extension *)device->DeviceExtension;
|
||||
+ int i;
|
||||
+
|
||||
+ if (ext->vid == VID_MICROSOFT)
|
||||
+ {
|
||||
+ for (i = 0; i < ARRAY_SIZE(XBOX_CONTROLLERS); i++)
|
||||
+ {
|
||||
+ if (ext->pid == XBOX_CONTROLLERS[i].pid)
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (i >= ARRAY_SIZE(XBOX_CONTROLLERS))
|
||||
+ return STATUS_UNSUCCESSFUL;
|
||||
+
|
||||
+ switch (index)
|
||||
+ {
|
||||
+ case HID_STRING_ID_IPRODUCT:
|
||||
+ if (XBOX_CONTROLLERS[i].product)
|
||||
+ {
|
||||
+ strcpyW(buffer, XBOX_CONTROLLERS[i].product);
|
||||
+ return STATUS_SUCCESS;
|
||||
+ }
|
||||
+ break;
|
||||
+ case HID_STRING_ID_IMANUFACTURER:
|
||||
+ if (XBOX_CONTROLLERS[i].manufacturer)
|
||||
+ {
|
||||
+ strcpyW(buffer, XBOX_CONTROLLERS[i].manufacturer);
|
||||
+ return STATUS_SUCCESS;
|
||||
+ }
|
||||
+ break;
|
||||
+ case HID_STRING_ID_ISERIALNUMBER:
|
||||
+ if (XBOX_CONTROLLERS[i].serialnumber)
|
||||
+ {
|
||||
+ strcpyW(buffer, XBOX_CONTROLLERS[i].serialnumber);
|
||||
+ return STATUS_SUCCESS;
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return STATUS_UNSUCCESSFUL;
|
||||
+}
|
||||
+
|
||||
static NTSTATUS WINAPI hid_internal_dispatch(DEVICE_OBJECT *device, IRP *irp)
|
||||
{
|
||||
NTSTATUS status = irp->IoStatus.u.Status;
|
||||
@@ -650,7 +712,9 @@ static NTSTATUS WINAPI hid_internal_dispatch(DEVICE_OBJECT *device, IRP *irp)
|
||||
DWORD index = (ULONG_PTR)irpsp->Parameters.DeviceIoControl.Type3InputBuffer;
|
||||
TRACE("IOCTL_HID_GET_STRING[%08x]\n", index);
|
||||
|
||||
- irp->IoStatus.u.Status = status = ext->vtbl->get_string(device, index, (WCHAR *)irp->UserBuffer, length);
|
||||
+ irp->IoStatus.u.Status = status = hid_get_native_string(device, index, (WCHAR *)irp->UserBuffer, length);
|
||||
+ if (status != STATUS_SUCCESS)
|
||||
+ irp->IoStatus.u.Status = status = ext->vtbl->get_string(device, index, (WCHAR *)irp->UserBuffer, length);
|
||||
if (status == STATUS_SUCCESS)
|
||||
irp->IoStatus.Information = (strlenW((WCHAR *)irp->UserBuffer) + 1) * sizeof(WCHAR);
|
||||
break;
|
||||
@@ -815,8 +879,8 @@ BOOL is_xbox_gamepad(WORD vid, WORD pid)
|
||||
if (vid != VID_MICROSOFT)
|
||||
return FALSE;
|
||||
|
||||
- for (i = 0; i < ARRAY_SIZE(PID_XBOX_CONTROLLERS); i++)
|
||||
- if (pid == PID_XBOX_CONTROLLERS[i]) return TRUE;
|
||||
+ for (i = 0; i < ARRAY_SIZE(XBOX_CONTROLLERS); i++)
|
||||
+ if (pid == XBOX_CONTROLLERS[i].pid) return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
--
|
||||
2.17.1
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user