> ## 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

Décrit toutes les informations relatives à un périphérique d'entrée.

## Syntaxe

```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;
};
```

### Membres

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

Identifie le fabricant du périphérique d'entrée.

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

Identifie le périphérique d'entrée en tant que produit.

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

Numéro de révision matérielle du périphérique, le cas échéant.

*usage*<br />
Type : [GameInputUsage](/fr-CA/reference/input/gameinput/structs/gameinputusage)

Index en deux parties qui décrit l'entrée utilisée.

*hardwareVersion*<br />
Type : [GameInputVersion](/fr-CA/reference/input/gameinput/structs/gameinputversion)

Version matérielle du périphérique, le cas échéant.

*firmwareVersion*<br />
Type : [GameInputVersion](/fr-CA/reference/input/gameinput/structs/gameinputversion)

Version du microprogramme du périphérique, le cas échéant.

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

ID de périphérique du périphérique d'entrée.

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

ID racine du périphérique d'entrée.

*deviceFamily*<br />
Type : [GameInputDeviceFamily](/fr-CA/reference/input/gameinput/enums/gameinputdevicefamily)

Désigne la famille de périphériques d'entrée à laquelle appartient le périphérique d'entrée.

*supportedInput*<br />
Type : [GameInputKind](/fr-CA/reference/input/gameinput/enums/gameinputkind)

Décrit le ou les types d'entrée pris en charge par le périphérique.

*supportedRumbleMotors*<br />
Type : [GameInputRumbleMotors](/fr-CA/reference/input/gameinput/enums/gameinputrumblemotors)

Décrit les moteurs de vibration accessibles sur le périphérique, le cas échéant.

*supportedSystemButtons*<br />
Type : [GameInputSystemButtons](/fr-CA/reference/input/gameinput/enums/gameinputsystembuttons)

Décrit les boutons disponibles pour contrôler le système, souvent en dehors d'un jeu.

*containerId*<br />
Type : GUID

ID de conteneur du périphérique d'entrée.

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

Décrit le nom convivial du périphérique.

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

Décrit la capacité Plug-and-Play du périphérique. Utilisez ce chemin pour faire référence aux périphériques sous-jacents au moyen d'autres API.

*keyboardInfo*<br />
Type : [GameInputKeyboardInfo](/fr-CA/reference/input/gameinput/structs/gameinputkeyboardinfo) const \*

Informations sur un périphérique d'entrée de type clavier.

*mouseInfo*<br />
Type : [GameInputMouseInfo](/fr-CA/reference/input/gameinput/structs/gameinputmouseinfo) const \*

Informations sur un périphérique d'entrée de type souris.

*sensorsInfo*<br />
Type : [GameInputSensorsInfo](/fr-CA/reference/input/gameinput/structs/gameinputsensorsinfo) const \*

Informations sur les capteurs du périphérique.

*controllerInfo*<br />
Type : [GameInputControllerInfo](/fr-CA/reference/input/gameinput/structs/gameinputcontrollerinfo) const \*

Informations sur le périphérique d'entrée de type manette générique. La manette représente les axes, boutons et commutateurs bruts non mappés d'un périphérique.

*arcadeStickInfo*<br />
Type : [GameInputArcadeStickInfo](/fr-CA/reference/input/gameinput/structs/gameinputarcadestickinfo) const \*

Informations sur un périphérique d'entrée de type manche d'arcade.

*flightStickInfo*<br />
Type : [GameInputFlightStickInfo](/fr-CA/reference/input/gameinput/structs/gameinputflightstickinfo) const \*

Informations sur un périphérique d'entrée de type manche de vol.

*gamepadInfo*<br />
Type : [GameInputGamepadInfo](/fr-CA/reference/input/gameinput/structs/gameinputgamepadinfo) const \*

Informations sur un périphérique d'entrée de type manette de jeu.

*racingWheelInfo*<br />
Type : [GameInputRacingWheelInfo](/fr-CA/reference/input/gameinput/structs/gameinputracingwheelinfo) const \*

Informations sur un périphérique d'entrée de type volant de course.

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

Le nombre de moteurs de retour de force du périphérique d'entrée.

*forceFeedbackMotorInfo*<br />
Type : [GameInputForceFeedbackMotorInfo](/fr-CA/reference/input/gameinput/structs/gameinputforcefeedbackmotorinfo) const \*

Informations sur tous les moteurs de retour de force d'un périphérique.

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

Nombre de rapports d'entrée du périphérique.

*inputReportInfo*<br />
Type : [GameInputRawDeviceReportInfo](/fr-CA/reference/input/gameinput/structs/gameinputrawdevicereportinfo) const \*

Objet d'informations sur les rapports d'entrée.

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

Nombre de rapports de sortie du périphérique.

*outputReportInfo*<br />
Type : [GameInputRawDeviceReportInfo](/fr-CA/reference/input/gameinput/structs/gameinputrawdevicereportinfo) const \*

