Reactos
at master 537 lines 12 kB view raw
1#define _HIDPI_ 2#define _HIDPI_NO_FUNCTION_MACROS_ 3#include <ntddk.h> 4#include <hidpddi.h> 5 6#include "hidparser.h" 7#include "hidp.h" 8 9#define UNIMPLEMENTED DebugFunction("%s is UNIMPLEMENTED\n", __FUNCTION__) 10 11VOID 12NTAPI 13HidP_FreeCollectionDescription( 14 IN PHIDP_DEVICE_DESC DeviceDescription) 15{ 16 // 17 // free collection 18 // 19 HidParser_FreeCollectionDescription(DeviceDescription); 20} 21 22 23HIDAPI 24NTSTATUS 25NTAPI 26HidP_GetCaps( 27 IN PHIDP_PREPARSED_DATA PreparsedData, 28 OUT PHIDP_CAPS Capabilities) 29{ 30 // 31 // get caps 32 // 33 return HidParser_GetCaps(PreparsedData, Capabilities); 34} 35 36NTSTATUS 37TranslateStatusForUpperLayer( 38 IN NTSTATUS Status) 39{ 40 // 41 // now we are handling only this values, for others just return 42 // status as it is. 43 // 44 switch (Status) 45 { 46 case HIDP_STATUS_INTERNAL_ERROR: 47 return STATUS_INSUFFICIENT_RESOURCES; 48 case HIDP_STATUS_INVALID_REPORT_TYPE: 49 return HIDP_STATUS_INVALID_REPORT_TYPE; 50 case HIDP_STATUS_BUFFER_TOO_SMALL: 51 return STATUS_BUFFER_TOO_SMALL; 52 case HIDP_STATUS_USAGE_NOT_FOUND: 53 return STATUS_NO_DATA_DETECTED; 54 default: 55 return Status; 56 } 57} 58 59NTSTATUS 60NTAPI 61HidP_GetCollectionDescription( 62 IN PHIDP_REPORT_DESCRIPTOR ReportDesc, 63 IN ULONG DescLength, 64 IN POOL_TYPE PoolType, 65 OUT PHIDP_DEVICE_DESC DeviceDescription) 66{ 67 NTSTATUS Status; 68 69 // 70 // get description; 71 // 72 Status = HidParser_GetCollectionDescription(ReportDesc, DescLength, PoolType, DeviceDescription); 73 return TranslateStatusForUpperLayer(Status); 74} 75 76HIDAPI 77ULONG 78NTAPI 79HidP_MaxUsageListLength( 80 IN HIDP_REPORT_TYPE ReportType, 81 IN USAGE UsagePage OPTIONAL, 82 IN PHIDP_PREPARSED_DATA PreparsedData) 83{ 84 // 85 // sanity check 86 // 87 ASSERT(ReportType == HidP_Input || ReportType == HidP_Output || ReportType == HidP_Feature); 88 89 // 90 // get usage length 91 // 92 return HidParser_MaxUsageListLength(PreparsedData, ReportType, UsagePage); 93} 94 95HIDAPI 96NTSTATUS 97NTAPI 98HidP_GetSpecificValueCaps( 99 IN HIDP_REPORT_TYPE ReportType, 100 IN USAGE UsagePage, 101 IN USHORT LinkCollection, 102 IN USAGE Usage, 103 OUT PHIDP_VALUE_CAPS ValueCaps, 104 IN OUT PUSHORT ValueCapsLength, 105 IN PHIDP_PREPARSED_DATA PreparsedData) 106{ 107 // 108 // sanity check 109 // 110 ASSERT(ReportType == HidP_Input || ReportType == HidP_Output || ReportType == HidP_Feature); 111 112 // 113 // get value caps 114 // 115 return HidParser_GetSpecificValueCaps(PreparsedData, ReportType, UsagePage, LinkCollection, Usage, ValueCaps, ValueCapsLength); 116} 117 118HIDAPI 119NTSTATUS 120NTAPI 121HidP_GetUsages( 122 IN HIDP_REPORT_TYPE ReportType, 123 IN USAGE UsagePage, 124 IN USHORT LinkCollection OPTIONAL, 125 OUT PUSAGE UsageList, 126 IN OUT PULONG UsageLength, 127 IN PHIDP_PREPARSED_DATA PreparsedData, 128 IN PCHAR Report, 129 IN ULONG ReportLength) 130{ 131 // 132 // sanity check 133 // 134 ASSERT(ReportType == HidP_Input || ReportType == HidP_Output || ReportType == HidP_Feature); 135 136 // 137 // get usages 138 // 139 return HidParser_GetUsages(PreparsedData, ReportType, UsagePage, LinkCollection, UsageList, UsageLength, Report, ReportLength); 140} 141 142 143#undef HidP_GetButtonCaps 144 145HIDAPI 146NTSTATUS 147NTAPI 148HidP_UsageListDifference( 149 IN PUSAGE PreviousUsageList, 150 IN PUSAGE CurrentUsageList, 151 OUT PUSAGE BreakUsageList, 152 OUT PUSAGE MakeUsageList, 153 IN ULONG UsageListLength) 154{ 155 return HidParser_UsageListDifference(PreviousUsageList, CurrentUsageList, BreakUsageList, MakeUsageList, UsageListLength); 156} 157 158HIDAPI 159NTSTATUS 160NTAPI 161HidP_GetUsagesEx( 162 IN HIDP_REPORT_TYPE ReportType, 163 IN USHORT LinkCollection, 164 OUT PUSAGE_AND_PAGE ButtonList, 165 IN OUT ULONG *UsageLength, 166 IN PHIDP_PREPARSED_DATA PreparsedData, 167 IN PCHAR Report, 168 IN ULONG ReportLength) 169{ 170 return HidP_GetUsages(ReportType, HID_USAGE_PAGE_UNDEFINED, LinkCollection, &ButtonList->Usage, UsageLength, PreparsedData, Report, ReportLength); 171} 172 173HIDAPI 174NTSTATUS 175NTAPI 176HidP_UsageAndPageListDifference( 177 IN PUSAGE_AND_PAGE PreviousUsageList, 178 IN PUSAGE_AND_PAGE CurrentUsageList, 179 OUT PUSAGE_AND_PAGE BreakUsageList, 180 OUT PUSAGE_AND_PAGE MakeUsageList, 181 IN ULONG UsageListLength) 182{ 183 return HidParser_UsageAndPageListDifference(PreviousUsageList, CurrentUsageList, BreakUsageList, MakeUsageList, UsageListLength); 184} 185 186HIDAPI 187NTSTATUS 188NTAPI 189HidP_GetScaledUsageValue( 190 IN HIDP_REPORT_TYPE ReportType, 191 IN USAGE UsagePage, 192 IN USHORT LinkCollection OPTIONAL, 193 IN USAGE Usage, 194 OUT PLONG UsageValue, 195 IN PHIDP_PREPARSED_DATA PreparsedData, 196 IN PCHAR Report, 197 IN ULONG ReportLength) 198{ 199 // 200 // sanity check 201 // 202 ASSERT(ReportType == HidP_Input || ReportType == HidP_Output || ReportType == HidP_Feature); 203 204 // 205 // get scaled usage value 206 // 207 return HidParser_GetScaledUsageValue(PreparsedData, ReportType, UsagePage, LinkCollection, Usage, UsageValue, Report, ReportLength); 208} 209 210HIDAPI 211NTSTATUS 212NTAPI 213HidP_GetUsageValue( 214 IN HIDP_REPORT_TYPE ReportType, 215 IN USAGE UsagePage, 216 IN USHORT LinkCollection, 217 IN USAGE Usage, 218 OUT PULONG UsageValue, 219 IN PHIDP_PREPARSED_DATA PreparsedData, 220 IN PCHAR Report, 221 IN ULONG ReportLength) 222{ 223 // 224 // sanity check 225 // 226 ASSERT(ReportType == HidP_Input || ReportType == HidP_Output || ReportType == HidP_Feature); 227 228 // 229 // get scaled usage value 230 // 231 return HidParser_GetUsageValue(PreparsedData, ReportType, UsagePage, LinkCollection, Usage, UsageValue, Report, ReportLength); 232} 233 234 235HIDAPI 236NTSTATUS 237NTAPI 238HidP_TranslateUsageAndPagesToI8042ScanCodes( 239 IN PUSAGE_AND_PAGE ChangedUsageList, 240 IN ULONG UsageListLength, 241 IN HIDP_KEYBOARD_DIRECTION KeyAction, 242 IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState, 243 IN PHIDP_INSERT_SCANCODES InsertCodesProcedure, 244 IN PVOID InsertCodesContext) 245{ 246 // 247 // translate usage pages 248 // 249 return HidParser_TranslateUsageAndPagesToI8042ScanCodes(ChangedUsageList, UsageListLength, KeyAction, ModifierState, InsertCodesProcedure, InsertCodesContext); 250} 251 252HIDAPI 253NTSTATUS 254NTAPI 255HidP_GetButtonCaps( 256 HIDP_REPORT_TYPE ReportType, 257 PHIDP_BUTTON_CAPS ButtonCaps, 258 PUSHORT ButtonCapsLength, 259 PHIDP_PREPARSED_DATA PreparsedData) 260{ 261 return HidP_GetSpecificButtonCaps(ReportType, HID_USAGE_PAGE_UNDEFINED, 0, 0, ButtonCaps, ButtonCapsLength, PreparsedData); 262} 263 264HIDAPI 265NTSTATUS 266NTAPI 267HidP_GetSpecificButtonCaps( 268 IN HIDP_REPORT_TYPE ReportType, 269 IN USAGE UsagePage, 270 IN USHORT LinkCollection, 271 IN USAGE Usage, 272 OUT PHIDP_BUTTON_CAPS ButtonCaps, 273 IN OUT PUSHORT ButtonCapsLength, 274 IN PHIDP_PREPARSED_DATA PreparsedData) 275{ 276 UNIMPLEMENTED; 277 ASSERT(FALSE); 278 return STATUS_NOT_IMPLEMENTED; 279} 280 281HIDAPI 282NTSTATUS 283NTAPI 284HidP_GetData( 285 IN HIDP_REPORT_TYPE ReportType, 286 OUT PHIDP_DATA DataList, 287 IN OUT PULONG DataLength, 288 IN PHIDP_PREPARSED_DATA PreparsedData, 289 IN PCHAR Report, 290 IN ULONG ReportLength) 291{ 292 UNIMPLEMENTED; 293 ASSERT(FALSE); 294 return STATUS_NOT_IMPLEMENTED; 295} 296 297HIDAPI 298NTSTATUS 299NTAPI 300HidP_GetExtendedAttributes( 301 IN HIDP_REPORT_TYPE ReportType, 302 IN USHORT DataIndex, 303 IN PHIDP_PREPARSED_DATA PreparsedData, 304 OUT PHIDP_EXTENDED_ATTRIBUTES Attributes, 305 IN OUT PULONG LengthAttributes) 306{ 307 UNIMPLEMENTED; 308 ASSERT(FALSE); 309 return STATUS_NOT_IMPLEMENTED; 310} 311 312HIDAPI 313NTSTATUS 314NTAPI 315HidP_GetLinkCollectionNodes( 316 OUT PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes, 317 IN OUT PULONG LinkCollectionNodesLength, 318 IN PHIDP_PREPARSED_DATA PreparsedData) 319{ 320 UNIMPLEMENTED; 321 ASSERT(FALSE); 322 return STATUS_NOT_IMPLEMENTED; 323} 324 325NTSTATUS 326NTAPI 327HidP_SysPowerEvent( 328 IN PCHAR HidPacket, 329 IN USHORT HidPacketLength, 330 IN PHIDP_PREPARSED_DATA Ppd, 331 OUT PULONG OutputBuffer) 332{ 333 UNIMPLEMENTED; 334 ASSERT(FALSE); 335 return STATUS_NOT_IMPLEMENTED; 336} 337 338NTSTATUS 339NTAPI 340HidP_SysPowerCaps( 341 IN PHIDP_PREPARSED_DATA Ppd, 342 OUT PULONG OutputBuffer) 343{ 344 UNIMPLEMENTED; 345 ASSERT(FALSE); 346 return STATUS_NOT_IMPLEMENTED; 347} 348 349HIDAPI 350NTSTATUS 351NTAPI 352HidP_GetUsageValueArray( 353 IN HIDP_REPORT_TYPE ReportType, 354 IN USAGE UsagePage, 355 IN USHORT LinkCollection OPTIONAL, 356 IN USAGE Usage, 357 OUT PCHAR UsageValue, 358 IN USHORT UsageValueByteLength, 359 IN PHIDP_PREPARSED_DATA PreparsedData, 360 IN PCHAR Report, 361 IN ULONG ReportLength) 362{ 363 UNIMPLEMENTED; 364 ASSERT(FALSE); 365 return STATUS_NOT_IMPLEMENTED; 366} 367 368 369HIDAPI 370NTSTATUS 371NTAPI 372HidP_UnsetUsages( 373 IN HIDP_REPORT_TYPE ReportType, 374 IN USAGE UsagePage, 375 IN USHORT LinkCollection, 376 IN PUSAGE UsageList, 377 IN OUT PULONG UsageLength, 378 IN PHIDP_PREPARSED_DATA PreparsedData, 379 IN OUT PCHAR Report, 380 IN ULONG ReportLength) 381{ 382 UNIMPLEMENTED; 383 ASSERT(FALSE); 384 return STATUS_NOT_IMPLEMENTED; 385} 386 387HIDAPI 388NTSTATUS 389NTAPI 390HidP_TranslateUsagesToI8042ScanCodes( 391 IN PUSAGE ChangedUsageList, 392 IN ULONG UsageListLength, 393 IN HIDP_KEYBOARD_DIRECTION KeyAction, 394 IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState, 395 IN PHIDP_INSERT_SCANCODES InsertCodesProcedure, 396 IN PVOID InsertCodesContext) 397{ 398 UNIMPLEMENTED; 399 ASSERT(FALSE); 400 return STATUS_NOT_IMPLEMENTED; 401} 402 403HIDAPI 404NTSTATUS 405NTAPI 406HidP_SetUsages( 407 IN HIDP_REPORT_TYPE ReportType, 408 IN USAGE UsagePage, 409 IN USHORT LinkCollection, 410 IN PUSAGE UsageList, 411 IN OUT PULONG UsageLength, 412 IN PHIDP_PREPARSED_DATA PreparsedData, 413 IN OUT PCHAR Report, 414 IN ULONG ReportLength) 415{ 416 UNIMPLEMENTED; 417 ASSERT(FALSE); 418 return STATUS_NOT_IMPLEMENTED; 419} 420 421HIDAPI 422NTSTATUS 423NTAPI 424HidP_SetUsageValueArray( 425 IN HIDP_REPORT_TYPE ReportType, 426 IN USAGE UsagePage, 427 IN USHORT LinkCollection OPTIONAL, 428 IN USAGE Usage, 429 IN PCHAR UsageValue, 430 IN USHORT UsageValueByteLength, 431 IN PHIDP_PREPARSED_DATA PreparsedData, 432 OUT PCHAR Report, 433 IN ULONG ReportLength) 434{ 435 UNIMPLEMENTED; 436 ASSERT(FALSE); 437 return STATUS_NOT_IMPLEMENTED; 438} 439 440HIDAPI 441NTSTATUS 442NTAPI 443HidP_SetUsageValue( 444 IN HIDP_REPORT_TYPE ReportType, 445 IN USAGE UsagePage, 446 IN USHORT LinkCollection, 447 IN USAGE Usage, 448 IN ULONG UsageValue, 449 IN PHIDP_PREPARSED_DATA PreparsedData, 450 IN OUT PCHAR Report, 451 IN ULONG ReportLength) 452{ 453 UNIMPLEMENTED; 454 ASSERT(FALSE); 455 return STATUS_NOT_IMPLEMENTED; 456} 457 458HIDAPI 459NTSTATUS 460NTAPI 461HidP_SetScaledUsageValue( 462 IN HIDP_REPORT_TYPE ReportType, 463 IN USAGE UsagePage, 464 IN USHORT LinkCollection OPTIONAL, 465 IN USAGE Usage, 466 IN LONG UsageValue, 467 IN PHIDP_PREPARSED_DATA PreparsedData, 468 IN OUT PCHAR Report, 469 IN ULONG ReportLength) 470{ 471 UNIMPLEMENTED; 472 ASSERT(FALSE); 473 return STATUS_NOT_IMPLEMENTED; 474} 475 476HIDAPI 477NTSTATUS 478NTAPI 479HidP_SetData( 480 IN HIDP_REPORT_TYPE ReportType, 481 IN PHIDP_DATA DataList, 482 IN OUT PULONG DataLength, 483 IN PHIDP_PREPARSED_DATA PreparsedData, 484 IN OUT PCHAR Report, 485 IN ULONG ReportLength) 486{ 487 UNIMPLEMENTED; 488 ASSERT(FALSE); 489 return STATUS_NOT_IMPLEMENTED; 490} 491 492HIDAPI 493ULONG 494NTAPI 495HidP_MaxDataListLength( 496 IN HIDP_REPORT_TYPE ReportType, 497 IN PHIDP_PREPARSED_DATA PreparsedData) 498{ 499 UNIMPLEMENTED; 500 ASSERT(FALSE); 501 return STATUS_NOT_IMPLEMENTED; 502} 503 504HIDAPI 505NTSTATUS 506NTAPI 507HidP_InitializeReportForID( 508 IN HIDP_REPORT_TYPE ReportType, 509 IN UCHAR ReportID, 510 IN PHIDP_PREPARSED_DATA PreparsedData, 511 IN OUT PCHAR Report, 512 IN ULONG ReportLength) 513{ 514 UNIMPLEMENTED; 515 ASSERT(FALSE); 516 return STATUS_NOT_IMPLEMENTED; 517} 518 519#undef HidP_GetValueCaps 520 521HIDAPI 522NTSTATUS 523NTAPI 524HidP_GetValueCaps( 525 HIDP_REPORT_TYPE ReportType, 526 PHIDP_VALUE_CAPS ValueCaps, 527 PUSHORT ValueCapsLength, 528 PHIDP_PREPARSED_DATA PreparsedData) 529{ 530 return HidP_GetSpecificValueCaps(ReportType, 531 HID_USAGE_PAGE_UNDEFINED, 532 HIDP_LINK_COLLECTION_UNSPECIFIED, 533 0, 534 ValueCaps, 535 ValueCapsLength, 536 PreparsedData); 537}