PDEVICE_OBJECT PortDeviceObject = NULL;
PFILE_OBJECT FileObject = NULL;
NTSTATUS status;
- UNICODE_STRING PortName = UNICODE_STRING_INITIALIZER(L"\\Device\\Mouse");
+ UNICODE_STRING PortName = UNICODE_STRING_INITIALIZER(L"\\Device\\PointerClass0");
IO_STATUS_BLOCK ioStatus;
KEVENT event;
PIRP irp;
if(status != STATUS_SUCCESS)
{
- DbgPrint("MOUCLASS: Could not connect to mouse port driver\n");
+ DPRINT1("MOUCLASS: Could not connect to mouse port driver\n");
return status;
}
return ioStatus.Status;
}
-NTSTATUS STDCALL MouseClassDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp)
+NTSTATUS STDCALL_FUNC MouseClassDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp)
{
PIO_STACK_LOCATION Stack = IoGetCurrentIrpStackLocation(Irp);
NTSTATUS Status;
break;
default:
- DbgPrint("NOT IMPLEMENTED\n");
+ DPRINT1("NOT IMPLEMENTED\n");
Status = STATUS_NOT_IMPLEMENTED;
break;
}
}
}
-NTSTATUS STDCALL MouseClassInternalDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
+NTSTATUS STDCALL_FUNC MouseClassInternalDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
// Retrieve GDI's callback
DeviceExtension->GDIInformation =
*((PGDI_INFORMATION)Stack->Parameters.DeviceIoControl.Type3InputBuffer);
- DbgPrint("MouseClassInternalDeviceControl() installed GDI callback at %p\n", DeviceExtension->GDIInformation.CallBack);
+ DPRINT("MouseClassInternalDeviceControl() installed GDI callback at %p\n", DeviceExtension->GDIInformation.CallBack);
status = STATUS_SUCCESS;
break;
{
PDEVICE_OBJECT DeviceObject;
UNICODE_STRING DeviceName = UNICODE_STRING_INITIALIZER(L"\\Device\\MouseClass");
- UNICODE_STRING SymlinkName = UNICODE_STRING_INITIALIZER(L"\\??\\MouseClass");
+ UNICODE_STRING SymlinkName = UNICODE_STRING_INITIALIZER(L"\\??\\MouseClass"); NTSTATUS Status;
+
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;
- IoCreateDevice(DriverObject,
- sizeof(DEVICE_EXTENSION),
- &DeviceName,
- FILE_DEVICE_MOUSE,
- 0,
- TRUE,
- &DeviceObject);
+ Status = IoCreateDevice(DriverObject,
+ sizeof(DEVICE_EXTENSION),
+ &DeviceName,
+ FILE_DEVICE_MOUSE,
+ 0,
+ TRUE,
+ &DeviceObject);
+ if (!NT_SUCCESS(Status))
+ {
+ return(Status);
+ }
DeviceObject->Flags = DeviceObject->Flags | DO_BUFFERED_IO;
- IoCreateSymbolicLink(&SymlinkName, &DeviceName);
+ Status = IoCreateSymbolicLink(&SymlinkName, &DeviceName);
+ if (!NT_SUCCESS(Status))
+ {
+ IoDeleteDevice(DeviceObject);
+ return(Status);
+ }
- return ConnectMousePortDriver(DeviceObject);
+ Status = ConnectMousePortDriver(DeviceObject);
+ if (!NT_SUCCESS(Status))
+ {
+ IoDeleteSymbolicLink(&SymlinkName);
+ IoDeleteDevice(DeviceObject);
+ return(Status);
+ }
+ return(STATUS_SUCCESS);
}