[ros-diffs] [janderwald] 53500: [HIDUSB] - Add stub hidusb driver - Hidusb driver is reponsible to connect with the hidclass driver (not yet present) and connect hid framework with usb hid devices

janderwald at svn.reactos.org janderwald at svn.reactos.org
Tue Aug 30 16:01:01 UTC 2011


Author: janderwald
Date: Tue Aug 30 16:01:00 2011
New Revision: 53500

URL: http://svn.reactos.org/svn/reactos?rev=53500&view=rev
Log:
[HIDUSB]
- Add stub hidusb driver
- Hidusb driver is reponsible to connect with the hidclass driver (not yet present) and connect hid framework with usb hid devices

Added:
    branches/usb-bringup/drivers/usb/hidusb/   (with props)
    branches/usb-bringup/drivers/usb/hidusb/CMakeLists.txt   (with props)
    branches/usb-bringup/drivers/usb/hidusb/hidusb.c   (with props)
    branches/usb-bringup/drivers/usb/hidusb/hidusb.h   (with props)

Propchange: branches/usb-bringup/drivers/usb/hidusb/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Tue Aug 30 16:01:00 2011
@@ -1,0 +1,2 @@
+([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))?
+(\d+)

Propchange: branches/usb-bringup/drivers/usb/hidusb/
------------------------------------------------------------------------------
    bugtraq:message = See issue #%BUGID% for more details.

Propchange: branches/usb-bringup/drivers/usb/hidusb/
------------------------------------------------------------------------------
    bugtraq:url = http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%

Propchange: branches/usb-bringup/drivers/usb/hidusb/
------------------------------------------------------------------------------
    tsvn:logminsize = 10

Added: branches/usb-bringup/drivers/usb/hidusb/CMakeLists.txt
URL: http://svn.reactos.org/svn/reactos/branches/usb-bringup/drivers/usb/hidusb/CMakeLists.txt?rev=53500&view=auto
==============================================================================
--- branches/usb-bringup/drivers/usb/hidusb/CMakeLists.txt (added)
+++ branches/usb-bringup/drivers/usb/hidusb/CMakeLists.txt [iso-8859-1] Tue Aug 30 16:01:00 2011
@@ -1,0 +1,11 @@
+
+list(APPEND SOURCE
+    hidusb.c
+    usbhub.rc)
+
+add_library(hidusb SHARED ${SOURCE})
+
+set_module_type(hidusb kernelmodedriver)
+add_importlibs(hidusb hidclass ntoskrnl usbd)
+
+add_cab_target(usbhub 2)

