[HIDPARSE]
authorJohannes Anderwald <johannes.anderwald@reactos.org>
Thu, 2 Jun 2011 19:13:51 +0000 (19:13 +0000)
committerJohannes Anderwald <johannes.anderwald@reactos.org>
Thu, 2 Jun 2011 19:13:51 +0000 (19:13 +0000)
- Start of HID parser driver
- Contains currently only stubs

svn path=/branches/usb-bringup/; revision=52067

drivers/usb/CMakeLists.txt
drivers/usb/hidparse/CMakeLists.txt [new file with mode: 0644]
drivers/usb/hidparse/hidparse.c [new file with mode: 0644]
drivers/usb/hidparse/hidparse.h [new file with mode: 0644]
drivers/usb/hidparse/hidparse.rc [new file with mode: 0644]
drivers/usb/hidparse/hidparse.spec [new file with mode: 0644]
include/ddk/hidpddi.h [new file with mode: 0644]

index 19d5967..d208ed2 100644 (file)
@@ -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 (file)
index 0000000..a6740cc
--- /dev/null
@@ -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 (file)
index 0000000..c3cce18
--- /dev/null
@@ -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 (file)
index 0000000..f0bc0d2
--- /dev/null
@@ -0,0 +1,8 @@
+#pragma once
+
+#define _HIDPI_
+#define _HIDPI_NO_FUNCTION_MACROS_
+#include <ntddk.h>
+#include <hidpddi.h>
+#include <hidpi.h>
+#include <debug.h>
diff --git a/drivers/usb/hidparse/hidparse.rc b/drivers/usb/hidparse/hidparse.rc
new file mode 100644 (file)
index 0000000..3da21c3
--- /dev/null
@@ -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 <reactos/version.rc>
diff --git a/drivers/usb/hidparse/hidparse.spec b/drivers/usb/hidparse/hidparse.spec
new file mode 100644 (file)
index 0000000..2a3b1e8
--- /dev/null
@@ -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 (file)
index 0000000..165b402
--- /dev/null
@@ -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