mirror of
https://github.com/reactos/reactos.git
synced 2024-07-30 16:18:43 +00:00
![Johannes Anderwald](/assets/img/avatar_default.png)
- 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 svn path=/branches/usb-bringup/; revision=54792
141 lines
2.3 KiB
C
141 lines
2.3 KiB
C
#pragma once
|
|
|
|
#define _HIDPI_NO_FUNCTION_MACROS_
|
|
#include <ntddk.h>
|
|
#include <initguid.h>
|
|
#include <hidport.h>
|
|
#include <hidpddi.h>
|
|
#include <stdio.h>
|
|
#include <wdmguid.h>
|
|
#include <debug.h>
|
|
|
|
|
|
|
|
typedef struct
|
|
{
|
|
PDRIVER_OBJECT DriverObject;
|
|
ULONG DeviceExtensionSize;
|
|
BOOLEAN DevicesArePolled;
|
|
PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];
|
|
PDRIVER_ADD_DEVICE AddDevice;
|
|
PDRIVER_UNLOAD DriverUnload;
|
|
KSPIN_LOCK Lock;
|
|
|
|
}HIDCLASS_DRIVER_EXTENSION, *PHIDCLASS_DRIVER_EXTENSION;
|
|
|
|
typedef struct
|
|
{
|
|
//
|
|
// hid device extension
|
|
//
|
|
HID_DEVICE_EXTENSION HidDeviceExtension;
|
|
|
|
//
|
|
// if it is a pdo
|
|
//
|
|
BOOLEAN IsFDO;
|
|
|
|
//
|
|
// driver extension
|
|
//
|
|
PHIDCLASS_DRIVER_EXTENSION DriverExtension;
|
|
|
|
}HIDCLASS_COMMON_DEVICE_EXTENSION, *PHIDCLASS_COMMON_DEVICE_EXTENSION;
|
|
|
|
typedef struct
|
|
{
|
|
//
|
|
// parts shared by fdo and pdo
|
|
//
|
|
HIDCLASS_COMMON_DEVICE_EXTENSION Common;
|
|
|
|
//
|
|
// device capabilities
|
|
//
|
|
DEVICE_CAPABILITIES Capabilities;
|
|
|
|
//
|
|
// hid descriptor
|
|
//
|
|
HID_DESCRIPTOR HidDescriptor;
|
|
|
|
//
|
|
// hid attributes
|
|
//
|
|
HID_DEVICE_ATTRIBUTES Attributes;
|
|
|
|
//
|
|
// report descriptor
|
|
//
|
|
PUCHAR ReportDescriptor;
|
|
|
|
//
|
|
// device description
|
|
//
|
|
HIDP_DEVICE_DESC DeviceDescription;
|
|
|
|
//
|
|
// device relations
|
|
//
|
|
DEVICE_RELATIONS DeviceRelations;
|
|
|
|
}HIDCLASS_FDO_EXTENSION, *PHIDCLASS_FDO_EXTENSION;
|
|
|
|
typedef struct
|
|
{
|
|
//
|
|
// parts shared by fdo and pdo
|
|
//
|
|
HIDCLASS_COMMON_DEVICE_EXTENSION Common;
|
|
|
|
//
|
|
// device descriptor
|
|
//
|
|
HID_DEVICE_ATTRIBUTES Attributes;
|
|
|
|
//
|
|
// device capabilities
|
|
//
|
|
DEVICE_CAPABILITIES Capabilities;
|
|
|
|
//
|
|
// device description
|
|
//
|
|
HIDP_DEVICE_DESC DeviceDescription;
|
|
|
|
//
|
|
// collection index
|
|
//
|
|
ULONG CollectionIndex;
|
|
|
|
//
|
|
// device interface
|
|
//
|
|
UNICODE_STRING DeviceInterface;
|
|
}HIDCLASS_PDO_DEVICE_EXTENSION, *PHIDCLASS_PDO_DEVICE_EXTENSION;
|
|
|
|
|
|
/* fdo.c */
|
|
NTSTATUS
|
|
HidClassFDO_PnP(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp);
|
|
|
|
NTSTATUS
|
|
HidClassFDO_DispatchRequestSynchronous(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp);
|
|
|
|
/* pdo.c */
|
|
NTSTATUS
|
|
HidClassPDO_CreatePDO(
|
|
IN PDEVICE_OBJECT DeviceObject);
|
|
|
|
NTSTATUS
|
|
HidClassPDO_PnP(
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
IN PIRP Irp);
|
|
|
|
|
|
/* eof */
|