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