> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GameInputDeviceInfo

> GameInputDeviceInfo

# GameInputDeviceInfo

Descreve todas as informações sobre um dispositivo de entrada.

## Sintaxe

```cpp theme={null}
struct GameInputDeviceInfo
{
    uint16_t               vendorId;
    uint16_t               productId;
    uint16_t               revisionNumber;
    GameInputUsage         usage;
    GameInputVersion       hardwareVersion;
    GameInputVersion       firmwareVersion;
    APP_LOCAL_DEVICE_ID    deviceId;
    APP_LOCAL_DEVICE_ID    deviceRootId;
    GameInputDeviceFamily  deviceFamily;
    GameInputKind          supportedInput;
    GameInputRumbleMotors  supportedRumbleMotors;
    GameInputSystemButtons supportedSystemButtons;
    GUID                   containerId;
    const char*            displayName;
    const char*            pnpPath;

    const GameInputKeyboardInfo* keyboardInfo;
    const GameInputMouseInfo*    mouseInfo;
    const GameInputSensorsInfo*  sensorsInfo;

    const GameInputControllerInfo*  controllerInfo;
    const GameInputArcadeStickInfo* arcadeStickInfo;
    const GameInputFlightStickInfo* flightStickInfo;
    const GameInputGamepadInfo*     gamepadInfo;
    const GameInputRacingWheelInfo* racingWheelInfo;

    uint32_t                               forceFeedbackMotorCount;
    const GameInputForceFeedbackMotorInfo* forceFeedbackMotorInfo;

    uint32_t                            inputReportCount;
    const GameInputRawDeviceReportInfo* inputReportInfo;

    uint32_t                            outputReportCount;
    const GameInputRawDeviceReportInfo* outputReportInfo;
};
```

### Membros

*vendorId*<br />
Tipo: uint16\_t

Identifica o fornecedor do dispositivo de entrada.

*productId*<br />
Tipo: uint16\_t

Identifica o dispositivo de entrada como um produto.

*revisionNumber*<br />
Tipo: uint16\_t

Número de revisão de hardware do dispositivo, se houver.

*usage*<br />
Tipo: [GameInputUsage](/pt-BR/reference/input/gameinput/structs/gameinputusage)

Índice de duas partes que descreve a entrada usada.

*hardwareVersion*<br />
Tipo: [GameInputVersion](/pt-BR/reference/input/gameinput/structs/gameinputversion)

Versão de hardware do dispositivo, se houver.

*firmwareVersion*<br />
Tipo: [GameInputVersion](/pt-BR/reference/input/gameinput/structs/gameinputversion)

Versão de firmware do dispositivo, se houver.

*deviceId*<br />
Tipo: APP\_LOCAL\_DEVICE\_ID

ID do dispositivo de entrada.

*deviceRootId*<br />
Tipo: APP\_LOCAL\_DEVICE\_ID

ID raiz do dispositivo de entrada.

*deviceFamily*<br />
Tipo: [GameInputDeviceFamily](/pt-BR/reference/input/gameinput/enums/gameinputdevicefamily)

Designa a família de dispositivos de entrada à qual o dispositivo de entrada pertence.

*supportedInput*<br />
Tipo: [GameInputKind](/pt-BR/reference/input/gameinput/enums/gameinputkind)

Descreve o tipo ou os tipos de entrada aos quais o dispositivo oferece suporte.

*supportedRumbleMotors*<br />
Tipo: [GameInputRumbleMotors](/pt-BR/reference/input/gameinput/enums/gameinputrumblemotors)

Descreve os motores de vibração acessíveis no dispositivo, se houver.

*supportedSystemButtons*<br />
Tipo: [GameInputSystemButtons](/pt-BR/reference/input/gameinput/enums/gameinputsystembuttons)

Descreve os botões disponíveis para controlar o sistema, geralmente fora de um jogo.

*containerId*<br />
Tipo: GUID

ID do contêiner do dispositivo de entrada.

*displayName*<br />
Tipo: const char\*

Descreve o nome amigável do dispositivo.

*pnpPath*<br />
Tipo: const char\*

Descreve a capacidade Plug and Play do dispositivo. Use esse caminho para fazer referência aos dispositivos subjacentes por meio de outras APIs.

*keyboardInfo*<br />
Tipo: [GameInputKeyboardInfo](/pt-BR/reference/input/gameinput/structs/gameinputkeyboardinfo) const \*

Informações sobre um dispositivo de entrada de teclado.

*mouseInfo*<br />
Tipo: [GameInputMouseInfo](/pt-BR/reference/input/gameinput/structs/gameinputmouseinfo) const \*

Informações sobre um dispositivo de entrada de mouse.

*sensorsInfo*<br />
Tipo: [GameInputSensorsInfo](/pt-BR/reference/input/gameinput/structs/gameinputsensorsinfo) const \*

Informações sobre os sensores no dispositivo.

*controllerInfo*<br />
Tipo: [GameInputControllerInfo](/pt-BR/reference/input/gameinput/structs/gameinputcontrollerinfo) const \*

Informações sobre o dispositivo de entrada de controle genérico. O controle representa os eixos, botões e switches brutos não mapeados em um dispositivo.

