For each HID minidriver in the system, the HID class driver keeps a HIDCLASS_DRIVER_EXTENSION, like so: HID.SYS -+--> HIDCLASS_DRIVER_EXTENSION | +--> HIDCLASS_DRIVER_EXTENSION | . . . For each device object associated with a minidriver, the class driver keeps a HIDCLASS_DEVICE_EXTENSION, like so: HIDCLASS_DRIVER_EXTENSION -+--> HIDCLASS_DEVICE_EXTENSION | +--> HIDCLASS_DEVICE_EXTENSION | . . . For each collection associated with a device object, the class driver keeps a HIDCLASS_COLLECTION structure: HIDCLASS_DEVICE_EXTENSION -+--> HIDCLASS_COLLECTION | +--> HIDCLASS_COLLECTION | . . . For each file object associated with a collection, the class driver keeps a HIDCLASS_FILE_EXTENSION structure: HIDCLASS_COLLECTION -+--> HIDCLASS_FILE_EXTENSION | +--> HIDCLASS_FILE_EXTENSION | . . . Finally, the class driver keeps a list of IRPs that are pending against each file object: HIDCLASS_FILE_EXTENSION -+--> IRP | +--> IRP | . . .