[KBDHID][MOUHID]

- Free the correct usage list buffer

svn path=/trunk/; revision=58998
This commit is contained in:
Thomas Faber 2013-05-11 17:15:54 +00:00
parent a4659f29fb
commit 647ff6e058
4 changed files with 19 additions and 5 deletions

View file

@ -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;

View file

@ -40,6 +40,11 @@ typedef struct
//
PVOID ClassService;
//
// buffer for the four usage lists below
//
PVOID UsageListBuffer;
//
// usage list length
//

View file

@ -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;

View file

@ -49,6 +49,11 @@ typedef struct
//
USHORT WheelUsagePage;
//
// buffer for the four usage lists below
//
PVOID UsageListBuffer;
//
// usage list length
//