*arcadeStickInfo*<br />
Tipo: [GameInputArcadeStickInfo](/pt-BR/reference/input/gameinput/structs/gameinputarcadestickinfo) const \*

Informações sobre um dispositivo de entrada de arcade stick.

*flightStickInfo*<br />
Tipo: [GameInputFlightStickInfo](/pt-BR/reference/input/gameinput/structs/gameinputflightstickinfo) const \*

Informações sobre um dispositivo de entrada de flight stick.

*gamepadInfo*<br />
Tipo: [GameInputGamepadInfo](/pt-BR/reference/input/gameinput/structs/gameinputgamepadinfo) const \*

Informações sobre um dispositivo de entrada de gamepad.

*racingWheelInfo*<br />
Tipo: [GameInputRacingWheelInfo](/pt-BR/reference/input/gameinput/structs/gameinputracingwheelinfo) const \*

Informações sobre um dispositivo de entrada de volante de corrida.

*forceFeedbackMotorCount*<br />
Tipo: uint32\_t

O número de motores de force feedback no dispositivo de entrada.

*forceFeedbackMotorInfo*<br />
Tipo: [GameInputForceFeedbackMotorInfo](/pt-BR/reference/input/gameinput/structs/gameinputforcefeedbackmotorinfo) const \*

Informações sobre todos os motores de force feedback em um dispositivo.

*inputReportCount*<br />
Tipo: uint32\_t

Número de relatórios de entrada do dispositivo.

*inputReportInfo*<br />
Tipo: [GameInputRawDeviceReportInfo](/pt-BR/reference/input/gameinput/structs/gameinputrawdevicereportinfo) const \*

Objeto de informações do relatório de entrada.

*outputReportCount*<br />
Tipo: uint32\_t

Número de relatórios de saída do dispositivo.

*outputReportInfo*<br />
Tipo: [GameInputRawDeviceReportInfo](/pt-BR/reference/input/gameinput/structs/gameinputrawdevicereportinfo) const \*

Relatório de saída.

## Comentários

Todos os membros de cadeia de caracteres nesta estrutura usam a codificação UTF-8.

O `deviceId` é um ID local do aplicativo: um valor de hash de 256 bits que identifica exclusivamente o dispositivo. Esse ID permanece sempre o mesmo para um determinado dispositivo, mesmo entre execuções de um aplicativo ou reinicializações do sistema, desde que o dispositivo se conecte à mesma porta USB. O aplicativo gera hashes de ID locais do aplicativo, em parte com informações específicas do aplicativo chamador e do sistema.

O `deviceRootId` é outro ID local do aplicativo, que identifica o nó de dispositivo raiz de dispositivos compostos. Isso permite que os aplicativos entendam a relação entre dispositivos individuais. Por exemplo, alguns teclados para jogos contornam o limite USB legado de oito pressionamentos de tecla simultâneos expondo-se como um dispositivo composto com vários nós de teclado. Esses nós são mesclados no teclado do "sistema", de modo que isso geralmente é transparente para o usuário. Mas, ao processar a entrada por teclado por meio da API GameInput, entender isso permite que os aplicativos evitem suposições incorretas (por exemplo, de que um pressionamento de tecla sempre vem de um dispositivo específico) ao mapear funções para pressionamentos de tecla. O `deviceId` e o `deviceRootId` são iguais se o dispositivo não for uma das várias interfaces em um dispositivo composto.

A cadeia de caracteres `displayName` contém um nome "amigável" para o dispositivo. Você pode exibir essa cadeia de caracteres na interface do usuário de um aplicativo, mas não há garantia de que ela esteja localizada. Essa falta de localização ocorre porque a API GameInput pesquisa essa cadeia de caracteres em vários locais, e um dos últimos fallbacks vem do firmware do dispositivo.

Os últimos campos da estrutura `GameInputDeviceInfo` são ponteiros para matrizes de tamanho variável com informações sobre o dispositivo, como informações sobre o suporte a force feedback e feedback tátil. Ponteiros `NULL` indicam que o recurso correspondente não está disponível ou não tem suporte no dispositivo. Um campo correspondente na estrutura indica o número de elementos em cada matriz, conforme observado nas anotações SAL (Source Annotation Language).

Nenhum dispositivo de entrada fornece valores legíveis para todos os atributos. Alguns dispositivos incluem valores somente para os atributos relevantes. O sistema retorna essas informações por meio de [IGameInputDevice::GetDeviceInfo](/pt-BR/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getdeviceinfo).

## Documentação conceitual

* [Force feedback no GameInput](/pt-BR/build/core-features/common/input/advanced/input-forcefeedback)
* [Dispositivos GameInput](/pt-BR/build/core-features/common/input/overviews/input-devices)

## Confira também

[Visão geral da API de entrada](/pt-BR/build/core-features/common/input/overviews/input-overview)\
[GameInput](/pt-BR/reference/input/gameinput/gameinput_members)\
[IGameInputDevice::GetDeviceInfo](/pt-BR/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getdeviceinfo)

## Histórico de versões

