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/hidclass.c?rev=54792&r1=54791&r2=54792&view=diff
==============================================================================
--- 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/pdo.c?rev=54792&r1=54791&r2=54792&view=diff
==============================================================================
--- 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/precomp.h?rev=54792&r1=54791&r2=54792&view=diff
==============================================================================
--- 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;
 
 


Reply via email to