mirror of
https://github.com/reactos/reactos.git
synced 2025-02-25 09:50:02 +00:00
Legacy device objects created for USB keyboard and mouse support should be treated as FDOs, not PDOs.
svn path=/trunk/; revision=21797
This commit is contained in:
parent
c0afd25226
commit
0d86ffc546
2 changed files with 20 additions and 4 deletions
|
@ -211,7 +211,11 @@ UsbMpPnpFdo(
|
|||
{
|
||||
case IRP_MN_START_DEVICE: /* 0x00 */
|
||||
{
|
||||
if (((PUSBMP_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->NextDeviceObject != NULL)
|
||||
/* HACK due to the lack of lower device for legacy USB keyboard and mouse */
|
||||
Status = ForwardIrpAndWait(DeviceObject, Irp);
|
||||
else
|
||||
Status = STATUS_SUCCESS;
|
||||
if (NT_SUCCESS(Status) && NT_SUCCESS(Irp->IoStatus.Status))
|
||||
Status = UsbMpFdoStartDevice(DeviceObject, Irp);
|
||||
break;
|
||||
|
@ -227,7 +231,11 @@ UsbMpPnpFdo(
|
|||
case IRP_MN_STOP_DEVICE: /* 0x04 */
|
||||
case IRP_MN_SURPRISE_REMOVAL: /* 0x17 */
|
||||
{
|
||||
if (((PUSBMP_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->NextDeviceObject != NULL)
|
||||
/* HACK due to the lack of lower device for legacy USB keyboard and mouse */
|
||||
Status = ForwardIrpAndWait(DeviceObject, Irp);
|
||||
else
|
||||
Status = STATUS_SUCCESS;
|
||||
if (NT_SUCCESS(Status) && NT_SUCCESS(Irp->IoStatus.Status))
|
||||
Status = STATUS_SUCCESS;
|
||||
IoDeleteDevice(DeviceObject); // just delete device for now
|
||||
|
|
|
@ -118,6 +118,7 @@ AddDevice_Keyboard(
|
|||
IN PDEVICE_OBJECT Pdo)
|
||||
{
|
||||
UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Device\\KeyboardPortUSB");
|
||||
PUSBMP_DEVICE_EXTENSION DeviceExtension;
|
||||
PDEVICE_OBJECT Fdo;
|
||||
NTSTATUS Status;
|
||||
|
||||
|
@ -129,7 +130,7 @@ AddDevice_Keyboard(
|
|||
}
|
||||
|
||||
Status = IoCreateDevice(DriverObject,
|
||||
8, // debug
|
||||
sizeof(USBMP_DEVICE_EXTENSION),
|
||||
&DeviceName,
|
||||
FILE_DEVICE_KEYBOARD,
|
||||
FILE_DEVICE_SECURE_OPEN,
|
||||
|
@ -141,6 +142,9 @@ AddDevice_Keyboard(
|
|||
DPRINT1("USBMP: IoCreateDevice() for usb keyboard driver failed with status 0x%08lx\n", Status);
|
||||
return Status;
|
||||
}
|
||||
DeviceExtension = (PUSBMP_DEVICE_EXTENSION)Fdo->DeviceExtension;
|
||||
RtlZeroMemory(DeviceExtension, sizeof(USBMP_DEVICE_EXTENSION));
|
||||
DeviceExtension->IsFDO = TRUE;
|
||||
KeyboardFdo = Fdo;
|
||||
Fdo->Flags &= ~DO_DEVICE_INITIALIZING;
|
||||
DPRINT("USBMP: Created keyboard Fdo: %p\n", Fdo);
|
||||
|
@ -154,6 +158,7 @@ AddDevice_Mouse(
|
|||
IN PDEVICE_OBJECT Pdo)
|
||||
{
|
||||
UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Device\\PointerPortUSB");
|
||||
PUSBMP_DEVICE_EXTENSION DeviceExtension;
|
||||
PDEVICE_OBJECT Fdo;
|
||||
NTSTATUS Status;
|
||||
|
||||
|
@ -165,7 +170,7 @@ AddDevice_Mouse(
|
|||
}
|
||||
|
||||
Status = IoCreateDevice(DriverObject,
|
||||
8, // debug
|
||||
sizeof(USBMP_DEVICE_EXTENSION),
|
||||
&DeviceName,
|
||||
FILE_DEVICE_MOUSE,
|
||||
FILE_DEVICE_SECURE_OPEN,
|
||||
|
@ -177,6 +182,9 @@ AddDevice_Mouse(
|
|||
DPRINT1("USBMP: IoCreateDevice() for usb mouse driver failed with status 0x%08lx\n", Status);
|
||||
return Status;
|
||||
}
|
||||
DeviceExtension = (PUSBMP_DEVICE_EXTENSION)Fdo->DeviceExtension;
|
||||
RtlZeroMemory(DeviceExtension, sizeof(USBMP_DEVICE_EXTENSION));
|
||||
DeviceExtension->IsFDO = TRUE;
|
||||
MouseFdo = Fdo;
|
||||
Fdo->Flags &= ~DO_DEVICE_INITIALIZING;
|
||||
DPRINT("USBMP: Created mouse Fdo: %p\n", Fdo);
|
||||
|
|
Loading…
Reference in a new issue