Propchange: branches/usb-bringup/drivers/usb/hidusb/CMakeLists.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Added: branches/usb-bringup/drivers/usb/hidusb/hidusb.c
URL: http://svn.reactos.org/svn/reactos/branches/usb-bringup/drivers/usb/hidusb/hidusb.c?rev=53500&view=auto
==============================================================================
--- branches/usb-bringup/drivers/usb/hidusb/hidusb.c (added)
+++ branches/usb-bringup/drivers/usb/hidusb/hidusb.c [iso-8859-1] Tue Aug 30 16:01:00 2011
@@ -1,0 +1,151 @@
+/*
+ * PROJECT:     ReactOS Universal Serial Bus Human Interface Device Driver
+ * LICENSE:     GPL - See COPYING in the top level directory
+ * FILE:        drivers/usb/hidusb/hidusb.c
+ * PURPOSE:     HID USB Interface Driver
+ * PROGRAMMERS:
+ *              Michael Martin (michael.martin at reactos.org)
+ *              Johannes Anderwald (johannes.anderwald at reactos.org)
+ */
+
+#include "hidusb.h"
+
+NTSTATUS
+NTAPI
+HidCreate(
+    IN PDEVICE_OBJECT DeviceObject,
+    IN PIRP Irp)
+{
+    PIO_STACK_LOCATION IoStack;
+
+    //
+    // get current irp stack location
+    //
+    IoStack = IoGetCurrentIrpStackLocation(Irp);
+
+    //
+    // sanity check for hidclass driver
+    //
+    ASSERT(IoStack->MajorFunction == IRP_MJ_CREATE || IoStack->MajorFunction == IRP_MJ_CLOSE);
+
+    //
+    // complete request
+    //
+    Irp->IoStatus.Information = 0;
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+
+    //
+    // informal debug print
+    //
+    DPRINT1("HIDUSB Request: %x\n", IoStack->MajorFunction);
+
+    //
+    // done
+    //
+    return STATUS_SUCCESS;
+}
+
+NTSTATUS
+NTAPI
+HidInternalDeviceControl(
+    IN PDEVICE_OBJECT DeviceObject,
+    IN PIRP Irp)
+{
+    UNIMPLEMENTED
+    ASSERT(FALSE);
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+NTSTATUS
+NTAPI
+HidPower(
+    IN PDEVICE_OBJECT DeviceObject,
+    IN PIRP Irp)
+{
+    UNIMPLEMENTED
+    ASSERT(FALSE);
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+NTSTATUS
+NTAPI
+HidSystemControl(
+    IN PDEVICE_OBJECT DeviceObject,
+    IN PIRP Irp)
+{
+    PHID_DEVICE_EXTENSION DeviceExtension;
+
+    //
+    // get hid device extension
+    //
+    DeviceExtension = (PHID_DEVICE_EXTENSION)DeviceObject->DeviceExtension;
+
+    //
+    // copy stack location
+    //
+    IoCopyCurrentIrpStackLocationToNext(Irp);
+
+    //
+    // submit request
+    //
+    return IoCallDriver(DeviceExtension->NextDeviceObject);
+}
+
+NTSTATUS
+NTAPI
+HidPnp(
+    IN PDEVICE_OBJECT DeviceObject,
+    IN PIRP Irp)
+{
+    UNIMPLEMENTED
+    ASSERT(FALSE);
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+NTSTATUS
+NTAPI
+DriverEntry(
+    IN PDRIVER_OBJECT DriverObject,
+    IN PUNICODE_STRING RegPath)
+{
+    HID_MINIDRIVER_REGISTRATION Registration;
+    NTSTATUS Status;
+
+    //
+    // initialize driver object
+    //
+    DriverObject->MajorFunction[IRP_MJ_CREATE] = HidCreate;
+    DriverObject->MajorFunction[IRP_MJ_CLOSE] = HidCreate;
+    DriverObject->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = HidInternalDeviceControl;
+    DriverObject->MajorFunction[IRP_MJ_POWER] = HidPower;
+    DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = HidSystemControl;
+    DriverObject->MajorFunction[IRP_MJ_PNP] = HidPnp;
+
+    //
+    // prepare registration info
+    //
+    RtlZeroMemory(&Registration, sizeof(HID_MINIDRIVER_REGISTRATION));
+
+    //
+    // fill in registration info
+    //
+    Registration.Revision = HID_REVISION;
+    Registration.DriverObject = DriverObject;
+    Registration.RegistryPath = RegPath;
+    Registration.DeviceExtensionSize = sizeof(HID_USB_DEVICE_EXTENSION);
+    Registration.DevicesArePolled = FALSE;
+
+    //
+    // register driver
+    //
+    Status = HidRegisterMinidriver(&Registration);
+
+    //
+    // informal debug
+    //
+    DPRINT1("********* HIDUSB *********\n");
+    DPRINT1("HIDUSB Registration Status %x\n", Status);
+
+    return Status;
+}

Propchange: branches/usb-bringup/drivers/usb/hidusb/hidusb.c
------------------------------------------------------------------------------
    svn:eol-style = native

Added: branches/usb-bringup/drivers/usb/hidusb/hidusb.h
URL: http://svn.reactos.org/svn/reactos/branches/usb-bringup/drivers/usb/hidusb/hidusb.h?rev=53500&view=auto
==============================================================================
--- branches/usb-bringup/drivers/usb/hidusb/hidusb.h (added)
+++ branches/usb-bringup/drivers/usb/hidusb/hidusb.h [iso-8859-1] Tue Aug 30 16:01:00 2011
@@ -1,0 +1,22 @@
+#pragma once
+
+#define _HIDPI_
+#define _HIDPI_NO_FUNCTION_MACROS_
+#include <ntddk.h>
+#include <hidport.h>
+#include <debug.h>
+
+typedef struct
+{
+    //
+    // event for completion
+    //
+    KEVENT Event;
+
+    //
+    // list for pending requests
+    //
+    LIST_ENTRY PendingRequests;
+
+}HID_USB_DEVICE_EXTENSION, *PHID_USB_DEVICE_EXTENSION;
+

Propchange: branches/usb-bringup/drivers/usb/hidusb/hidusb.h
------------------------------------------------------------------------------
    svn:eol-style = native




More information about the Ros-diffs mailing list