MCPcopy Create free account
hub / github.com/BestBurning/kmclass / kmclassDispatchDeviceControl

Function kmclassDispatchDeviceControl

kmclass.cpp:113–176  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

111}
112
113NTSTATUS kmclassDispatchDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
114{
115 NTSTATUS status = STATUS_SUCCESS;
116 PIO_STACK_LOCATION irpStack;
117 PDEVICE_EXTENSION deviceExtension;
118 ULONG ioControlCode;
119 PKEYBOARD_INPUT_DATA KbdInputDataStart, KbdInputDataEnd;
120 PMOUSE_INPUT_DATA MouseInputDataStart, MouseInputDataEnd;
121 ULONG InputDataConsumed;
122 PVOID ioBuffer;
123
124 irpStack = IoGetCurrentIrpStackLocation(Irp);
125 deviceExtension = (PDEVICE_EXTENSION)DeviceObject->DeviceExtension;
126
127 ioBuffer = Irp->AssociatedIrp.SystemBuffer;
128 ioControlCode = irpStack->Parameters.DeviceIoControl.IoControlCode;
129 Irp->IoStatus.Information = 0;
130
131 switch (ioControlCode)
132 {
133 case IOCTL_KEYBOARD:
134 if (ioBuffer)
135 {
136 KEYBOARD_INPUT_DATA kid = *(PKEYBOARD_INPUT_DATA)ioBuffer;
137 KbdInputDataStart = &kid;
138 KbdInputDataEnd = KbdInputDataStart + 1;
139 //deviceExtension->My_KbdCallback(deviceExtension->kbdDeviceObject,
140 g_KoMCallBack.KeyboardClassServiceCallback(g_KoMCallBack.KdbDeviceObject,
141 KbdInputDataStart,
142 KbdInputDataEnd,
143 &InputDataConsumed);
144
145 status = STATUS_SUCCESS;
146 }
147 break;
148
149 case IOCTL_MOUSE:
150 if (ioBuffer)
151 {
152 MOUSE_INPUT_DATA mid = *(PMOUSE_INPUT_DATA)ioBuffer;
153 MouseInputDataStart = ∣
154 MouseInputDataEnd = MouseInputDataStart + 1;
155
156 //deviceExtension->My_MouCallback(deviceExtension->mouDeviceObject,
157 g_KoMCallBack.MouseClassServiceCallback(g_KoMCallBack.MouDeviceObject,
158 MouseInputDataStart,
159 MouseInputDataEnd,
160 &InputDataConsumed);
161
162 status = STATUS_SUCCESS;
163 }
164 break;
165
166 default:
167 status = STATUS_INVALID_PARAMETER;
168 KdPrint(("\nunknown IRP_MJ_DEVICE_CONTROL\n"));
169 break;
170 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected