/* FUNCTIONS *****************************************************************/
+static KDEFERRED_ROUTINE i8042MouDpcRoutine;
+static KDEFERRED_ROUTINE i8042DpcRoutineMouseTimeout;
+
/*
* These functions are callbacks for filter driver custom interrupt
* service routines.
break;
default:
- ERR_(I8042PRT, "Unexpected state 0x%u!\n", DeviceExtension->MouseState);
+ ERR_(I8042PRT, "Unexpected state 0x%lx!\n", DeviceExtension->MouseState);
ASSERT(FALSE);
}
}
(DeviceExtension->MouseButtonState & ~Mask) | (NewButtonData & Mask);
}
-/* Does lastest initializations for the mouse. This method
+/* Does final initializations for the mouse. This method
* is called just before connecting the interrupt.
*/
NTSTATUS
UNREFERENCED_PARAMETER(SystemArgument1);
UNREFERENCED_PARAMETER(SystemArgument2);
- DeviceExtension = (PI8042_MOUSE_EXTENSION)DeferredContext;
+ __analysis_assume(DeferredContext != NULL);
+ DeviceExtension = DeferredContext;
PortDeviceExtension = DeviceExtension->Common.PortDeviceExtension;
switch (DeviceExtension->MouseTimeoutState)
UNREFERENCED_PARAMETER(SystemArgument1);
UNREFERENCED_PARAMETER(SystemArgument2);
- DeviceExtension = (PI8042_MOUSE_EXTENSION)DeferredContext;
+ __analysis_assume(DeferredContext != NULL);
+ DeviceExtension = DeferredContext;
PortDeviceExtension = DeviceExtension->Common.PortDeviceExtension;
Irql = KeAcquireInterruptSpinLock(PortDeviceExtension->HighestDIRQLInterrupt);
}
}
- Irp->IoStatus.Status = Status;
if (Status != STATUS_PENDING)
+ {
+ Irp->IoStatus.Status = Status;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
+ }
return Status;
}
UNREFERENCED_PARAMETER(Interrupt);
- DeviceExtension = (PI8042_MOUSE_EXTENSION)Context;
+ __analysis_assume(Context != NULL);
+ DeviceExtension = Context;
PortDeviceExtension = DeviceExtension->Common.PortDeviceExtension;
Counter = PortDeviceExtension->Settings.PollStatusIterations;