pinvoke-interop-assistant-input.c
author StephaneLenclud
Sun, 15 Feb 2015 22:13:33 +0100
changeset 64 8c2380995bb7
child 68 bbe61b1021bb
permissions -rw-r--r--
Adding input capabilities description to device list.
StephaneLenclud@50
     1
StephaneLenclud@50
     2
typedef USHORT USAGE, *PUSAGE;
StephaneLenclud@50
     3
typedef LONG NTSTATUS;
StephaneLenclud@50
     4
StephaneLenclud@50
     5
typedef struct _HIDP_PREPARSED_DATA * PHIDP_PREPARSED_DATA;
StephaneLenclud@50
     6
StephaneLenclud@50
     7
typedef enum _HIDP_REPORT_TYPE
StephaneLenclud@50
     8
{
StephaneLenclud@50
     9
    HidP_Input,
StephaneLenclud@50
    10
    HidP_Output,
StephaneLenclud@50
    11
    HidP_Feature
StephaneLenclud@50
    12
} HIDP_REPORT_TYPE;
StephaneLenclud@50
    13
StephaneLenclud@50
    14
typedef struct _HIDP_CAPS
StephaneLenclud@50
    15
{
StephaneLenclud@50
    16
    USAGE    Usage;
StephaneLenclud@50
    17
    USAGE    UsagePage;
StephaneLenclud@50
    18
    USHORT   InputReportByteLength;
StephaneLenclud@50
    19
    USHORT   OutputReportByteLength;
StephaneLenclud@50
    20
    USHORT   FeatureReportByteLength;
StephaneLenclud@50
    21
    USHORT   Reserved[17];
StephaneLenclud@50
    22
StephaneLenclud@50
    23
    USHORT   NumberLinkCollectionNodes;
StephaneLenclud@50
    24
StephaneLenclud@50
    25
    USHORT   NumberInputButtonCaps;
StephaneLenclud@50
    26
    USHORT   NumberInputValueCaps;
StephaneLenclud@50
    27
    USHORT   NumberInputDataIndices;
StephaneLenclud@50
    28
StephaneLenclud@50
    29
    USHORT   NumberOutputButtonCaps;
StephaneLenclud@50
    30
    USHORT   NumberOutputValueCaps;
StephaneLenclud@50
    31
    USHORT   NumberOutputDataIndices;
StephaneLenclud@50
    32
StephaneLenclud@50
    33
    USHORT   NumberFeatureButtonCaps;
StephaneLenclud@50
    34
    USHORT   NumberFeatureValueCaps;
StephaneLenclud@50
    35
    USHORT   NumberFeatureDataIndices;
StephaneLenclud@50
    36
} HIDP_CAPS, *PHIDP_CAPS;
StephaneLenclud@50
    37
StephaneLenclud@50
    38
StephaneLenclud@50
    39
typedef struct _HIDP_BUTTON_CAPS
StephaneLenclud@50
    40
{
StephaneLenclud@50
    41
    USAGE    UsagePage;
StephaneLenclud@50
    42
    UCHAR    ReportID;
StephaneLenclud@50
    43
    BOOLEAN  IsAlias;
StephaneLenclud@50
    44
StephaneLenclud@50
    45
    USHORT   BitField;
StephaneLenclud@50
    46
    USHORT   LinkCollection;   // A unique internal index pointer
StephaneLenclud@50
    47
StephaneLenclud@50
    48
    USAGE    LinkUsage;
StephaneLenclud@50
    49
    USAGE    LinkUsagePage;
StephaneLenclud@50
    50
StephaneLenclud@50
    51
    BOOLEAN  IsRange;
StephaneLenclud@50
    52
    BOOLEAN  IsStringRange;
StephaneLenclud@50
    53
    BOOLEAN  IsDesignatorRange;
StephaneLenclud@50
    54
    BOOLEAN  IsAbsolute;
StephaneLenclud@50
    55
StephaneLenclud@50
    56
    ULONG    Reserved[10];
StephaneLenclud@50
    57
    union {
StephaneLenclud@50
    58
        struct {
StephaneLenclud@50
    59
            USAGE    UsageMin,         UsageMax;
StephaneLenclud@50
    60
            USHORT   StringMin,        StringMax;
StephaneLenclud@50
    61
            USHORT   DesignatorMin,    DesignatorMax;
StephaneLenclud@50
    62
            USHORT   DataIndexMin,     DataIndexMax;
StephaneLenclud@50
    63
        } Range;
StephaneLenclud@50
    64
        struct  {
StephaneLenclud@50
    65
            USAGE    Usage,            Reserved1;
StephaneLenclud@50
    66
            USHORT   StringIndex,      Reserved2;
StephaneLenclud@50
    67
            USHORT   DesignatorIndex,  Reserved3;
StephaneLenclud@50
    68
            USHORT   DataIndex,        Reserved4;
StephaneLenclud@50
    69
        } NotRange;
StephaneLenclud@50
    70
    };
StephaneLenclud@50
    71
StephaneLenclud@50
    72
} HIDP_BUTTON_CAPS, *PHIDP_BUTTON_CAPS;
StephaneLenclud@50
    73
