// Throw data up to GDI callback
if(*(PGDI_SERVICE_CALLBACK_ROUTINE)ClassDeviceExtension->GDIInformation.CallBack != NULL) {
+ DbgPrint("MouseClassCallBack() Calling GDI callback at %p\n", ClassDeviceExtension->GDIInformation.CallBack);
(*(PGDI_SERVICE_CALLBACK_ROUTINE)ClassDeviceExtension->GDIInformation.CallBack)
(ClassDeviceExtension->PortData - ReadSize, ReadSize);
- }
+ } else {
+ DbgPrint("MouseClassCallBack() NO GDI callback installed\n");
+ }
ClassDeviceExtension->PortData -= ReadSize;
ClassDeviceExtension->InputCount -= ReadSize;
ClassDeviceExtension->ReadIsPending = FALSE;
+ } else {
+ DbgPrint("MouseClassCallBack() entered, InputCount = %d - DOING NOTHING\n", *InputCount);
}
return TRUE;
PDEVICE_OBJECT PortDeviceObject = NULL;
PFILE_OBJECT FileObject = NULL;
NTSTATUS status;
- UNICODE_STRING PortName;
+ UNICODE_STRING PortName = UNICODE_STRING_INITIALIZER(L"\\Device\\Mouse");
IO_STATUS_BLOCK ioStatus;
KEVENT event;
PIRP irp;
// Get the port driver's DeviceObject
// FIXME: The name might change.. find a way to be more dynamic?
- RtlInitUnicodeString(&PortName, L"\\Device\\Mouse");
status = IoGetDeviceObjectPointer(&PortName, FILE_READ_ATTRIBUTES, &FileObject, &PortDeviceObject);
if(status != STATUS_SUCCESS)
DeviceExtension->GDIInformation =
*((PGDI_INFORMATION)Stack->Parameters.DeviceIoControl.Type3InputBuffer);
+ DbgPrint("MouseClassInternalDeviceControl() installed GDI callback at %p\n", DeviceExtension->GDIInformation.CallBack);
+
status = STATUS_SUCCESS;
break;
DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
{
PDEVICE_OBJECT DeviceObject;
- UNICODE_STRING DeviceName;
- UNICODE_STRING SymlinkName;
+ UNICODE_STRING DeviceName = UNICODE_STRING_INITIALIZER(L"\\Device\\MouseClass");
+ UNICODE_STRING SymlinkName = UNICODE_STRING_INITIALIZER(L"\\??\\MouseClass");
DriverObject->MajorFunction[IRP_MJ_CREATE] = MouseClassDispatch;
// DriverObject->MajorFunction[IRP_MJ_CLOSE] = MouseClassDispatch;
DriverObject->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = MouseClassInternalDeviceControl; // to get GDI callback
// DriverObject->DriverStartIo = MouseClassStartIo;
- RtlInitUnicodeString(&DeviceName, L"\\Device\\MouseClass");
IoCreateDevice(DriverObject,
sizeof(DEVICE_EXTENSION),
&DeviceName,
&DeviceObject);
DeviceObject->Flags = DeviceObject->Flags | DO_BUFFERED_IO;
- RtlInitUnicodeString(&SymlinkName, L"\\??\\MouseClass");
IoCreateSymbolicLink(&SymlinkName, &DeviceName);
return ConnectMousePortDriver(DeviceObject);