[PATCH 3/4] hidclass.sys: Always report one link collection.

Rémi Bernon rbernon at codeweavers.com
Fri Feb 7 12:25:32 CST 2020


There should always be the top level collection, and some games expect
that or crash.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 dlls/hid/hidp.c                | 2 ++
 dlls/hid/tests/device.c        | 1 -
 dlls/hidclass.sys/descriptor.c | 1 +
 3 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/dlls/hid/hidp.c b/dlls/hid/hidp.c
index 5f18f57dd93..9aef7711d0b 100644
--- a/dlls/hid/hidp.c
+++ b/dlls/hid/hidp.c
@@ -933,5 +933,7 @@ NTSTATUS WINAPI HidP_GetLinkCollectionNodes(HIDP_LINK_COLLECTION_NODE *LinkColle
 {
     TRACE("stub (%p, %p, %p)\n", LinkCollectionNode, LinkCollectionNodeLength, PreparsedData);
 
+    *LinkCollectionNodeLength = 0;
+
     return STATUS_NOT_IMPLEMENTED;
 }
diff --git a/dlls/hid/tests/device.c b/dlls/hid/tests/device.c
index ce90f18f0cd..cdc1d94db1a 100644
--- a/dlls/hid/tests/device.c
+++ b/dlls/hid/tests/device.c
@@ -233,7 +233,6 @@ static void process_data(HIDP_CAPS Caps, PHIDP_PREPARSED_DATA ppd, CHAR *data, D
         HeapFree(GetProcessHeap(), 0, values);
     }
 
-    todo_wine
     ok(Caps.NumberLinkCollectionNodes > 0, "Expected at least one link collection\n");
     if (Caps.NumberLinkCollectionNodes)
     {
diff --git a/dlls/hidclass.sys/descriptor.c b/dlls/hidclass.sys/descriptor.c
index af1679d23b0..09455fb05b8 100644
--- a/dlls/hidclass.sys/descriptor.c
+++ b/dlls/hidclass.sys/descriptor.c
@@ -911,6 +911,7 @@ static WINE_HIDP_PREPARSED_DATA* build_PreparseData(struct collection *base_coll
     data->dwSize = size;
     data->caps.Usage = base_collection->caps.u.NotRange.Usage;
     data->caps.UsagePage = base_collection->caps.UsagePage;
+    data->caps.NumberLinkCollectionNodes = 1;
     data->elementOffset = element_off;
 
     preparse_collection(base_collection, data, &ctx);
-- 
2.25.0




More information about the wine-devel mailing list