641 if (
MouseIdle == DeviceExtension->MouseState)
646 WARN_(I8042PRT,
"Hot plugged mouse!\n");
657 PortDeviceExtension = DeviceExtension->
Common.PortDeviceExtension;
659 switch ((
ULONG)DeviceExtension->MouseResetState)
664 WARN_(I8042PRT,
"Dropping extra ACK\n");
671 DeviceExtension->MouseResetState++;
677 WARN_(I8042PRT,
"Mouse returned bad reset reply: %x (expected aa)\n",
Value);
683 WARN_(I8042PRT,
"Dropping extra ACK #2\n");
689 DeviceExtension->MouseResetState++;
691 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xF2);
697 WARN_(I8042PRT,
"Mouse returned bad reset reply part two: %x (expected 0)\n",
Value);
703 DeviceExtension->MouseResetState++;
707 DeviceExtension->MouseResetState++;
709 WARN_(I8042PRT,
"Mouse doesn't support 0xd2, (returns %x, expected %x), faking\n",
Value,
MOUSE_ACK);
717 DeviceExtension->MouseAttributes.MouseIdentifier =
722 DeviceExtension->MouseAttributes.MouseIdentifier =
726 DeviceExtension->MouseAttributes.MouseIdentifier =
729 DeviceExtension->MouseResetState++;
730 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xE8);
733 DeviceExtension->MouseResetState++;
734 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0x00);
738 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xE6);
742 DeviceExtension->MouseResetState++;
743 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xE6);
746 DeviceExtension->MouseResetState++;
747 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xE9);
750 DeviceExtension->MouseResetState++;
753 DeviceExtension->MouseLogiBuffer[0] =
Value;
754 DeviceExtension->MouseResetState++;
757 DeviceExtension->MouseLogiBuffer[1] =
Value;
758 DeviceExtension->MouseResetState++;
761 DeviceExtension->MouseLogiBuffer[2] =
Value;
768 if (DeviceExtension->MouseLogiBuffer[1])
770 DeviceExtension->MouseAttributes.NumberOfButtons =
771 DeviceExtension->MouseLogiBuffer[1];
772 DeviceExtension->MouseType =
Ps2pp;
773 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xF3);
782 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xF3);
783 DeviceExtension->MouseResetState = 1001;
786 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xC8);
787 DeviceExtension->MouseResetState++;
791 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xF3);
792 DeviceExtension->MouseResetState++;
795 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0x64);
796 DeviceExtension->MouseResetState++;
799 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0x50);
800 DeviceExtension->MouseResetState++;
803 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xF2);
804 DeviceExtension->MouseResetState++;
808 DeviceExtension->MouseResetState++;
813 DeviceExtension->MouseAttributes.NumberOfButtons = 3;
814 DeviceExtension->MouseAttributes.MouseIdentifier =
823 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xF3);
828 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xF3);
829 DeviceExtension->MouseResetState = 1021;
833 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xF3);
834 DeviceExtension->MouseResetState++;
838 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xC8);
839 DeviceExtension->MouseResetState++;
842 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0x50);
843 DeviceExtension->MouseResetState++;
846 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xF2);
847 DeviceExtension->MouseResetState++;
852 DeviceExtension->MouseAttributes.NumberOfButtons = 5;
853 DeviceExtension->MouseAttributes.MouseIdentifier =
857 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xF3);
861 DeviceExtension->MouseHook.IsrWritePort(
862 DeviceExtension->MouseHook.CallContext,
863 (
UCHAR)DeviceExtension->MouseAttributes.SampleRate);
864 DeviceExtension->MouseResetState++;
869 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0x3C);
871 DeviceExtension->MouseResetState = 1040;
875 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xE8);
879 DeviceExtension->MouseHook.IsrWritePort(
880 DeviceExtension->MouseHook.CallContext,
882 INFO_(I8042PRT,
"Mouse resolution %lu\n",
887 DeviceExtension->MouseHook.IsrWritePort(DeviceExtension->MouseHook.CallContext, 0xF4);
894 INFO_(I8042PRT,
"Mouse type = %u\n", DeviceExtension->MouseType);
897 if (DeviceExtension->MouseResetState < 100 || DeviceExtension->MouseResetState > 999)
898 ERR_(I8042PRT,
"MouseResetState went out of range: %lu\n", DeviceExtension->MouseResetState);
#define MOUSE_I8042_HARDWARE
COMMON_DEVICE_EXTENSION Common
#define BALLPOINT_I8042_HARDWARE
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
#define WHEELMOUSE_I8042_HARDWARE