From ab7ce0c45ca18e7aa76836f6d56f47ebd24bfe2d Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Thu, 2 Jun 2011 19:13:51 +0000 Subject: [PATCH] [HIDPARSE] - Start of HID parser driver - Contains currently only stubs svn path=/branches/usb-bringup/; revision=52067 --- drivers/usb/CMakeLists.txt | 3 +- drivers/usb/hidparse/CMakeLists.txt | 14 + drivers/usb/hidparse/hidparse.c | 499 ++++++++++++++++++++++++++++ drivers/usb/hidparse/hidparse.h | 8 + drivers/usb/hidparse/hidparse.rc | 5 + drivers/usb/hidparse/hidparse.spec | 53 +++ include/ddk/hidpddi.h | 97 ++++++ 7 files changed, 678 insertions(+), 1 deletion(-) create mode 100644 drivers/usb/hidparse/CMakeLists.txt create mode 100644 drivers/usb/hidparse/hidparse.c create mode 100644 drivers/usb/hidparse/hidparse.h create mode 100644 drivers/usb/hidparse/hidparse.rc create mode 100644 drivers/usb/hidparse/hidparse.spec create mode 100644 include/ddk/hidpddi.h diff --git a/drivers/usb/CMakeLists.txt b/drivers/usb/CMakeLists.txt index 19d59674eb5..d208ed23e8b 100644 --- a/drivers/usb/CMakeLists.txt +++ b/drivers/usb/CMakeLists.txt @@ -1,6 +1,7 @@ - +add_subdirectory(hidparse) add_subdirectory(nt4compat) add_subdirectory(usbd) add_subdirectory(usbehci_new) add_subdirectory(usbhub_new) +add_subdirectory(usbohci) add_subdirectory(usbstor) \ No newline at end of file diff --git a/drivers/usb/hidparse/CMakeLists.txt b/drivers/usb/hidparse/CMakeLists.txt new file mode 100644 index 00000000000..a6740cc646f --- /dev/null +++ b/drivers/usb/hidparse/CMakeLists.txt @@ -0,0 +1,14 @@ + +spec2def(hidparse.sys hidparse.spec) +add_definitions(-DDEBUG_MODE) + +include_directories(${REACTOS_SOURCE_DIR}/ntoskrnl/include) + +add_library(hidparse SHARED hidparse.c hidparse.rc ${CMAKE_CURRENT_BINARY_DIR}/hidparse.def) + +set_module_type(hidparse kernelmodedriver) +add_importlibs(hidparse ntoskrnl) +add_cab_target(hidparse 2) + +add_cab_target(hidparse 2) +add_importlib_target(hidparse.spec) diff --git a/drivers/usb/hidparse/hidparse.c b/drivers/usb/hidparse/hidparse.c new file mode 100644 index 00000000000..c3cce18baa1 --- /dev/null +++ b/drivers/usb/hidparse/hidparse.c @@ -0,0 +1,499 @@ +/* + * PROJECT: ReactOS Universal Serial Bus Bulk Enhanced Host Controller Interface + * LICENSE: GPL - See COPYING in the top level directory + * FILE: drivers/usb/hidparse/hidparse.c + * PURPOSE: HID Parser + * PROGRAMMERS: + * Michael Martin (michael.martin@reactos.org) + * Johannes Anderwald (johannes.anderwald@reactos.org) + */ + +#include "hidparse.h" + + +VOID +HidP_FreeCollectionDescription ( + IN PHIDP_DEVICE_DESC DeviceDescription) +{ + DPRINT1("HidP_FreeCollectionDescription DeviceDescription %p\n", DeviceDescription); + + // + // free collection + // + ExFreePool(DeviceDescription->CollectionDesc); + + // + // free report ids + // + ExFreePool(DeviceDescription->ReportIDs); + + // + // free description itself + // + ExFreePool(DeviceDescription); + +} + +HIDAPI +NTSTATUS +NTAPI +HidP_GetButtonCaps( + HIDP_REPORT_TYPE ReportType, + PHIDP_BUTTON_CAPS ButtonCaps, + PUSHORT ButtonCapsLength, + PHIDP_PREPARSED_DATA PreparsedData) +{ + return HidP_GetSpecificButtonCaps(ReportType, 0, 0, 0, ButtonCaps, (PULONG)ButtonCapsLength, PreparsedData); +} + +HIDAPI +NTSTATUS +NTAPI +HidP_GetSpecificButtonCaps( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection, + IN USAGE Usage, + OUT PHIDP_BUTTON_CAPS ButtonCaps, + IN OUT PULONG ButtonCapsLength, + IN PHIDP_PREPARSED_DATA PreparsedData) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + + +HIDAPI +NTSTATUS +NTAPI +HidP_GetCaps( + IN PHIDP_PREPARSED_DATA PreparsedData, + OUT PHIDP_CAPS Capabilities) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +HidP_GetCollectionDescription( + IN PHIDP_REPORT_DESCRIPTOR ReportDesc, + IN ULONG DescLength, + IN POOL_TYPE PoolType, + OUT PHIDP_DEVICE_DESC DeviceDescription) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_GetData( + IN HIDP_REPORT_TYPE ReportType, + OUT PHIDP_DATA DataList, + IN OUT PULONG DataLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN PCHAR Report, + IN ULONG ReportLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_GetExtendedAttributes( + IN HIDP_REPORT_TYPE ReportType, + IN USHORT DataIndex, + IN PHIDP_PREPARSED_DATA PreparsedData, + OUT PHIDP_EXTENDED_ATTRIBUTES Attributes, + IN OUT PULONG LengthAttributes) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_GetLinkCollectionNodes( + OUT PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes, + IN OUT PULONG LinkCollectionNodesLength, + IN PHIDP_PREPARSED_DATA PreparsedData) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_GetScaledUsageValue( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection OPTIONAL, + IN USAGE Usage, + OUT PLONG UsageValue, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN PCHAR Report, + IN ULONG ReportLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_GetUsageValue( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection, + IN USAGE Usage, + OUT PULONG UsageValue, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN PCHAR Report, + IN ULONG ReportLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + + + +HIDAPI +NTSTATUS +NTAPI +HidP_UsageListDifference( + IN PUSAGE PreviousUsageList, + IN PUSAGE CurrentUsageList, + OUT PUSAGE BreakUsageList, + OUT PUSAGE MakeUsageList, + IN ULONG UsageListLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_GetSpecificValueCaps( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection, + IN USAGE Usage, + OUT PHIDP_VALUE_CAPS ValueCaps, + IN OUT PULONG ValueCapsLength, + IN PHIDP_PREPARSED_DATA PreparsedData) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +ULONG +NTAPI +HidP_MaxUsageListLength( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage OPTIONAL, + IN PHIDP_PREPARSED_DATA PreparsedData) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_GetUsages( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection OPTIONAL, + OUT USAGE *UsageList, + IN OUT ULONG *UsageLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN PCHAR Report, + IN ULONG ReportLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +HidP_SysPowerEvent ( + IN PCHAR HidPacket, + IN USHORT HidPacketLength, + IN PHIDP_PREPARSED_DATA Ppd, + OUT PULONG OutputBuffer) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +HidP_SysPowerCaps ( + IN PHIDP_PREPARSED_DATA Ppd, + OUT PULONG OutputBuffer) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_GetUsageValueArray( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection OPTIONAL, + IN USAGE Usage, + OUT PCHAR UsageValue, + IN USHORT UsageValueByteLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN PCHAR Report, + IN ULONG ReportLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_GetUsagesEx( + IN HIDP_REPORT_TYPE ReportType, + IN USHORT LinkCollection, + OUT PUSAGE_AND_PAGE ButtonList, + IN OUT ULONG *UsageLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN PCHAR Report, + IN ULONG ReportLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + + +HIDAPI +NTSTATUS +NTAPI +HidP_UsageAndPageListDifference( + IN PUSAGE_AND_PAGE PreviousUsageList, + IN PUSAGE_AND_PAGE CurrentUsageList, + OUT PUSAGE_AND_PAGE BreakUsageList, + OUT PUSAGE_AND_PAGE MakeUsageList, + IN ULONG UsageListLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_UnsetUsages( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection, + IN PUSAGE UsageList, + IN OUT PULONG UsageLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN OUT PCHAR Report, + IN ULONG ReportLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_TranslateUsagesToI8042ScanCodes( + IN PUSAGE ChangedUsageList, + IN ULONG UsageListLength, + IN HIDP_KEYBOARD_DIRECTION KeyAction, + IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState, + IN PHIDP_INSERT_SCANCODES InsertCodesProcedure, + IN PVOID InsertCodesContext) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_TranslateUsageAndPagesToI8042ScanCodes( + IN PUSAGE_AND_PAGE ChangedUsageList, + IN ULONG UsageListLength, + IN HIDP_KEYBOARD_DIRECTION KeyAction, + IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState, + IN PHIDP_INSERT_SCANCODES InsertCodesProcedure, + IN PVOID InsertCodesContext) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_SetUsages( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection, + IN PUSAGE UsageList, + IN OUT PULONG UsageLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN OUT PCHAR Report, + IN ULONG ReportLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_SetUsageValueArray( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection OPTIONAL, + IN USAGE Usage, + IN PCHAR UsageValue, + IN USHORT UsageValueByteLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + OUT PCHAR Report, + IN ULONG ReportLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_SetUsageValue( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection, + IN USAGE Usage, + IN ULONG UsageValue, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN OUT PCHAR Report, + IN ULONG ReportLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_SetScaledUsageValue( + IN HIDP_REPORT_TYPE ReportType, + IN USAGE UsagePage, + IN USHORT LinkCollection OPTIONAL, + IN USAGE Usage, + IN LONG UsageValue, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN OUT PCHAR Report, + IN ULONG ReportLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_SetData( + IN HIDP_REPORT_TYPE ReportType, + IN PHIDP_DATA DataList, + IN OUT PULONG DataLength, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN OUT PCHAR Report, + IN ULONG ReportLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +ULONG +NTAPI +HidP_MaxDataListLength( + IN HIDP_REPORT_TYPE ReportType, + IN PHIDP_PREPARSED_DATA PreparsedData) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_InitializeReportForID( + IN HIDP_REPORT_TYPE ReportType, + IN UCHAR ReportID, + IN PHIDP_PREPARSED_DATA PreparsedData, + IN OUT PCHAR Report, + IN ULONG ReportLength) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +HIDAPI +NTSTATUS +NTAPI +HidP_GetValueCaps( + HIDP_REPORT_TYPE ReportType, + PHIDP_VALUE_CAPS ValueCaps, + PULONG ValueCapsLength, + PHIDP_PREPARSED_DATA PreparsedData) +{ + UNIMPLEMENTED + ASSERT(FALSE); + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +DriverEntry( + IN PDRIVER_OBJECT DriverObject, + IN PUNICODE_STRING RegPath) +{ + + DPRINT1("********* HID PARSE *********\n"); + return STATUS_SUCCESS; +} diff --git a/drivers/usb/hidparse/hidparse.h b/drivers/usb/hidparse/hidparse.h new file mode 100644 index 00000000000..f0bc0d2c49b --- /dev/null +++ b/drivers/usb/hidparse/hidparse.h @@ -0,0 +1,8 @@ +#pragma once + +#define _HIDPI_ +#define _HIDPI_NO_FUNCTION_MACROS_ +#include +#include +#include +#include diff --git a/drivers/usb/hidparse/hidparse.rc b/drivers/usb/hidparse/hidparse.rc new file mode 100644 index 00000000000..3da21c341f6 --- /dev/null +++ b/drivers/usb/hidparse/hidparse.rc @@ -0,0 +1,5 @@ +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "USB HID Parser\0" +#define REACTOS_STR_INTERNAL_NAME "hidparse\0" +#define REACTOS_STR_ORIGINAL_FILENAME "hidparse.sys\0" +#include diff --git a/drivers/usb/hidparse/hidparse.spec b/drivers/usb/hidparse/hidparse.spec new file mode 100644 index 00000000000..2a3b1e85fd7 --- /dev/null +++ b/drivers/usb/hidparse/hidparse.spec @@ -0,0 +1,53 @@ +@ stdcall HidP_FreeCollectionDescription(ptr) +@ stdcall HidP_GetButtonCaps(long ptr ptr ptr) +@ stdcall HidP_GetCaps(ptr ptr) +@ stdcall HidP_GetCollectionDescription(ptr long long ptr) +@ stdcall HidP_GetData(long ptr ptr ptr ptr long) +@ stdcall HidP_GetExtendedAttributes(long long ptr ptr long) +@ stdcall HidP_GetLinkCollectionNodes(ptr ptr ptr) +@ stdcall HidP_GetScaledUsageValue(long long long long ptr ptr ptr long) +@ stdcall HidP_GetSpecificButtonCaps(long long long long ptr ptr ptr) +@ stdcall HidP_GetSpecificValueCaps(long long long long ptr ptr ptr) +@ stdcall HidP_GetUsageValue(long long long long ptr ptr ptr long) +@ stdcall HidP_GetUsageValueArray(long long long long ptr long ptr ptr long) +@ stdcall HidP_GetUsages(long long ptr ptr ptr ptr long) +@ stdcall HidP_GetUsagesEx(long long ptr ptr ptr ptr long) +@ stdcall HidP_GetValueCaps(long ptr ptr ptr) +@ stdcall HidP_InitializeReportForID(long long ptr ptr long) +@ stdcall HidP_MaxDataListLength(long ptr) +@ stdcall HidP_MaxUsageListLength(long long ptr) +@ stdcall HidP_SetData(long ptr ptr ptr ptr long) +@ stdcall HidP_SetScaledUsageValue(long long long long long ptr ptr long) +@ stdcall HidP_SetUsageValue(long long long long long ptr ptr long) +@ stdcall HidP_SetUsageValueArray(long long long long ptr long long ptr long) +@ stdcall HidP_SetUsages(long long long ptr ptr ptr ptr long) +@ stdcall HidP_SysPowerCaps(ptr ptr) +@ stdcall HidP_SysPowerEvent(ptr long ptr ptr) +@ stdcall HidP_TranslateUsageAndPagesToI8042ScanCodes(ptr long long ptr ptr ptr) +@ stdcall HidP_TranslateUsagesToI8042ScanCodes(ptr long long ptr ptr ptr) +@ stdcall HidP_UnsetUsages(long long long ptr ptr ptr ptr long) +@ stdcall HidP_UsageAndPageListDifference(ptr ptr ptr ptr long) +@ stdcall HidP_UsageListDifference(ptr ptr ptr ptr long) + + + + + + + + + + + + + + + + + + + + + + + diff --git a/include/ddk/hidpddi.h b/include/ddk/hidpddi.h new file mode 100644 index 00000000000..165b402a4a7 --- /dev/null +++ b/include/ddk/hidpddi.h @@ -0,0 +1,97 @@ +#ifndef _HIDPDDI_H +#define _HIDPDDI_H + +#include "hidusage.h" +#include "hidpi.h" + +typedef struct _HIDP_COLLECTION_DESC +{ + USAGE UsagePage; + USAGE Usage; + UCHAR CollectionNumber; + UCHAR Reserved [15]; + USHORT InputLength; + USHORT OutputLength; + USHORT FeatureLength; + USHORT PreparsedDataLength; + PHIDP_PREPARSED_DATA PreparsedData; +}HIDP_COLLECTION_DESC, *PHIDP_COLLECTION_DESC; + +typedef struct _HIDP_REPORT_IDS +{ + UCHAR ReportID; + UCHAR CollectionNumber; + USHORT InputLength; + USHORT OutputLength; + USHORT FeatureLength; +}HIDP_REPORT_IDS, *PHIDP_REPORT_IDS; + +typedef struct _HIDP_GETCOLDESC_DBG +{ + ULONG BreakOffset; + ULONG ErrorCode; + ULONG Args[6]; +}HIDP_GETCOLDESC_DBG, *PHIDP_GETCOLDESC_DBG; + +typedef struct _HIDP_DEVICE_DESC +{ + PHIDP_COLLECTION_DESC CollectionDesc; + ULONG CollectionDescLength; + PHIDP_REPORT_IDS ReportIDs; + ULONG ReportIDsLength; + HIDP_GETCOLDESC_DBG Dbg; +}HIDP_DEVICE_DESC, *PHIDP_DEVICE_DESC; + +NTSTATUS +HidP_GetCollectionDescription( + IN PHIDP_REPORT_DESCRIPTOR ReportDesc, + IN ULONG DescLength, + IN POOL_TYPE PoolType, + OUT PHIDP_DEVICE_DESC DeviceDescription +); + +VOID +HidP_FreeCollectionDescription ( + IN PHIDP_DEVICE_DESC DeviceDescription +); + +NTSTATUS +HidP_SysPowerEvent ( + IN PCHAR HidPacket, + IN USHORT HidPacketLength, + IN PHIDP_PREPARSED_DATA Ppd, + OUT PULONG OutputBuffer +); + +NTSTATUS +HidP_SysPowerCaps ( + IN PHIDP_PREPARSED_DATA Ppd, + OUT PULONG OutputBuffer +); + +#define HIDP_GETCOLDESC_SUCCESS 0x00 +#define HIDP_GETCOLDESC_RESOURCES 0x01 +#define HIDP_GETCOLDESC_BUFFER 0x02 +#define HIDP_GETCOLDESC_LINK_RESOURCES 0x03 +#define HIDP_GETCOLDESC_UNEXP_END_COL 0x04 +#define HIDP_GETCOLDESC_PREPARSE_RESOURCES 0x05 +#define HIDP_GETCOLDESC_ONE_BYTE 0x06 +#define HIDP_GETCOLDESC_TWO_BYTE 0x07 +#define HIDP_GETCOLDESC_FOUR_BYTE 0x08 +#define HIDP_GETCOLDESC_BYTE_ALLIGN 0x09 +#define HIDP_GETCOLDESC_MAIN_ITEM_NO_USAGE 0x0A +#define HIDP_GETCOLDESC_TOP_COLLECTION_USAGE 0x0B +#define HIDP_GETCOLDESC_PUSH_RESOURCES 0x10 +#define HIDP_GETCOLDESC_ITEM_UNKNOWN 0x12 +#define HIDP_GETCOLDESC_REPORT_ID 0x13 +#define HIDP_GETCOLDESC_BAD_REPORT_ID 0x14 +#define HIDP_GETCOLDESC_NO_REPORT_ID 0x15 +#define HIDP_GETCOLDESC_DEFAULT_ID_ERROR 0x16 +#define HIDP_GETCOLDESC_NO_DATA 0x1A +#define HIDP_GETCOLDESC_INVALID_MAIN_ITEM 0x1B +#define HIDP_GETCOLDESC_NO_CLOSE_DELIMITER 0x20 +#define HIDP_GETCOLDESC_NOT_VALID_DELIMITER 0x21 +#define HIDP_GETCOLDESC_MISMATCH_OC_DELIMITER 0x22 +#define HIDP_GETCOLDESC_UNSUPPORTED 0x40 + +#endif -- 2.17.1