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/C... ============================================================================== --- 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/h... ============================================================================== --- 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@reactos.org) + * Johannes Anderwald (johannes.anderwald@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/h... ============================================================================== --- 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