Rapport de sortie.

## Remarques

Tous les membres de type chaîne de cette structure utilisent l'encodage UTF-8.

Le `deviceId` est un ID local à l'application : une valeur de hachage de 256 bits qui identifie de façon unique le périphérique. Cet ID reste toujours le même pour un périphérique donné, même d'une exécution de l'application à l'autre ou après un redémarrage du système, tant que le périphérique se connecte au même port USB. L'application génère les hachages d'ID locaux à l'application, en partie à l'aide d'informations propres à l'application appelante et au système.

Le `deviceRootId` est un autre ID local à l'application, qui identifie le nœud de périphérique racine des périphériques composites. Cela permet aux applications de comprendre la relation entre les périphériques individuels. Par exemple, certains claviers de jeu contournent la limite USB héritée de huit frappes simultanées en s'exposant comme un périphérique composite doté de plusieurs nœuds de clavier. Ces nœuds sont fusionnés dans le clavier « système », de sorte que ce fonctionnement est généralement transparent pour l'utilisateur. Toutefois, lors du traitement de l'entrée par clavier au moyen de l'API GameInput, la compréhension de ce principe permet aux applications d'éviter des hypothèses erronées (par exemple, qu'une frappe provient toujours d'un périphérique précis) lors de l'association de fonctions aux frappes. Le `deviceId` et le `deviceRootId` sont identiques si le périphérique n'est pas l'une des nombreuses interfaces d'un périphérique composite.

La chaîne `displayName` contient un nom « convivial » pour le périphérique. Vous pouvez afficher cette chaîne dans l'interface utilisateur d'une application, mais rien ne garantit qu'elle soit localisée. Cette absence de localisation s'explique par le fait que l'API GameInput recherche cette chaîne à plusieurs emplacements, et que l'une des dernières solutions de repli provient du microprogramme du périphérique.

Les derniers champs de la structure `GameInputDeviceInfo` sont des pointeurs vers des tableaux de taille variable contenant des informations sur le périphérique, comme des informations sur la prise en charge du retour de force et du retour haptique. Les pointeurs `NULL` indiquent que la fonctionnalité correspondante n'est pas disponible ou n'est pas prise en charge par le périphérique. Un champ correspondant de la structure indique le nombre d'éléments de chaque tableau, comme l'indiquent les annotations SAL (Source Annotation Language).

Aucun périphérique d'entrée ne fournit de valeurs lisibles pour tous les attributs. Certains périphériques n'incluent des valeurs que pour les attributs pertinents. Le système retourne ces informations au moyen de [IGameInputDevice::GetDeviceInfo](/fr-CA/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getdeviceinfo).

## Documentation conceptuelle

* [Retour de force dans GameInput](/fr-CA/build/core-features/common/input/advanced/input-forcefeedback)
* [Périphériques GameInput](/fr-CA/build/core-features/common/input/overviews/input-devices)

## Voir aussi

[Vue d'ensemble de l'API d'entrée](/fr-CA/build/core-features/common/input/overviews/input-overview)\
[GameInput](/fr-CA/reference/input/gameinput/gameinput_members)\
[IGameInputDevice::GetDeviceInfo](/fr-CA/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getdeviceinfo)

## Historique des versions

| Version | Modifications |
| - | - |
| **v3** | Remplacement de `uiNavigationInfo` par le pointeur `controllerInfo`. Remplacement des champs distincts de nombre et d'informations des axes, boutons et commutateurs par `controllerInfo`. Ajout de `inputReportCount`/`inputReportInfo` et de `outputReportCount`/`outputReportInfo`. Suppression de `hapticFeedbackMotorInfo`. |
| **v2** | **Ajout** de `revisionNumber`, `hardwareVersion`, `firmwareVersion`, `containerId` (GUID) et du pointeur `sensorsInfo`. |
| **v1** | **Simplification majeure** par rapport à v0 : suppression de `infoSize`, `interfaceNumber`, `collectionNumber`, `capabilities` (GameInputDeviceCapabilities) et des champs de nombre tactiles, haptiques, de chaînes et de descripteurs; ajout de `supportedSystemButtons`, de `displayName` en tant que `const char*` et de `pnpPath`. |
| **v0** | Introduit. |

## Annexe : versions précédentes

### 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](/fr-CA/reference/input/gameinput/structs/gameinputgamepadinfo.md)
- [GameInputKeyboardInfo](/fr-CA/reference/input/gameinput/structs/gameinputkeyboardinfo.md)
- [GameInputMouseInfo](/fr-CA/reference/input/gameinput/structs/gameinputmouseinfo.md)
- [GameInputSensorsInfo](/fr-CA/reference/input/gameinput/structs/gameinputsensorsinfo.md)
- [GameInputDeviceFamily](/fr-CA/reference/input/gameinput/enums/gameinputdevicefamily.md)