| Versão | Alterações |
| - | - |
| **v3** | O `uiNavigationInfo` foi substituído pelo ponteiro `controllerInfo`. Os campos separados de contagem+informações de eixos/botões/switches foram substituídos por `controllerInfo`. Adicionados `inputReportCount`/`inputReportInfo` e `outputReportCount`/`outputReportInfo`. Removido `hapticFeedbackMotorInfo`. |
| **v2** | **Adicionados** `revisionNumber`, `hardwareVersion`, `firmwareVersion`, `containerId` (GUID) e o ponteiro `sensorsInfo`. |
| **v1** | **Grande simplificação** em relação à v0: removidos `infoSize`, `interfaceNumber`, `collectionNumber`, `capabilities` (GameInputDeviceCapabilities) e os campos de contagem de toque/háptico/cadeia de caracteres/descritor; adicionados `supportedSystemButtons`, `displayName` como `const char*` e `pnpPath`. |
| **v0** | Introduzida. |

## Apêndice: versões anteriores

### v2

```cpp theme={null}
struct GameInputDeviceInfo
{
    uint16_t               vendorId;
    uint16_t               productId;
    uint16_t               revisionNumber;
    GameInputUsage         usage;
    GameInputVersion       hardwareVersion;
    GameInputVersion       firmwareVersion;
    APP_LOCAL_DEVICE_ID    deviceId;
    APP_LOCAL_DEVICE_ID    deviceRootId;
    GameInputDeviceFamily  deviceFamily;
    GameInputKind          supportedInput;
    GameInputRumbleMotors  supportedRumbleMotors;
    GameInputSystemButtons supportedSystemButtons;
    GUID                   containerId;
    const char*            displayName;
    const char*            pnpPath;

    const GameInputKeyboardInfo* keyboardInfo;
    const GameInputMouseInfo*    mouseInfo;
    const GameInputSensorsInfo*  sensorsInfo;

    const GameInputUiNavigationInfo* uiNavigationInfo;
    const GameInputArcadeStickInfo*  arcadeStickInfo;
    const GameInputFlightStickInfo*  flightStickInfo;
    const GameInputGamepadInfo*      gamepadInfo;
    const GameInputRacingWheelInfo*  racingWheelInfo;

    uint32_t                              controllerAxisCount;
    const GameInputControllerAxisInfo*    controllerAxisInfo;
    uint32_t                              controllerButtonCount;
    const GameInputControllerButtonInfo*  controllerButtonInfo;
    uint32_t                              controllerSwitchCount;
    const GameInputControllerSwitchInfo*  controllerSwitchInfo;

    uint32_t                               forceFeedbackMotorCount;
    const GameInputForceFeedbackMotorInfo* forceFeedbackMotorInfo;

    uint32_t                                hapticFeedbackMotorCount;
    const GameInputHapticFeedbackMotorInfo* hapticFeedbackMotorInfo;
};
```

### v1

```cpp theme={null}
struct GameInputDeviceInfo
{
    uint16_t               vendorId;
    uint16_t               productId;
    GameInputUsage         usage;
    APP_LOCAL_DEVICE_ID    deviceId;
    APP_LOCAL_DEVICE_ID    deviceRootId;
    GameInputDeviceFamily  deviceFamily;
    GameInputKind          supportedInput;
    GameInputRumbleMotors  supportedRumbleMotors;
    GameInputSystemButtons supportedSystemButtons;
    const char*            displayName;
    const char*            pnpPath;

    const GameInputKeyboardInfo* keyboardInfo;
    const GameInputMouseInfo*    mouseInfo;

    const GameInputUiNavigationInfo* uiNavigationInfo;
    const GameInputArcadeStickInfo*  arcadeStickInfo;
    const GameInputFlightStickInfo*  flightStickInfo;
    const GameInputGamepadInfo*      gamepadInfo;
    const GameInputRacingWheelInfo*  racingWheelInfo;

    uint32_t                              controllerAxisCount;
    const GameInputControllerAxisInfo*    controllerAxisInfo;
    uint32_t                              controllerButtonCount;
    const GameInputControllerButtonInfo*  controllerButtonInfo;
    uint32_t                              controllerSwitchCount;
    const GameInputControllerSwitchInfo*  controllerSwitchInfo;

    uint32_t                               forceFeedbackMotorCount;
    const GameInputForceFeedbackMotorInfo* forceFeedbackMotorInfo;

    uint32_t                                hapticFeedbackMotorCount;
    const GameInputHapticFeedbackMotorInfo* hapticFeedbackMotorInfo;
};
```


## Related topics

- [GameInputGamepadInfo](/pt-BR/reference/input/gameinput/structs/gameinputgamepadinfo.md)
- [GameInputSensorsInfo](/pt-BR/reference/input/gameinput/structs/gameinputsensorsinfo.md)
- [GameInputKeyboardInfo](/pt-BR/reference/input/gameinput/structs/gameinputkeyboardinfo.md)
- [GameInputMouseInfo](/pt-BR/reference/input/gameinput/structs/gameinputmouseinfo.md)
- [GameInputDeviceFamily](/pt-BR/reference/input/gameinput/enums/gameinputdevicefamily.md)
