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

# XGameStreamingGetGamepadPhysicality

> XGameStreamingGetGamepadPhysicality

# XGameStreamingGetGamepadPhysicality

Obtient le mappage de physicalité des entrées à partir d'une lecture de manette spécifique.

<a id="syntaxSection" />

## Syntaxe

```cpp theme={null}
HRESULT XGameStreamingGetGamepadPhysicality(
         IGameInputReading* gamepadReading,
         XGameStreamingGamepadPhysicality* gamepadPhysicality
)
```

<a id="parametersSection" />

### Paramètres

*gamepadReading*   \_In\_\
Type : IGameInputReading\*

Lecture de manette interrogée.

*gamepadPhysicality*   \_Out\_\
Type : [XGameStreamingGamepadPhysicality](/fr/reference/system/xgamestreaming/enums/xgamestreaminggamepadphysicality)\*

Physicalité de la lecture d'entrée.

<a id="retvalSection" />

### Valeur de retour

Type : HRESULT

Retourne **S\_OK** en cas de réussite ; sinon, retourne un code d'erreur.

**Erreurs potentielles**

| Code d'erreur | Valeur d'erreur | Cause de l'erreur |
| - | - | - |
| E\_GAMESTREAMING\_NOT\_INITIALIZED | 0x89245400 | Le runtime XGameStreaming n'a pas été initialisé. Appelez [XGameStreamingInitialize](/fr/reference/system/xgamestreaming/functions/xgamestreaminginitialize) avant d'appeler d'autres API. |
| E\_GAMESTREAMING\_NOT\_STREAMING\_CONTROLLER | 0x89245404 | La lecture actuelle ne provient pas d'une manette de streaming. |

<a id="remarksSection" />

## Remarques

Les jeux peuvent avoir besoin de différencier une entrée de manette selon qu'elle provient d'une manette physiquement connectée ou d'une disposition tactile traduite en entrée de manette virtuelle.

**Exemple de scénario**

Le jeu associe une action *sauter* au bouton **A**. Il propose une disposition tactile dont l'icône *sauter* est configurée pour appuyer sur le bouton **A** de la manette virtuelle. Le jeu offre également aux joueurs la possibilité de remapper la manette physique de sorte que **A** ne soit plus associé à *sauter*.

Le jeu peut présenter des indications visuelles pour interagir avec des éléments du jeu (par exemple, Appuyez sur **A** pour *sauter*). Lorsque le joueur utilise les dispositions tactiles, l'indication visuelle doit afficher l'iconographie du bouton de la disposition tactile.

<a id="exampleSection" />

## Exemple

Dans l'exemple de code suivant, le jeu associe par défaut l'action *sauter* au bouton **A** de la manette. Bien que ce paramètre soit personnalisable par le joueur, la disposition tactile
à l'écran est fixe ; par conséquent, un appui sur le bouton **A** de la disposition tactile doit toujours être traité comme *sauter*, tandis que le bouton **A** d'une manette physique doit être traité selon
la personnalisation du mappage de manette définie par le joueur.

```cpp theme={null}
void Game::Update(DX::StepTimer const& timer)
{
    g_gameInput->GetCurrentReading(GameInputKind::GameInputKindController, g_gamepad, &reading);
    
    GameInputGamepadState state;
    reading->GetGamepadState(&state);

    XGameStreamingGamepadPhysicality physicality = XGameStreamingGamepadPhysicality::None;
    
    HRESULT hr = XGameStreamingGetGamepadPhysicality(reading, &physicality);

    if ((state.buttons & GameInputGamepadA) != GameInputGamepadNone)
    {
        if (SUCCEEDED(hr))
        {
            if ((physicality & XGameStreamingGamepadPhysicality::AVirtual) == 
                XGameStreamingGamepadPhysicality::AVirtual)
            {
                // 'A' Input came from touch layout
                // Perform 'jump' action, if applicable
            }
            else if ((physicality & XGameStreamingGamepadPhysicality::APhysical) == 
                 XGameStreamingGamepadPhysicality::APhysical)
            {
                // 'A' Input came from the physical controller.
                // Lookup 'A' from the user's customized controller mapping.
                // Perform whatever action A is mapped to, if applicable.
            }
        }
        else
        {
            // Physicality not present on this gamepad.
            // Perform input 'A' action as if there were no stream.
        }
    }

    // UI icon updates.
    // If the player is using the touch layouts, then show touch iconography, 
    // otherwise switch to the physical controller iconography.
    if (SUCCEEDED(hr))
    {
        if ((physicality & XGameStreamingGamepadPhysicality::AllVirtual) != 
            XGameStreamingGamepadPhysicality::None)
        {
            // At least one input is coming from virtual touch layout.
            // Update UI icons to match the touch layouts.
        } 
        else 
        {
            if ((physicality & XGameStreamingGamepadPhysicality::AllPhysical) != 
                XGameStreamingGamepadPhysicality::None)
            {
                // At least one input is coming from a physical controller.
                // Update UI icons to match a physical controller inputs (for example, LT/LB/RT/RB icon).
            }
        }
    }
    else
    {
        // Use the default non-streaming behavior for UI icons 
    }
}
```

<a id="requirementsSection" />

## Configuration requise

**En-tête :** xgamestreaming.h

**Bibliothèque :** xgameruntime.lib

**Plateformes prises en charge :** Windows, consoles de la famille XBOX One et consoles XBOX Series

<a id="seealsoSection" />

## Voir aussi

[XGameStreaming](/fr/reference/system/xgamestreaming/xgamestreaming_members)\
[XGameStreamingGamepadPhysicality](/fr/reference/system/xgamestreaming/enums/xgamestreaminggamepadphysicality)\
[Adaptation tactile XGameStreaming](/fr/reference/system/xgamestreaming/xgamestreaming_members#TouchAdaptation)


## Related topics

- [XGameStreamingGetGamepadPhysicality](/reference/system/xgamestreaming/functions/xgamestreaminggetgamepadphysicality.md)
- [XGameStreamingGamepadPhysicality](/reference/system/xgamestreaming/enums/xgamestreaminggamepadphysicality.md)
- [XGameStreaming](/reference/system/xgamestreaming/xgamestreaming_members.md)
- [A designer's guide to building touch controls](/build/core-features/common/game-streaming/building-touch-layouts/game-streaming-tak-designers-guide.md)
- [Guía del diseñador para crear controles táctiles](/es/build/core-features/common/game-streaming/building-touch-layouts/game-streaming-tak-designers-guide.md)
