diff --git a/reactos/drivers/hid/kbdhid/kbdhid.c b/reactos/drivers/hid/kbdhid/kbdhid.c index b0dd907c46d..017ed532ffc 100644 --- a/reactos/drivers/hid/kbdhid/kbdhid.c +++ b/reactos/drivers/hid/kbdhid/kbdhid.c @@ -729,6 +729,7 @@ KbdHid_StartDevice( ExFreePoolWithTag(PreparsedData, KBDHID_TAG); return STATUS_INSUFFICIENT_RESOURCES; } + DeviceExtension->UsageListBuffer = Buffer; /* init usage lists */ RtlZeroMemory(Buffer, sizeof(USAGE_AND_PAGE) * 4 * Buttons); @@ -788,9 +789,10 @@ KbdHid_FreeResources( DeviceExtension->PreparsedData = NULL; } - if (DeviceExtension->CurrentUsageList) + if (DeviceExtension->UsageListBuffer) { - ExFreePoolWithTag(DeviceExtension->CurrentUsageList, KBDHID_TAG); + ExFreePoolWithTag(DeviceExtension->UsageListBuffer, KBDHID_TAG); + DeviceExtension->UsageListBuffer = NULL; DeviceExtension->CurrentUsageList = NULL; DeviceExtension->PreviousUsageList = NULL; DeviceExtension->MakeUsageList = NULL; diff --git a/reactos/drivers/hid/kbdhid/kbdhid.h b/reactos/drivers/hid/kbdhid/kbdhid.h index 613bbef77f3..6b4eb3b6730 100644 --- a/reactos/drivers/hid/kbdhid/kbdhid.h +++ b/reactos/drivers/hid/kbdhid/kbdhid.h @@ -40,6 +40,11 @@ typedef struct // PVOID ClassService; + // + // buffer for the four usage lists below + // + PVOID UsageListBuffer; + // // usage list length // diff --git a/reactos/drivers/hid/mouhid/mouhid.c b/reactos/drivers/hid/mouhid/mouhid.c index 78038b16b44..afdf7e2296a 100644 --- a/reactos/drivers/hid/mouhid/mouhid.c +++ b/reactos/drivers/hid/mouhid/mouhid.c @@ -720,7 +720,7 @@ MouHid_StartDevice( ULONG ValueCapsLength; HIDP_VALUE_CAPS ValueCaps; PMOUHID_DEVICE_EXTENSION DeviceExtension; - PUSHORT Buffer; + PUSAGE Buffer; /* get device extension */ DeviceExtension = DeviceObject->DeviceExtension; @@ -816,6 +816,7 @@ MouHid_StartDevice( ExFreePoolWithTag(PreparsedData, MOUHID_TAG); return STATUS_INSUFFICIENT_RESOURCES; } + DeviceExtension->UsageListBuffer = Buffer; /* init usage lists */ RtlZeroMemory(Buffer, sizeof(USAGE) * 4 * Buttons); @@ -919,9 +920,10 @@ MouHid_FreeResources( DeviceExtension->PreparsedData = NULL; } - if (DeviceExtension->CurrentUsageList) + if (DeviceExtension->UsageListBuffer) { - ExFreePoolWithTag(DeviceExtension->CurrentUsageList, MOUHID_TAG); + ExFreePoolWithTag(DeviceExtension->UsageListBuffer, MOUHID_TAG); + DeviceExtension->UsageListBuffer = NULL; DeviceExtension->CurrentUsageList = NULL; DeviceExtension->PreviousUsageList = NULL; DeviceExtension->MakeUsageList = NULL; diff --git a/reactos/drivers/hid/mouhid/mouhid.h b/reactos/drivers/hid/mouhid/mouhid.h index 52a277213e7..e5d5787dc09 100644 --- a/reactos/drivers/hid/mouhid/mouhid.h +++ b/reactos/drivers/hid/mouhid/mouhid.h @@ -49,6 +49,11 @@ typedef struct // USHORT WheelUsagePage; + // + // buffer for the four usage lists below + // + PVOID UsageListBuffer; + // // usage list length //