Hidclass.sys???

Not too long ago I made a thread about games based on Unreal Engine 3 randomly crashing with a BSOD

So I downloaded the windows debugging tool to read the files in the minidump folder. There are 18 of them most of them are cause by Mass Effect and a few by Batman AA. The cause all the same: HIDCLASS.SYS. So the source of the problem is a USB port device. I have a PS2 Dualshock2 connected via a converter and I suspect that is the problem, but I can't really be sure of it.

I haven't uninstalled the software for the controller yet, but I'll try that. Otherwise, I don't really know how to go about fixing this hid class problem. Hopefully someone has encountered this problem before can help? Here is the details of the mini dump file. I don't fully understand most of it.

Code:
BugCheck 19, {20, 886c83a8, 886c83c8, a040004}

Unable to load image HIDCLASS.SYS, Win32 error 0n2
*** WARNING: Unable to verify timestamp for HIDCLASS.SYS
*** WARNING: Unable to verify timestamp for USBPORT.SYS
Probably caused by : HIDCLASS.SYS ( HIDCLASS!EnqueueInterruptReport+48 )

Followup: MachineOwner

BAD_POOL_HEADER (19)
The pool is already corrupt at the time of the current request.
This may or may not be due to the caller.
The internal pool links must be walked to figure out a possible cause of
the problem, and then special pool applied to the suspect tags or the driver
verifier to a suspect driver.
Arguments:
Arg1: 00000020, a pool block header size is corrupt.
Arg2: 886c83a8, The pool entry we were looking for within the page.
Arg3: 886c83c8, The next pool entry.
Arg4: 0a040004, (reserved)

Debugging Details:
------------------


BUGCHECK_STR:  0x19_20

POOL_ADDRESS:  886c83a8 

CUSTOMER_CRASH_COUNT:  2

DEFAULT_BUCKET_ID:  DRIVER_FAULT

PROCESS_NAME:  MassEffect.exe

LAST_CONTROL_TRANSFER:  from 8054b583 to 804f9f43

STACK_TEXT:  
b84dfd40 8054b583 00000019 00000020 886c83a8 nt!_woutput+0x414
b84dfd90 b81ba9a6 886c83b0 00000000 8871a48c nt!ExFreePoolWithTag+0x4bd
b84dfda8 b81b9de7 88749e68 8871a478 88749e80 HIDCLASS!EnqueueInterruptReport+0x48
b84dfdcc b81b9e79 892711c0 88749e68 8932b9b8 HIDCLASS!HidpProcessInterruptReport+0x9f
b84dfe08 b81ba094 022711c0 8932b9b8 00000008 HIDCLASS!HidpDistributeInterruptReport+0x67
b84dfe48 804f16c0 00000000 8924a460 892dbdf4 HIDCLASS!HidpInterruptReadComplete+0x17a
b84dfe78 b337e0d5 8924a460 885ec008 8a9a0028 nt!KiDeliverApc+0xcc
b84dfee0 b337ed47 885ec168 00000000 8a9a07d8 USBPORT!USBPORT_CompleteTransfer+0x373
b84dff10 b337f944 026e6f44 8a9a00e0 8a9a00e0 USBPORT!USBPORT_DoneTransfer+0x137
b84dff48 b338113a 8a9a0028 80546acc 8a9a0230 USBPORT!USBPORT_FlushDoneTransferList+0x16c
b84dff74 b338f24b 8a9a0028 80546acc 8a9a0028 USBPORT!USBPORT_DpcWorker+0x224
b84dffb0 b338f3c2 8a9a0028 00000001 8a399454 USBPORT!USBPORT_IsrDpcWorker+0x38f
b84dffcc 80545e7f 8a9a064c 6b755044 00000000 USBPORT!USBPORT_IsrDpc+0x166
b84dffe0 00000000 00000000 00000000 00000000 nt!ExSetResourceOwnerPointer+0x7c


STACK_COMMAND:  kb

FOLLOWUP_IP: 
HIDCLASS!EnqueueInterruptReport+48
b81ba9a6 ??              ???

SYMBOL_STACK_INDEX:  2

SYMBOL_NAME:  HIDCLASS!EnqueueInterruptReport+48

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: HIDCLASS

IMAGE_NAME:  HIDCLASS.SYS

DEBUG_FLR_IMAGE_TIMESTAMP:  480254c5

FAILURE_BUCKET_ID:  0x19_20_HIDCLASS!EnqueueInterruptReport+48

BUCKET_ID:  0x19_20_HIDCLASS!EnqueueInterruptReport+48

Followup: MachineOwner
---------

2: kd> lmvm HIDCLASS
start    end        module name
b81b8000 b81c1000   HIDCLASS M (pdb symbols)          d:\update\symbols\SYS\HIDCLASS.pdb
    Loaded symbol image file: HIDCLASS.SYS
    Image path: HIDCLASS.SYS
    Image name: HIDCLASS.SYS
    Timestamp:        Sun Apr 13 14:45:25 2008 (480254C5)
    CheckSum:         000156B8
    ImageSize:        00009000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
Thanks.
 
The PC game Prototype had a similar problem. In order to get this game to actually work you had to disable HID-compliant consumer control devices from Device Manager. I've heard that some other games worked better with this off but I've not read anything regarding it until you created this thread.
 
Obviously it looks like a bad HID (read controller, keyboard, mouse etc) driver.

I really don't understand why people write kernel level drivers for USB devices. It's so damn hard to get everything right, and there would be 0 performance penalty if they wrote a usermode driver and they have few to none of the constraints.
 
the prototype (a games for windows game) problem
was with the microsoft sidewinder x3 mouse
and whose initiative is games for windows
 
With regards Prototype it was also HID drivers for USB root hubs. I only use Logitech mice and had the problem. So when playing I had to disable almost all USB root hubs, then re-enable them afterwards. Was a royal PITA.

Regards,
SB
 
It just weird that this affecting ME and Batman AA specifically. I removed the game controller and switched around the KB and mouse. I'm going to see if that have any affects.

EDIT: So culprit was definitely my Dualshock2 to usb converter thing. I unplugged and last night I played ME for little over 2 hours and Batman AA over an 1 hour and I didn't get any BSOD's.
 
Last edited by a moderator:
It just weird that this affecting ME and Batman AA specifically. I removed the game controller and switched around the KB and mouse. I'm going to see if that have any affects.

EDIT: So culprit was definitely my Dualshock2 to usb converter thing. I unplugged and last night I played ME for little over 2 hours and Batman AA over an 1 hour and I didn't get any BSOD's.

The driver is probably not handling high rates of interrupts correctly. The game probably ends up stressing the system in just the right way.
Memory handling is a pain in the ass in Kernel drivers. I just don't know why people bother for things like USB devices.
 
Back
Top