home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / hidpi.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  15KB  |  605 lines

  1. /*
  2.  * hidpi.h
  3.  *
  4.  * Public Interface for HID parsing library.
  5.  *
  6.  * This file is part of the w32api package.
  7.  *
  8.  * Contributors:
  9.  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
  10.  *
  11.  * THIS SOFTWARE IS NOT COPYRIGHTED
  12.  *
  13.  * This source code is offered for use in the public domain. You may
  14.  * use, modify or distribute it freely.
  15.  *
  16.  * This code is distributed in the hope that it will be useful but
  17.  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18.  * DISCLAIMED. This includes but is not limited to warranties of
  19.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20.  *
  21.  */
  22.  
  23. #ifndef __HIDPI_H
  24. #define __HIDPI_H
  25.  
  26. #if __GNUC__ >=3
  27. #pragma GCC system_header
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #include "ntddk.h"
  35. #include "hidusage.h"
  36.  
  37. #if defined(_HIDPI_)
  38.   #define HIDAPI DECLSPEC_EXPORT
  39. #else
  40.   #define HIDAPI DECLSPEC_IMPORT
  41. #endif
  42.  
  43. typedef PUCHAR PHIDP_REPORT_DESCRIPTOR;
  44. typedef struct _HIDP_PREPARSED_DATA * PHIDP_PREPARSED_DATA;
  45.  
  46. typedef struct _HIDP_UNKNOWN_TOKEN {
  47.   UCHAR  Token;
  48.   UCHAR  Reserved[3];
  49.   ULONG  BitField;
  50. } HIDP_UNKNOWN_TOKEN, *PHIDP_UNKNOWN_TOKEN;
  51.  
  52. typedef enum _HIDP_KEYBOARD_DIRECTION {
  53.   HidP_Keyboard_Break,
  54.   HidP_Keyboard_Make
  55. } HIDP_KEYBOARD_DIRECTION;
  56.  
  57. typedef struct _HIDP_KEYBOARD_MODIFIER_STATE {
  58.   _ANONYMOUS_UNION union {
  59.     _ANONYMOUS_STRUCT struct {
  60.       ULONG  LeftControl : 1;
  61.       ULONG  LeftShift : 1;
  62.       ULONG  LeftAlt : 1;
  63.       ULONG  LeftGUI : 1;
  64.       ULONG  RightControl : 1;
  65.       ULONG  RightShift : 1;
  66.       ULONG  RightAlt : 1;
  67.       ULONG  RigthGUI : 1;
  68.       ULONG  CapsLock : 1;
  69.       ULONG  ScollLock : 1;
  70.       ULONG  NumLock : 1;
  71.       ULONG  Reserved : 21;
  72.     } DUMMYSTRUCTNAME;
  73.     ULONG ul;
  74.   } DUMMYUNIONNAME;
  75. } HIDP_KEYBOARD_MODIFIER_STATE, *PHIDP_KEYBOARD_MODIFIER_STATE;
  76.  
  77. typedef BOOLEAN (DDKAPI *PHIDP_INSERT_SCANCODES)(
  78.   IN PVOID  Context,
  79.   IN PCHAR  NewScanCodes,
  80.   IN ULONG  Length);
  81.  
  82. typedef struct _USAGE_AND_PAGE {
  83.   USAGE  Usage;
  84.   USAGE  UsagePage;
  85. } USAGE_AND_PAGE, *PUSAGE_AND_PAGE;
  86.  
  87. HIDAPI
  88. NTSTATUS
  89. DDKAPI
  90. HidP_TranslateUsageAndPagesToI8042ScanCodes(
  91.   IN PUSAGE_AND_PAGE  ChangedUsageList,
  92.   IN ULONG  UsageListLength,
  93.   IN HIDP_KEYBOARD_DIRECTION  KeyAction,
  94.   IN OUT PHIDP_KEYBOARD_MODIFIER_STATE  ModifierState,
  95.   IN PHIDP_INSERT_SCANCODES  InsertCodesProcedure,
  96.   IN PVOID  InsertCodesContext);
  97.  
  98. HIDAPI
  99. NTSTATUS
  100. DDKAPI
  101. HidP_TranslateUsagesToI8042ScanCodes(
  102.   IN PUSAGE  ChangedUsageList,
  103.   IN ULONG  UsageListLength,
  104.   IN HIDP_KEYBOARD_DIRECTION  KeyAction,
  105.   IN OUT PHIDP_KEYBOARD_MODIFIER_STATE  ModifierState,
  106.   IN PHIDP_INSERT_SCANCODES  InsertCodesProcedure,
  107.   IN PVOID  InsertCodesContext);
  108.  
  109. typedef struct _HIDP_BUTTON_CAPS {
  110.   USAGE  UsagePage;
  111.   UCHAR  ReportID;
  112.   BOOLEAN  IsAlias;
  113.   USHORT  BitField;
  114.   USHORT  LinkCollection;
  115.   USAGE  LinkUsage;
  116.   USAGE  LinkUsagePage;
  117.   BOOLEAN  IsRange;
  118.   BOOLEAN  IsStringRange;
  119.   BOOLEAN  IsDesignatorRange;
  120.   BOOLEAN  IsAbsolute;
  121.   ULONG  Reserved[10];
  122.   _ANONYMOUS_UNION union {
  123.     struct {
  124.       USAGE  UsageMin, UsageMax;
  125.       USHORT  StringMin, StringMax;
  126.       USHORT  DesignatorMin, DesignatorMax;
  127.       USHORT  DataIndexMin, DataIndexMax;
  128.     } Range;
  129.     struct  {
  130.        USAGE  Usage, Reserved1;
  131.        USHORT  StringIndex, Reserved2;
  132.        USHORT  DesignatorIndex, Reserved3;
  133.        USHORT  DataIndex, Reserved4;
  134.     } NotRange;
  135.   } DUMMYUNIONNAME;
  136. } HIDP_BUTTON_CAPS, *PHIDP_BUTTON_CAPS;
  137.  
  138. typedef struct _HIDP_CAPS {
  139.   USAGE  Usage;
  140.   USAGE  UsagePage;
  141.   USHORT  InputReportByteLength;
  142.   USHORT  OutputReportByteLength;
  143.   USHORT  FeatureReportByteLength;
  144.   USHORT  Reserved[17];
  145.   USHORT  NumberLinkCollectionNodes;
  146.   USHORT  NumberInputButtonCaps;
  147.   USHORT  NumberInputValueCaps;
  148.   USHORT  NumberInputDataIndices;
  149.   USHORT  NumberOutputButtonCaps;
  150.   USHORT  NumberOutputValueCaps;
  151.   USHORT  NumberOutputDataIndices;
  152.   USHORT  NumberFeatureButtonCaps;
  153.   USHORT  NumberFeatureValueCaps;
  154.   USHORT  NumberFeatureDataIndices;
  155. } HIDP_CAPS, *PHIDP_CAPS;
  156.  
  157. typedef struct _HIDP_DATA {
  158.   USHORT  DataIndex;
  159.   USHORT  Reserved;
  160.   _ANONYMOUS_UNION union {
  161.     ULONG  RawValue;
  162.     BOOLEAN  On;
  163.   }  DUMMYUNIONNAME;
  164. } HIDP_DATA, *PHIDP_DATA;
  165.  
  166. typedef struct _HIDP_EXTENDED_ATTRIBUTES {
  167.   UCHAR  NumGlobalUnknowns;
  168.   UCHAR  Reserved[3];
  169.   PHIDP_UNKNOWN_TOKEN  GlobalUnknowns;
  170.   ULONG  Data[1];
  171. } HIDP_EXTENDED_ATTRIBUTES, *PHIDP_EXTENDED_ATTRIBUTES;
  172.  
  173. #define HIDP_LINK_COLLECTION_ROOT         ((USHORT) -1)
  174. #define HIDP_LINK_COLLECTION_UNSPECIFIED  ((USHORT) 0)
  175.  
  176. typedef struct _HIDP_LINK_COLLECTION_NODE {
  177.   USAGE  LinkUsage;
  178.   USAGE  LinkUsagePage;
  179.   USHORT  Parent;
  180.   USHORT  NumberOfChildren;
  181.   USHORT  NextSibling;
  182.   USHORT  FirstChild;
  183.   ULONG  CollectionType: 8;
  184.   ULONG  IsAlias: 1;
  185.   ULONG  Reserved: 23;
  186.   PVOID  UserContext;
  187. } HIDP_LINK_COLLECTION_NODE, *PHIDP_LINK_COLLECTION_NODE;
  188.  
  189. typedef struct _HIDP_VALUE_CAPS {
  190.   USAGE  UsagePage;
  191.   UCHAR  ReportID;
  192.   BOOLEAN  IsAlias;
  193.   USHORT  BitField;
  194.   USHORT  LinkCollection;
  195.   USAGE  LinkUsage;
  196.   USAGE  LinkUsagePage;
  197.   BOOLEAN  IsRange;
  198.   BOOLEAN  IsStringRange;
  199.   BOOLEAN  IsDesignatorRange;
  200.   BOOLEAN  IsAbsolute;
  201.   BOOLEAN  HasNull;
  202.   UCHAR  Reserved;
  203.   USHORT  BitSize;
  204.   USHORT  ReportCount;
  205.   USHORT  Reserved2[5];
  206.   ULONG  UnitsExp;
  207.   ULONG  Units;
  208.   LONG  LogicalMin, LogicalMax;
  209.   LONG  PhysicalMin, PhysicalMax;
  210.     _ANONYMOUS_UNION union {
  211.       struct {
  212.         USAGE  UsageMin, UsageMax;
  213.         USHORT  StringMin, StringMax;
  214.         USHORT  DesignatorMin, DesignatorMax;
  215.         USHORT  DataIndexMin, DataIndexMax;
  216.       } Range;
  217.       struct {
  218.         USAGE  Usage, Reserved1;
  219.         USHORT  StringIndex, Reserved2;
  220.         USHORT  DesignatorIndex, Reserved3;
  221.         USHORT  DataIndex, Reserved4;
  222.       } NotRange;
  223.     } DUMMYUNIONNAME;
  224. } HIDP_VALUE_CAPS, *PHIDP_VALUE_CAPS;
  225.  
  226. typedef enum _HIDP_REPORT_TYPE {
  227.   HidP_Input,
  228.   HidP_Output,
  229.   HidP_Feature
  230. } HIDP_REPORT_TYPE;
  231.  
  232. #define FACILITY_HID_ERROR_CODE           0x11
  233.  
  234. #define HIDP_ERROR_CODES(SEV, CODE) \
  235.   ((NTSTATUS) (((SEV) << 28) | (FACILITY_HID_ERROR_CODE << 16) | (CODE)))
  236.  
  237. #define HIDP_STATUS_SUCCESS                 (HIDP_ERROR_CODES(0x0, 0))
  238. #define HIDP_STATUS_NULL                    (HIDP_ERROR_CODES(0x8, 1))
  239. #define HIDP_STATUS_INVALID_PREPARSED_DATA  (HIDP_ERROR_CODES(0xC, 1))
  240. #define HIDP_STATUS_INVALID_REPORT_TYPE     (HIDP_ERROR_CODES(0xC, 2))
  241. #define HIDP_STATUS_INVALID_REPORT_LENGTH   (HIDP_ERROR_CODES(0xC, 3))
  242. #define HIDP_STATUS_USAGE_NOT_FOUND         (HIDP_ERROR_CODES(0xC, 4))
  243. #define HIDP_STATUS_VALUE_OUT_OF_RANGE      (HIDP_ERROR_CODES(0xC, 5))
  244. #define HIDP_STATUS_BAD_LOG_PHY_VALUES      (HIDP_ERROR_CODES(0xC, 6))
  245. #define HIDP_STATUS_BUFFER_TOO_SMALL        (HIDP_ERROR_CODES(0xC, 7))
  246. #define HIDP_STATUS_INTERNAL_ERROR          (HIDP_ERROR_CODES(0xC, 8))
  247. #define HIDP_STATUS_I8042_TRANS_UNKNOWN     (HIDP_ERROR_CODES(0xC, 9))
  248. #define HIDP_STATUS_INCOMPATIBLE_REPORT_ID  (HIDP_ERROR_CODES(0xC, 0xA))
  249. #define HIDP_STATUS_NOT_VALUE_ARRAY         (HIDP_ERROR_CODES(0xC, 0xB))
  250. #define HIDP_STATUS_IS_VALUE_ARRAY          (HIDP_ERROR_CODES(0xC, 0xC))
  251. #define HIDP_STATUS_DATA_INDEX_NOT_FOUND    (HIDP_ERROR_CODES(0xC, 0xD))
  252. #define HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE (HIDP_ERROR_CODES(0xC, 0xE))
  253. #define HIDP_STATUS_BUTTON_NOT_PRESSED      (HIDP_ERROR_CODES(0xC, 0xF))
  254. #define HIDP_STATUS_REPORT_DOES_NOT_EXIST   (HIDP_ERROR_CODES(0xC, 0x10))
  255. #define HIDP_STATUS_NOT_IMPLEMENTED         (HIDP_ERROR_CODES(0xC, 0x20))
  256. #define HIDP_STATUS_I8242_TRANS_UNKNOWN     HIDP_STATUS_I8042_TRANS_UNKNOWN
  257.  
  258.  
  259.  
  260. /*
  261.  * NTSTATUS
  262.  * HidP_GetButtonCaps(
  263.  *   IN HIDP_REPORT_TYPE  ReportType,
  264.  *   OUT PHIDP_BUTTON_CAPS  ButtonCaps,
  265.  *   IN OUT PULONG  ButtonCapsLength,
  266.  *   IN PHIDP_PREPARSED_DATA  PreparsedData);
  267.  */
  268. #define HidP_GetButtonCaps(_Type_, _Caps_, _Len_, _Data_) \
  269.   HidP_GetSpecificButtonCaps(_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)
  270.  
  271. /*
  272.  * NTSTATUS
  273.  * HidP_GetButtons(
  274.  *   IN HIDP_REPORT_TYPE  ReportType,
  275.  *   IN USAGE  UsagePage,
  276.  *   IN USHORT  LinkCollection,
  277.  *   OUT USAGE  *UsageList,
  278.  *   IN OUT ULONG  *UsageLength,
  279.  *   IN PHIDP_PREPARSED_DATA  PreparsedData,
  280.  *   IN PCHAR  Report,
  281.  *   IN ULONG  ReportLength);
  282.  */
  283. #define HidP_GetButtons(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe) \
  284.   HidP_GetUsages(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe)
  285.  
  286. #define HidP_GetButtonListLength(RTy, UPa, Ppd) \
  287.   HidP_GetUsageListLength(Rty, UPa, Ppd)
  288.  
  289.  
  290. /*
  291.  * NTSTATUS
  292.  * HidP_GetButtonsEx(
  293.  *   IN HIDP_REPORT_TYPE  ReportType,
  294.  *   IN USHORT  LinkCollection,
  295.  *   OUT PUSAGE_AND_PAGE  ButtonList,
  296.  *   IN OUT ULONG  *UsageLength,
  297.  *   IN PHIDP_PREPARSED_DATA  PreparsedData,
  298.  *   IN PCHAR  Report,
  299.  *   IN ULONG  ReportLength);
  300.  */
  301. #define HidP_GetButtonsEx(RT, LC, BL, UL, PD, R, RL)  \
  302.   HidP_GetUsagesEx(RT, LC, BL, UL, PD, R, RL)
  303.  
  304. HIDAPI
  305. NTSTATUS
  306. DDKAPI
  307. HidP_GetCaps(
  308.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  309.   OUT PHIDP_CAPS  Capabilities);
  310.  
  311. HIDAPI
  312. NTSTATUS
  313. DDKAPI
  314. HidP_GetData(
  315.   IN HIDP_REPORT_TYPE  ReportType,
  316.   OUT PHIDP_DATA  DataList,
  317.   IN OUT PULONG  DataLength,
  318.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  319.   IN PCHAR  Report,
  320.   IN ULONG  ReportLength);
  321.  
  322. HIDAPI
  323. NTSTATUS
  324. DDKAPI
  325. HidP_GetExtendedAttributes(
  326.   IN HIDP_REPORT_TYPE  ReportType,
  327.   IN USHORT  DataIndex,
  328.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  329.   OUT PHIDP_EXTENDED_ATTRIBUTES  Attributes,
  330.   IN OUT PULONG  LengthAttributes);
  331.  
  332. HIDAPI
  333. NTSTATUS
  334. DDKAPI
  335. HidP_GetLinkCollectionNodes(
  336.   OUT PHIDP_LINK_COLLECTION_NODE  LinkCollectionNodes,
  337.   IN OUT PULONG  LinkCollectionNodesLength,
  338.   IN PHIDP_PREPARSED_DATA  PreparsedData);
  339.  
  340. HIDAPI
  341. NTSTATUS
  342. DDKAPI
  343. HidP_GetScaledUsageValue(
  344.   IN HIDP_REPORT_TYPE  ReportType,
  345.   IN USAGE  UsagePage,
  346.   IN USHORT  LinkCollection  OPTIONAL,
  347.   IN USAGE  Usage,
  348.   OUT PLONG  UsageValue,
  349.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  350.   IN PCHAR  Report,
  351.   IN ULONG  ReportLength);
  352.  
  353. HIDAPI
  354. NTSTATUS
  355. DDKAPI
  356. HidP_GetSpecificButtonCaps(
  357.   IN HIDP_REPORT_TYPE  ReportType,
  358.   IN USAGE  UsagePage,
  359.   IN USHORT  LinkCollection,
  360.   IN USAGE  Usage,
  361.   OUT PHIDP_BUTTON_CAPS  ButtonCaps,
  362.   IN OUT PULONG  ButtonCapsLength,
  363.   IN PHIDP_PREPARSED_DATA  PreparsedData);
  364.  
  365. HIDAPI
  366. NTSTATUS
  367. DDKAPI
  368. HidP_GetSpecificValueCaps(
  369.   IN HIDP_REPORT_TYPE  ReportType,
  370.   IN USAGE  UsagePage,
  371.   IN USHORT  LinkCollection,
  372.   IN USAGE  Usage,
  373.   OUT PHIDP_VALUE_CAPS  ValueCaps,
  374.   IN OUT PULONG  ValueCapsLength,
  375.   IN PHIDP_PREPARSED_DATA  PreparsedData);
  376.  
  377. HIDAPI
  378. NTSTATUS
  379. DDKAPI
  380. HidP_GetUsages(
  381.   IN HIDP_REPORT_TYPE  ReportType,
  382.   IN USAGE  UsagePage,
  383.   IN USHORT  LinkCollection  OPTIONAL,
  384.   OUT USAGE  *UsageList,
  385.   IN OUT ULONG  *UsageLength,
  386.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  387.   IN PCHAR  Report,
  388.   IN ULONG  ReportLength);
  389.  
  390. HIDAPI
  391. NTSTATUS
  392. DDKAPI
  393. HidP_GetUsagesEx(
  394.   IN HIDP_REPORT_TYPE  ReportType,
  395.   IN USHORT  LinkCollection,
  396.   OUT PUSAGE_AND_PAGE  ButtonList,
  397.   IN OUT ULONG  *UsageLength,
  398.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  399.   IN PCHAR  Report,
  400.   IN ULONG  ReportLength);
  401.  
  402. HIDAPI
  403. NTSTATUS
  404. DDKAPI
  405. HidP_GetUsageValue(
  406.   IN HIDP_REPORT_TYPE  ReportType,
  407.   IN USAGE  UsagePage,
  408.   IN USHORT  LinkCollection,
  409.   IN USAGE  Usage,
  410.   OUT PULONG  UsageValue,
  411.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  412.   IN PCHAR  Report,
  413.   IN ULONG  ReportLength);
  414.  
  415. HIDAPI
  416. NTSTATUS
  417. DDKAPI
  418. HidP_GetUsageValueArray(
  419.   IN HIDP_REPORT_TYPE  ReportType,
  420.   IN USAGE  UsagePage,
  421.   IN USHORT  LinkCollection  OPTIONAL,
  422.   IN USAGE  Usage,
  423.   OUT PCHAR  UsageValue,
  424.   IN USHORT  UsageValueByteLength,
  425.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  426.   IN PCHAR  Report,
  427.   IN ULONG  ReportLength);
  428.  
  429. /*
  430.  * NTSTATUS
  431.  * HidP_GetValueCaps(
  432.  *   IN HIDP_REPORT_TYPE  ReportType,
  433.  *   OUT PHIDP_VALUE_CAPS  ValueCaps,
  434.  *   IN OUT PULONG  ValueCapsLength,
  435.  *   IN PHIDP_PREPARSED_DATA  PreparsedData);
  436.  */
  437. #define HidP_GetValueCaps(_Type_, _Caps_, _Len_, _Data_) \
  438.   HidP_GetSpecificValueCaps (_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)
  439.  
  440. HIDAPI
  441. NTSTATUS
  442. DDKAPI
  443. HidP_InitializeReportForID(
  444.   IN HIDP_REPORT_TYPE  ReportType,
  445.   IN UCHAR  ReportID,
  446.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  447.   IN OUT PCHAR  Report,
  448.   IN ULONG  ReportLength);
  449.  
  450. /*
  451.  * BOOLEAN
  452.  * HidP_IsSameUsageAndPage(
  453.  *   USAGE_AND_PAGE  u1,
  454.  *   USAGE_AND_PAGE  u2);
  455.  */
  456. #define HidP_IsSameUsageAndPage(u1, u2) ((* (PULONG) &u1) == (* (PULONG) &u2))
  457.  
  458. HIDAPI
  459. ULONG
  460. DDKAPI
  461. HidP_MaxDataListLength(
  462.   IN HIDP_REPORT_TYPE  ReportType,
  463.   IN PHIDP_PREPARSED_DATA  PreparsedData);
  464.  
  465. HIDAPI
  466. ULONG
  467. DDKAPI
  468. HidP_MaxUsageListLength(
  469.   IN HIDP_REPORT_TYPE  ReportType,
  470.   IN USAGE  UsagePage  OPTIONAL,
  471.   IN PHIDP_PREPARSED_DATA  PreparsedData);
  472.  
  473. /*
  474.  * NTSTATUS
  475.  * HidP_SetButtons(
  476.  *   IN HIDP_REPORT_TYPE  ReportType,
  477.  *   IN USAGE  UsagePage,
  478.  *   IN USHORT  LinkCollection,
  479.  *   IN PUSAGE  UsageList,
  480.  *   IN OUT PULONG  UsageLength,
  481.  *   IN PHIDP_PREPARSED_DATA  PreparsedData,
  482.  *   IN OUT PCHAR  Report,
  483.  *   IN ULONG  ReportLength);
  484.  */
  485. #define HidP_SetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
  486.   HidP_SetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)
  487.  
  488. HIDAPI
  489. NTSTATUS
  490. DDKAPI
  491. HidP_SetData(
  492.   IN HIDP_REPORT_TYPE  ReportType,
  493.   IN PHIDP_DATA  DataList,
  494.   IN OUT PULONG  DataLength,
  495.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  496.   IN OUT PCHAR  Report,
  497.   IN ULONG  ReportLength);
  498.  
  499. HIDAPI
  500. NTSTATUS
  501. DDKAPI
  502. HidP_SetScaledUsageValue(
  503.   IN HIDP_REPORT_TYPE  ReportType,
  504.   IN USAGE  UsagePage, 
  505.   IN USHORT  LinkCollection  OPTIONAL,
  506.   IN USAGE  Usage,
  507.   IN LONG  UsageValue,
  508.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  509.   IN OUT PCHAR  Report,
  510.   IN ULONG  ReportLength);
  511.  
  512. HIDAPI
  513. NTSTATUS
  514. DDKAPI
  515. HidP_SetUsages(
  516.   IN HIDP_REPORT_TYPE  ReportType,
  517.   IN USAGE  UsagePage,
  518.   IN USHORT  LinkCollection, /* Optional */
  519.   IN PUSAGE  UsageList,
  520.   IN OUT PULONG  UsageLength,
  521.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  522.   IN OUT PCHAR  Report,
  523.   IN ULONG  ReportLength);
  524.  
  525. HIDAPI
  526. NTSTATUS
  527. DDKAPI
  528. HidP_SetUsageValue(
  529.   IN HIDP_REPORT_TYPE  ReportType,
  530.   IN USAGE  UsagePage,
  531.   IN USHORT  LinkCollection,
  532.   IN USAGE  Usage,
  533.   IN ULONG  UsageValue,
  534.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  535.   IN OUT PCHAR  Report,
  536.   IN ULONG  ReportLength);
  537.  
  538. HIDAPI
  539. NTSTATUS
  540. DDKAPI
  541. HidP_SetUsageValueArray(
  542.   IN HIDP_REPORT_TYPE  ReportType,
  543.   IN USAGE  UsagePage,
  544.   IN USHORT  LinkCollection  OPTIONAL,
  545.   IN USAGE  Usage,
  546.   IN PCHAR  UsageValue,
  547.   IN USHORT  UsageValueByteLength,
  548.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  549.   OUT PCHAR  Report,
  550.   IN ULONG  ReportLength);
  551.  
  552. /*
  553.  * NTSTATUS
  554.  * HidP_UnsetButtons(
  555.  *   IN HIDP_REPORT_TYPE  ReportType,
  556.  *   IN USAGE  UsagePage,
  557.  *   IN USHORT  LinkCollection,
  558.  *   IN PUSAGE  UsageList,
  559.  *   IN OUT PULONG  UsageLength,
  560.  *   IN PHIDP_PREPARSED_DATA  PreparsedData,
  561.  *   IN OUT PCHAR  Report,
  562.  *   IN ULONG  ReportLength);
  563.  */
  564. #define HidP_UnsetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
  565.   HidP_UnsetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)
  566.  
  567. HIDAPI
  568. NTSTATUS
  569. DDKAPI
  570. HidP_UnsetUsages(
  571.   IN HIDP_REPORT_TYPE  ReportType,
  572.   IN USAGE  UsagePage,
  573.   IN USHORT  LinkCollection,
  574.   IN PUSAGE  UsageList,
  575.   IN OUT PULONG  UsageLength,
  576.   IN PHIDP_PREPARSED_DATA  PreparsedData,
  577.   IN OUT PCHAR  Report,
  578.   IN ULONG  ReportLength);
  579.  
  580. HIDAPI
  581. NTSTATUS
  582. DDKAPI
  583. HidP_UsageAndPageListDifference(
  584.   IN PUSAGE_AND_PAGE  PreviousUsageList,
  585.   IN PUSAGE_AND_PAGE  CurrentUsageList,
  586.   OUT PUSAGE_AND_PAGE  BreakUsageList,
  587.   OUT PUSAGE_AND_PAGE  MakeUsageList,
  588.   IN ULONG  UsageListLength);
  589.  
  590. HIDAPI
  591. NTSTATUS
  592. DDKAPI
  593. HidP_UsageListDifference(
  594.   IN PUSAGE  PreviousUsageList,
  595.   IN PUSAGE  CurrentUsageList,
  596.   OUT PUSAGE  BreakUsageList,
  597.   OUT PUSAGE  MakeUsageList,
  598.   IN ULONG  UsageListLength);
  599.  
  600. #ifdef __cplusplus
  601. }
  602. #endif
  603.  
  604. #endif /* __HIDPI_H */
  605.