Author: janderwald Date: Sat Dec 31 04:13:37 2011 New Revision: 54792
URL: http://svn.reactos.org/svn/reactos?rev=54792&view=rev Log: [USB-BRINGUP] - Partly implement IRP_MN_START_DEVICE for PDO - PDO now completely initializes - Remaining IOCTL to implement IRP_MJ_CREATE, IRP_MJ_CLOSE, IRP_MJ_FLUSH, IRP_MJ_READ for partial mouse support in hidclass
Modified: branches/usb-bringup/drivers/hid/hidclass/hidclass.c branches/usb-bringup/drivers/hid/hidclass/pdo.c branches/usb-bringup/drivers/hid/hidclass/precomp.h
Modified: branches/usb-bringup/drivers/hid/hidclass/hidclass.c URL: http://svn.reactos.org/svn/reactos/branches/usb-bringup/drivers/hid/hidclass... ============================================================================== --- branches/usb-bringup/drivers/hid/hidclass/hidclass.c [iso-8859-1] (original) +++ branches/usb-bringup/drivers/hid/hidclass/hidclass.c [iso-8859-1] Sat Dec 31 04:13:37 2011 @@ -128,6 +128,8 @@ { UNIMPLEMENTED ASSERT(FALSE); + Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; + IoCompleteRequest(Irp, IO_NO_INCREMENT); return STATUS_NOT_IMPLEMENTED; }
@@ -139,6 +141,8 @@ { UNIMPLEMENTED ASSERT(FALSE); + Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; + IoCompleteRequest(Irp, IO_NO_INCREMENT); return STATUS_NOT_IMPLEMENTED; }
@@ -150,6 +154,8 @@ { UNIMPLEMENTED ASSERT(FALSE); + Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; + IoCompleteRequest(Irp, IO_NO_INCREMENT); return STATUS_NOT_IMPLEMENTED; }
@@ -161,6 +167,8 @@ { UNIMPLEMENTED ASSERT(FALSE); + Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; + IoCompleteRequest(Irp, IO_NO_INCREMENT); return STATUS_NOT_IMPLEMENTED; }
Modified: branches/usb-bringup/drivers/hid/hidclass/pdo.c URL: http://svn.reactos.org/svn/reactos/branches/usb-bringup/drivers/hid/hidclass... ============================================================================== --- branches/usb-bringup/drivers/hid/hidclass/pdo.c [iso-8859-1] (original) +++ branches/usb-bringup/drivers/hid/hidclass/pdo.c [iso-8859-1] Sat Dec 31 04:13:37 2011 @@ -422,13 +422,27 @@ } case IRP_MN_START_DEVICE: { - DPRINT1("[HIDCLASS] PDO PnP not implemented %x\n", IoStack->MinorFunction); - ASSERT(FALSE); - - // - // do nothing - // - Status = Irp->IoStatus.Status; + // + // FIXME: support polled devices + // + ASSERT(PDODeviceExtension->Common.DriverExtension->DevicesArePolled == FALSE); + + // + // now register the device interface + // + Status = IoRegisterDeviceInterface(PDODeviceExtension->Common.HidDeviceExtension.PhysicalDeviceObject, &GUID_DEVINTERFACE_HID, NULL, &PDODeviceExtension->DeviceInterface); + if (NT_SUCCESS(Status)) + { + // + // enable device interface + // + Status = IoSetDeviceInterfaceState(&PDODeviceExtension->DeviceInterface, TRUE); + } + ASSERT(Status == STATUS_SUCCESS); + + // + // break + // break; } case IRP_MN_REMOVE_DEVICE: @@ -528,7 +542,7 @@ // PDODeviceExtension->Common.HidDeviceExtension.MiniDeviceExtension = FDODeviceExtension->Common.HidDeviceExtension.MiniDeviceExtension; PDODeviceExtension->Common.HidDeviceExtension.NextDeviceObject = FDODeviceExtension->Common.HidDeviceExtension.NextDeviceObject; - PDODeviceExtension->Common.HidDeviceExtension.PhysicalDeviceObject = NULL; + PDODeviceExtension->Common.HidDeviceExtension.PhysicalDeviceObject = FDODeviceExtension->Common.HidDeviceExtension.PhysicalDeviceObject; PDODeviceExtension->Common.IsFDO = FALSE; PDODeviceExtension->Common.DriverExtension = FDODeviceExtension->Common.DriverExtension; RtlCopyMemory(&PDODeviceExtension->Attributes, &FDODeviceExtension->Attributes, sizeof(HID_DEVICE_ATTRIBUTES));
Modified: branches/usb-bringup/drivers/hid/hidclass/precomp.h URL: http://svn.reactos.org/svn/reactos/branches/usb-bringup/drivers/hid/hidclass... ============================================================================== --- branches/usb-bringup/drivers/hid/hidclass/precomp.h [iso-8859-1] (original) +++ branches/usb-bringup/drivers/hid/hidclass/precomp.h [iso-8859-1] Sat Dec 31 04:13:37 2011 @@ -2,10 +2,10 @@
#define _HIDPI_NO_FUNCTION_MACROS_ #include <ntddk.h> +#include <initguid.h> #include <hidport.h> #include <hidpddi.h> #include <stdio.h> -#include <initguid.h> #include <wdmguid.h> #include <debug.h>
@@ -108,6 +108,10 @@ // ULONG CollectionIndex;
+ // + // device interface + // + UNICODE_STRING DeviceInterface; }HIDCLASS_PDO_DEVICE_EXTENSION, *PHIDCLASS_PDO_DEVICE_EXTENSION;