diff --git a/dlls/hidclass.sys/device.c b/dlls/hidclass.sys/device.c index da1814587c7..73a8428ad22 100644 --- a/dlls/hidclass.sys/device.c +++ b/dlls/hidclass.sys/device.c @@ -560,11 +560,13 @@ NTSTATUS WINAPI pdo_ioctl(DEVICE_OBJECT *device, IRP *irp) { if (irpsp->Parameters.DeviceIoControl.OutputBufferLength < sizeof(ULONG)) { + irp->IoStatus.Information = 0; irp->IoStatus.Status = rc = STATUS_BUFFER_TOO_SMALL; } else { *(ULONG *)irp->AssociatedIrp.SystemBuffer = RingBuffer_GetSize(ext->u.pdo.ring_buffer); + irp->IoStatus.Information = sizeof(ULONG); rc = irp->IoStatus.Status = STATUS_SUCCESS; } break; diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c index a37697f4a69..8eaf8ee4888 100644 --- a/dlls/ntoskrnl.exe/tests/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c @@ -2750,7 +2750,7 @@ static void test_hid_device(DWORD report_id, DWORD polled) SetLastError(0xdeadbeef); ret = HidD_GetNumInputBuffers(file, &count); ok(ret, "HidD_GetNumInputBuffers failed last error %u\n", GetLastError()); - todo_wine ok(count == 32, "HidD_GetNumInputBuffers returned %u\n", count); + ok(count == 32, "HidD_GetNumInputBuffers returned %u\n", count); SetLastError(0xdeadbeef); ret = HidD_SetNumInputBuffers(file, 1); @@ -2769,7 +2769,7 @@ static void test_hid_device(DWORD report_id, DWORD polled) SetLastError(0xdeadbeef); ret = HidD_GetNumInputBuffers(file, &count); ok(ret, "HidD_GetNumInputBuffers failed last error %u\n", GetLastError()); - todo_wine ok(count == 16, "HidD_GetNumInputBuffers returned %u\n", count); + ok(count == 16, "HidD_GetNumInputBuffers returned %u\n", count); async_file = CreateFileA(iface_detail->DevicePath, FILE_READ_ACCESS | FILE_WRITE_ACCESS, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, @@ -2790,7 +2790,7 @@ static void test_hid_device(DWORD report_id, DWORD polled) SetLastError(0xdeadbeef); ret = HidD_GetNumInputBuffers(async_file, &count); ok(ret, "HidD_GetNumInputBuffers failed last error %u\n", GetLastError()); - todo_wine ok(count == 2, "HidD_GetNumInputBuffers returned %u\n", count); + ok(count == 2, "HidD_GetNumInputBuffers returned %u\n", count); count = 0xdeadbeef; SetLastError(0xdeadbeef); ret = HidD_GetNumInputBuffers(file, &count);