Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static int count = 0;
- DECLSPEC_HOTPATCH NTSTATUS HidP_GetValueCaps (HIDP_REPORT_TYPE ReportType, PHIDP_VALUE_CAPS ValueCaps,
- PULONG ValueCapsLength, PHIDP_PREPARSED_DATA PreparsedData)
- {
- TRACE("Usage (%x, %x, %d, %x)\n", ReportType, ValueCaps, *ValueCapsLength, PreparsedData);
- /*
- USAGE UsagePage;
- UCHAR ReportID;
- BOOLEAN IsAlias;
- USHORT BitField;
- USHORT LinkCollection;
- USAGE LinkUsage;
- USAGE LinkUsagePage;
- BOOLEAN IsRange;
- BOOLEAN IsStringRange;
- BOOLEAN IsDesignatorRange;
- BOOLEAN IsAbsolute;
- BOOLEAN HasNull;
- UCHAR Reserved;
- USHORT BitSize;
- USHORT ReportCount;
- USHORT Reserved2[5];
- ULONG UnitsExp;
- ULONG Units;
- LONG LogicalMin, LogicalMax;
- LONG PhysicalMin, PhysicalMax;
- union {
- struct {
- USAGE UsageMin, UsageMax;
- USHORT StringMin, StringMax;
- USHORT DesignatorMin, DesignatorMax;
- USHORT DataIndexMin, DataIndexMax;
- } Range;
- struct {
- USAGE Usage, Reserved1;
- USHORT StringIndex, Reserved2;
- USHORT DesignatorIndex, Reserved3;
- USHORT DataIndex, Reserved4;
- } NotRange;
- } DUMMYUNIONNAME;
- * */
- if (ReportType == 0) {
- count ++;
- /*
- 0xa1,0xff,
- 0x00,
- 0x00,
- 0x02,0x00,
- 0x01,0x00,
- 0x02,0x00,
- 0xa0,0xff,
- 0x00,
- 0x00,
- 0x00,
- 0x01,
- 0x00,
- 0x00,
- 0x08,0x00,
- 0x07,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x38,0x01,
- 0x00,0x00,
- 0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,
- 0x04,0x00,
- 0x04,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x00,0x00,
- */
- /*
- 0xa1,0xff,0x00,0x00,0x02,0x00,0x01,0x00,0x02,0
- x00,0xa0,0xff,0x00,0x00,0x00,0x01,0x00,0x00,0x08,0x00,0x07,0x00,
- 0xc1,0x77,
- 0x50,0x1f,
- 0x3d,0x00,
- 0x24,0xe5,
- 0xc1,0x77,
- 0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,
- 0x04,0x00,
- 0x04,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x00,0x00,
- */
- ValueCaps->UsagePage = 0xffa1;
- ValueCaps->ReportID = 0x0;
- ValueCaps->IsAlias = 0x0;
- ValueCaps->BitField = 0x2;
- ValueCaps->LinkCollection = 0x1;
- ValueCaps->LinkUsage = 0x2;
- ValueCaps->LinkUsagePage = 0xffa0;
- ValueCaps->IsRange = 0x0;
- ValueCaps->IsStringRange = 0x0;
- ValueCaps->IsDesignatorRange = 0x0;
- ValueCaps->IsAbsolute = 0x1;
- ValueCaps->HasNull = 0x0;
- ValueCaps->Reserved = 0x0;
- ValueCaps->BitSize = 0x8;
- ValueCaps->ReportCount = 0x7;
- if (count == 0) {
- ValueCaps->Reserved2[0] = 0x0;
- ValueCaps->Reserved2[1] = 0x0;
- ValueCaps->Reserved2[2] = 0x2000;
- ValueCaps->Reserved2[3] = 0x02;
- ValueCaps->Reserved2[4] = 0x0;
- } else {
- ValueCaps->Reserved2[0] = 0x77c1;
- ValueCaps->Reserved2[1] = 0x1f50;
- ValueCaps->Reserved2[2] = 0x3d;
- ValueCaps->Reserved2[3] = 0xe524;
- ValueCaps->Reserved2[4] = 0x77c1;
- }
- ValueCaps->UnitsExp = 0x0;
- ValueCaps->Units = 0x0;
- ValueCaps->LogicalMin = 0xffffff80;
- ValueCaps->LogicalMax = 0x7f;
- ValueCaps->PhysicalMin = 0x0;
- ValueCaps->PhysicalMax = 0xffffffff;
- ValueCaps->Range.UsageMin = 0x4;
- ValueCaps->Range.UsageMax = 0x4;
- ValueCaps->Range.StringMin = 0x0;
- ValueCaps->Range.StringMax = 0x0;
- ValueCaps->Range.DesignatorMin = 0x0;
- ValueCaps->Range.DesignatorMax = 0x0;
- ValueCaps->Range.DataIndexMin = 0x0;
- ValueCaps->Range.DataIndexMax = 0x0;
- ValueCaps = (PHIDP_VALUE_CAPS) ((void *) ((char *) ValueCaps + 72));
- TRACE("(%x)\n",ValueCaps);
- /*
- 0xa1,0xff,
- 0x00,
- 0x00,
- 0x02, 0x00,
- 0x01,0x00,
- 0x02,0x00,
- 0xa0,0xff,
- 0x00,
- 0x00,
- 0x00,
- 0x01,
- 0x00,
- 0x24,
- 0x08,0x00,
- 0x01,0x00,
- 0x00,0x00,
- 0xf0,0x24,
- 0x3d,0x00,
- 0xb8,0x24,
- 0x00,0x00,
- 0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,
- 0x03,0x00,
- 0x03,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x01,0x00,
- 0x01,0x00};
- */
- /*
- 0xa1,0xff,0x00,0x00,0x02,0x00,0x01,0x00,0x02,0
- x00,0xa0,0xff,0x00,0x00,0x00,0x01,0x00,0x5c,0x08,0x00,0x01,0x00,
- 0xc0,0x77,
- 0xff,0xff,
- 0xff,0xff,
- 0xad,0x03,
- 0xc2,0x77,
- 0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,
- 0x03,0x00,
- 0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00
- */
- ValueCaps->UsagePage = 0xffa1;
- ValueCaps->ReportID = 0x0;
- ValueCaps->IsAlias = 0x0;
- ValueCaps->BitField = 0x2;
- ValueCaps->LinkCollection = 0x1;
- ValueCaps->LinkUsage = 0x2;
- ValueCaps->LinkUsagePage = 0xffa0;
- ValueCaps->IsRange = 0x0;
- ValueCaps->IsStringRange = 0x0;
- ValueCaps->IsDesignatorRange = 0x0;
- ValueCaps->IsAbsolute = 0x1;
- ValueCaps->HasNull = 0x0;
- ValueCaps->Reserved = 0x4;
- ValueCaps->BitSize = 0x8;
- ValueCaps->ReportCount = 0x1;
- /*ValueCaps->Reserved2[0] = 0x0;
- ValueCaps->Reserved2[1] = 0x24f0;
- ValueCaps->Reserved2[2] = 0x3d;
- ValueCaps->Reserved2[3] = 0x24b8;
- ValueCaps->Reserved2[4] = 0x0;*/
- /* 0x3d,0x00,
- 0x28,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x3d,0x00,*/
- if (count == 0) {
- ValueCaps->Reserved2[0] = 0x3d;
- ValueCaps->Reserved2[1] = 0x28;
- ValueCaps->Reserved2[2] = 0x0;
- ValueCaps->Reserved2[3] = 0x0;
- ValueCaps->Reserved2[4] = 0x3d;
- } else {
- ValueCaps->Reserved2[0] = 0x77c0;
- ValueCaps->Reserved2[1] = 0xffff;
- ValueCaps->Reserved2[2] = 0xffff;
- ValueCaps->Reserved2[3] = 0x03ad;
- ValueCaps->Reserved2[4] = 0x77c2;
- }
- ValueCaps->UnitsExp = 0x0;
- ValueCaps->Units = 0x0;
- ValueCaps->LogicalMin = 0xffffff80;
- ValueCaps->LogicalMax = 0x7f;
- ValueCaps->PhysicalMin = 0x0;
- ValueCaps->PhysicalMax = 0xffffffff;
- ValueCaps->Range.UsageMin = 0x3;
- ValueCaps->Range.UsageMax = 0x3;
- ValueCaps->Range.StringMin = 0x0;
- ValueCaps->Range.StringMax = 0x0;
- ValueCaps->Range.DesignatorMin = 0x0;
- ValueCaps->Range.DesignatorMax = 0x0;
- ValueCaps->Range.DataIndexMin = 0x1;
- ValueCaps->Range.DataIndexMax = 0x1;
- *ValueCapsLength = 2;
- return 0x110000;
- } else if (ReportType == 1) {
- /*unsigned char r[] = {0xa1,0xff,0x00,0x00,0x02,0x00,0x01,0x00,0x02,0x00,0xa0,0xff,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x08,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};*/
- /*0xa1,0xff,
- 0x00,
- 0x00,
- 0x02,
- 0x00,
- 0x01,0x00,
- 0x02,0x00,
- 0xa0,0xff,0x00,0x00,0x00,0x01,0x00,
- 0x24,0x08,
- 0x00,0x01,
- 0x00,
- 0x00,0x00,0xf0,0x24,0x3d,0x00,0xb8,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0xff,0xff,0x05,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
- 0x00,0x01,0x00};
- unsigned char *p = (unsigned char *) ValueCaps;
- int i;
- for (i = 0; i != sizeof (r); i ++) {
- p[i] = r[i];
- }*/
- ValueCaps->UsagePage = 0xffa1;
- ValueCaps->ReportID = 0x0;
- ValueCaps->IsAlias = 0x0;
- ValueCaps->BitField = 0x2;
- ValueCaps->LinkCollection = 0x1;
- ValueCaps->LinkUsage = 0x2;
- ValueCaps->LinkUsagePage = 0xffa0;
- ValueCaps->IsRange = 0x0;
- ValueCaps->IsStringRange = 0x0;
- ValueCaps->IsDesignatorRange = 0x0;
- ValueCaps->IsAbsolute = 0x1;
- ValueCaps->HasNull = 0x0;
- ValueCaps->Reserved = 0x0;
- ValueCaps->BitSize = 0x8;
- ValueCaps->ReportCount = 0x7;
- /*ValueCaps->Reserved2[0] = 0x0;
- ValueCaps->Reserved2[1] = 0x0;
- ValueCaps->Reserved2[2] = 0x0;
- ValueCaps->Reserved2[3] = 0x138;
- ValueCaps->Reserved2[4] = 0x0;*/
- if (count == 0) {
- ValueCaps->Reserved2[0] = 0x0;
- ValueCaps->Reserved2[1] = 0x0;
- ValueCaps->Reserved2[2] = 0x2000;
- ValueCaps->Reserved2[3] = 0x02;
- ValueCaps->Reserved2[4] = 0x0;
- } else {
- ValueCaps->Reserved2[0] = 0x77c1;
- ValueCaps->Reserved2[1] = 0x1f50;
- ValueCaps->Reserved2[2] = 0x3d;
- ValueCaps->Reserved2[3] = 0xe524;
- ValueCaps->Reserved2[4] = 0x77c1;
- }
- /*
- 0x3d,0x00,
- 0x28,0x00,
- 0x00,0x00,
- 0x00,0x00,
- 0x3d,0x00,
- * */
- ValueCaps->UnitsExp = 0x0;
- ValueCaps->Units = 0x0;
- ValueCaps->LogicalMin = 0xffffff80;
- ValueCaps->LogicalMax = 0x7f;
- ValueCaps->PhysicalMin = 0x0;
- ValueCaps->PhysicalMax = 0xffffffff;
- ValueCaps->Range.UsageMin = 0x6;
- ValueCaps->Range.UsageMax = 0x6;
- ValueCaps->Range.StringMin = 0x0;
- ValueCaps->Range.StringMax = 0x0;
- ValueCaps->Range.DesignatorMin = 0x0;
- ValueCaps->Range.DesignatorMax = 0x0;
- ValueCaps->Range.DataIndexMin = 0x0;
- ValueCaps->Range.DataIndexMax = 0x0;
- ValueCaps = (PHIDP_VALUE_CAPS) ((void *) ((char *) ValueCaps + 72));
- ValueCaps->UsagePage = 0xffa1;
- ValueCaps->ReportID = 0x0;
- ValueCaps->IsAlias = 0x0;
- ValueCaps->BitField = 0x2;
- ValueCaps->LinkCollection = 0x1;
- ValueCaps->LinkUsage = 0x2;
- ValueCaps->LinkUsagePage = 0xffa0;
- ValueCaps->IsRange = 0x0;
- ValueCaps->IsStringRange = 0x0;
- ValueCaps->IsDesignatorRange = 0x0;
- ValueCaps->IsAbsolute = 0x1;
- ValueCaps->HasNull = 0x0;
- ValueCaps->Reserved = 0x04;
- ValueCaps->BitSize = 0x8;
- ValueCaps->ReportCount = 0x1;
- /* ValueCaps->Reserved2[0] = 0x0;
- ValueCaps->Reserved2[1] = 0x24f0;
- ValueCaps->Reserved2[2] = 0x3d;
- ValueCaps->Reserved2[3] = 0x24b8;
- ValueCaps->Reserved2[4] = 0x0;*/
- ValueCaps->Reserved2[0] = 0x3d;
- ValueCaps->Reserved2[1] = 0x28;
- ValueCaps->Reserved2[2] = 0x00;
- ValueCaps->Reserved2[3] = 0x00;
- ValueCaps->Reserved2[4] = 0x3d;
- ValueCaps->UnitsExp = 0x0;
- ValueCaps->Units = 0x0;
- ValueCaps->LogicalMin = 0xffffff80;
- ValueCaps->LogicalMax = 0x7f;
- ValueCaps->PhysicalMin = 0x0;
- ValueCaps->PhysicalMax = 0xffffffff;
- ValueCaps->Range.UsageMin = 0x5;
- ValueCaps->Range.UsageMax = 0x5;
- ValueCaps->Range.StringMin = 0x0;
- ValueCaps->Range.StringMax = 0x0;
- ValueCaps->Range.DesignatorMin = 0x0;
- ValueCaps->Range.DesignatorMax = 0x0;
- ValueCaps->Range.DataIndexMin = 0x1;
- ValueCaps->Range.DataIndexMax = 0x1;
- *ValueCapsLength = 2;
- return 0x110000;
- } else if (ReportType == 2) {
- *ValueCapsLength = 0;
- return 0xc0110004;
- }
- return HIDP_STATUS_SUCCESS;
Add Comment
Please, Sign In to add comment