mirror of
https://github.com/reactos/reactos.git
synced 2024-07-10 22:55:05 +00:00
a64411cfbf
- Implement HidClassFDO_DeviceRelations - Implement IOCTL_HID_GET_COLLECTION_INFORMATION, IOCTL_HID_GET_COLLECTION_DESCRIPTOR - Implement IRP_MN_QUERY_ID, IRP_MN_QUERY_CAPABILITIES, IRP_MN_QUERY_BUS_INFORMATION, IRP_MN_QUERY_PNP_STATE, IRP_MN_QUERY_DEVICE_RELATIONS, - HIDClass PDO is now created and starts initialization, needs IRP_MN_START_DEVICE request implementation - Tested in Vbox 4.1.4 + WinXP + ReactOS hidusb,hidmou,hidclass svn path=/branches/usb-bringup/; revision=54791
137 lines
2.3 KiB
C
137 lines
2.3 KiB
C
#pragma once
|
|
|
|
#define _HIDPI_NO_FUNCTION_MACROS_
|
|
#include <ntddk.h>
|
|
#include <hidport.h>
|
|
#include <hidpddi.h>
|
|
#include <stdio.h>
|
|
#include <initguid.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;
|
|
|
|
}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 */
|