> ## 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 de l'appareil, le cas échéant.

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

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

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

Version matérielle de l'appareil, le cas échéant.

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

Version du microprogramme de l'appareil, le cas échéant.

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

ID d'appareil 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/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/reference/input/gameinput/enums/gameinputkind)

Décrit le ou les types d'entrée pris en charge par l'appareil.

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

Décrit les moteurs de vibration accessibles sur l'appareil, le cas échéant.

*supportedSystemButtons*<br />
Type : [GameInputSystemButtons](/fr/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 de l'appareil.

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

Décrit la fonctionnalité Plug-and-Play de l'appareil. Utilisez ce chemin pour référencer les appareils sous-jacents via d'autres API.

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

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

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

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

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

Informations sur les capteurs de l'appareil.

*controllerInfo*<br />
Type : [GameInputControllerInfo](/fr/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 appareil.

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

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

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

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

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

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

*racingWheelInfo*<br />
Type : [GameInputRacingWheelInfo](/fr/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

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

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

Informations sur tous les moteurs de retour de force d'un appareil.

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

Nombre de rapports d'entrée de l'appareil.

*inputReportInfo*<br />
Type : [GameInputRawDeviceReportInfo](/fr/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 de l'appareil.

*outputReportInfo*<br />
Type : [GameInputRawDeviceReportInfo](/fr/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 l'appareil de manière unique. Cet ID reste toujours le même pour un appareil donné, même entre les exécutions d'une application ou les redémarrages du système, tant que l'appareil est connecté au même port USB. L'application génère des hachages d'ID locaux à l'application, en partie à partir d'informations propres à l'application appelante et au système.

Le `deviceRootId` est un autre ID local à l'application, qui identifie le nœud d'appareil racine des appareils composites. Cela permet aux applications de comprendre la relation entre les différents appareils. Par exemple, certains claviers de jeu contournent l'ancienne limite USB de huit frappes simultanées en s'exposant comme un appareil composite doté de plusieurs nœuds de clavier. Ces nœuds sont fusionnés dans le clavier « système », ce qui est généralement transparent pour l'utilisateur. Toutefois, lors du traitement de l'entrée par clavier via l'API GameInput, le fait de comprendre ce mécanisme permet aux applications d'éviter des hypothèses erronées (par exemple, qu'une frappe provient toujours d'un appareil spécifique) lors du mappage de fonctions à des frappes. Le `deviceId` et le `deviceRootId` sont identiques si l'appareil n'est pas l'une des multiples interfaces d'un appareil composite.

La chaîne `displayName` contient un nom « convivial » pour l'appareil. 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 l'une des dernières solutions de repli provient du microprogramme de l'appareil.

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

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

## Documentation conceptuelle

* [Retour de force dans GameInput](/fr/build/core-features/common/input/advanced/input-forcefeedback)
* [Appareils GameInput](/fr/build/core-features/common/input/overviews/input-devices)

## Voir aussi

[Vue d'ensemble de l'API Input](/fr/build/core-features/common/input/overviews/input-overview)\
[GameInput](/fr/reference/input/gameinput/gameinput_members)\
[IGameInputDevice::GetDeviceInfo](/fr/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/chaînes/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

- [GameInputDeviceInfo](/reference/input/gameinput/structs/gameinputdeviceinfo.md)
- [GameInputGamepadInfo](/reference/input/gameinput/structs/gameinputgamepadinfo.md)
- [GameInputSensorsInfo](/reference/input/gameinput/structs/gameinputsensorsinfo.md)
- [GameInputKeyboardInfo](/reference/input/gameinput/structs/gameinputkeyboardinfo.md)
- [GameInputMouseInfo](/reference/input/gameinput/structs/gameinputmouseinfo.md)