StephaneLenclud@50
    74
typedef struct _HIDP_VALUE_CAPS
StephaneLenclud@50
    75
{
StephaneLenclud@50
    76
    USAGE    UsagePage;
StephaneLenclud@50
    77
    UCHAR    ReportID;
StephaneLenclud@50
    78
    BOOLEAN  IsAlias;
StephaneLenclud@50
    79
StephaneLenclud@50
    80
    USHORT   BitField;
StephaneLenclud@50
    81
    USHORT   LinkCollection;   // A unique internal index pointer
StephaneLenclud@50
    82
StephaneLenclud@50
    83
    USAGE    LinkUsage;
StephaneLenclud@50
    84
    USAGE    LinkUsagePage;
StephaneLenclud@50
    85
StephaneLenclud@50
    86
    BOOLEAN  IsRange;
StephaneLenclud@50
    87
    BOOLEAN  IsStringRange;
StephaneLenclud@50
    88
    BOOLEAN  IsDesignatorRange;
StephaneLenclud@50
    89
    BOOLEAN  IsAbsolute;
StephaneLenclud@50
    90
StephaneLenclud@50
    91
    BOOLEAN  HasNull;        // Does this channel have a null report   union
StephaneLenclud@50
    92
    UCHAR    Reserved;
StephaneLenclud@50
    93
    USHORT   BitSize;        // How many bits are devoted to this value?
StephaneLenclud@50
    94
StephaneLenclud@50
    95
    USHORT   ReportCount;    // See Note below.  Usually set to 1.
StephaneLenclud@50
    96
    USHORT   Reserved2[5];
StephaneLenclud@50
    97
StephaneLenclud@50
    98
    ULONG    UnitsExp;
StephaneLenclud@50
    99
    ULONG    Units;
StephaneLenclud@50
   100
StephaneLenclud@50
   101
    LONG     LogicalMin,       LogicalMax;
StephaneLenclud@50
   102
    LONG     PhysicalMin,      PhysicalMax;
StephaneLenclud@50
   103
StephaneLenclud@50
   104
    union {
StephaneLenclud@50
   105
        struct {
StephaneLenclud@50
   106
            USAGE    UsageMin,         UsageMax;
StephaneLenclud@50
   107
            USHORT   StringMin,        StringMax;
StephaneLenclud@50
   108
            USHORT   DesignatorMin,    DesignatorMax;
StephaneLenclud@50
   109
            USHORT   DataIndexMin,     DataIndexMax;
StephaneLenclud@50
   110
        } Range;
StephaneLenclud@50
   111
StephaneLenclud@50
   112
        struct {
StephaneLenclud@50
   113
            USAGE    Usage,            Reserved1;
StephaneLenclud@50
   114
            USHORT   StringIndex,      Reserved2;
StephaneLenclud@50
   115
            USHORT   DesignatorIndex,  Reserved3;
StephaneLenclud@50
   116
            USHORT   DataIndex,        Reserved4;
StephaneLenclud@50
   117
        } NotRange;
StephaneLenclud@50
   118
    };
StephaneLenclud@50
   119
} HIDP_VALUE_CAPS, *PHIDP_VALUE_CAPS;
StephaneLenclud@50
   120
StephaneLenclud@50
   121
NTSTATUS __stdcall
StephaneLenclud@50
   122
HidP_GetCaps (
StephaneLenclud@50
   123
         PHIDP_PREPARSED_DATA      PreparsedData,
StephaneLenclud@50
   124
        PHIDP_CAPS                Capabilities
StephaneLenclud@50
   125
   );
StephaneLenclud@50
   126
StephaneLenclud@50
   127
   NTSTATUS __stdcall
StephaneLenclud@50
   128
HidP_GetButtonCaps (
StephaneLenclud@50
   129
          HIDP_REPORT_TYPE     ReportType,
StephaneLenclud@50
   130
   PHIDP_BUTTON_CAPS ButtonCaps,
StephaneLenclud@50
   131
       PUSHORT              ButtonCapsLength,
StephaneLenclud@50
   132
          PHIDP_PREPARSED_DATA PreparsedData
StephaneLenclud@50
   133
);
StephaneLenclud@50
   134
StephaneLenclud@50
   135
NTSTATUS __stdcall
StephaneLenclud@50
   136
HidP_GetValueCaps (
StephaneLenclud@50
   137
          HIDP_REPORT_TYPE     ReportType,
StephaneLenclud@50
   138
   PHIDP_VALUE_CAPS ValueCaps,
StephaneLenclud@50
   139
       PUSHORT              ValueCapsLength,
StephaneLenclud@50
   140
          PHIDP_PREPARSED_DATA PreparsedData
StephaneLenclud@50
   141
);