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

# GameInputInitialize

> Obtient une instance de l'interface IGameInput pour une version spécifique de l'API GameInput.

Obtient une instance de l'interface `IGameInput` pour une version spécifique de l'API GameInput.

## Syntaxe

```cpp theme={null}
HRESULT GameInputInitialize(
    REFIID riid,
    LPVOID* ppv
);
```

### Paramètres

*riid*   \_In\_\
Type : REFIID

ID d'interface (IID) de l'interface `IGameInput` à obtenir. L'IID sélectionne la version de l'API GameInput, par exemple `__uuidof(GameInput::v4::IGameInput)` pour la v4 ou `__uuidof(GameInput::v0::IGameInput)` pour la v0.

*ppv*   \_COM\_Outptr\_\
Type : LPVOID\*

Reçoit l'interface demandée du singleton sous-jacent par processus. Défini sur `nullptr` en cas d'échec de la fonction.

### Valeur de retour

Type : HRESULT

Retourne `S_OK` en cas de réussite. Retourne `E_NOINTERFACE` si *riid* n'est pas l'IID d'une interface `IGameInput`, ou si le runtime GameInput installé ne prend pas en charge la version de l'API demandée. Retourne un autre code d'erreur si le runtime GameInput ne peut pas être chargé.

## Remarques

`GameInputInitialize` fonctionne comme [GameInputCreate](https://docs.xbox.com/fr/reference/input/gameinput/functions/gameinputcreate.md), mais accepte l'IID de la version de `IGameInput` souhaitée. Les deux fonctions retournent une interface sur le même singleton par processus. Le premier appel crée le singleton, et les appels suivants y ajoutent une référence. Pour savoir quand appeler ces fonctions et combien de temps conserver la référence, consultez [GameInputCreate](https://docs.xbox.com/fr/reference/input/gameinput/functions/gameinputcreate.md).

Un runtime GameInput prend en charge toutes les versions de l'API inférieures ou égales à sa propre version majeure. Par exemple, le runtime GameInput 4.0 accepte l'IID de n'importe quelle version de `IGameInput`, de la v0 à la v4. Si vous demandez une version plus récente que le runtime installé, la fonction échoue avec `E_NOINTERFACE`. Vous pouvez vous en servir pour vérifier au moment de l'exécution si une version plus récente de l'API est disponible.

### Relation avec GameInputCreate

À partir de la v3, `GameInputCreate` dans l'en-tête GameInput est une fonction inline qui appelle `GameInputInitialize` avec l'IID de l'interface `IGameInput` déclarée par l'en-tête :

```cpp theme={null}
inline HRESULT GameInputCreate(
    _COM_Outptr_ IGameInput** gameInput)
{
    return GameInputInitialize(
        IID_IGameInput,
        reinterpret_cast<void**>(gameInput));
}
```

Par conséquent, dans la v3 et les versions ultérieures, l'appel de `GameInputCreate` crée la version de `IGameInput` qui correspond à l'en-tête que vous incluez. Pour créer une autre version sans inclure son en-tête, appelez directement `GameInputInitialize`.

Dans la v0, `GameInputCreate` est une fonction exportée par `GameInput.lib` qui crée toujours l'interface v0. Le fichier `GameInput.lib` du package NuGet [Microsoft.GameInput](https://www.nuget.org/packages/Microsoft.GameInput) exporte plutôt `GameInputInitialize`. Pour créer l'interface v0 lorsque vous liez cette bibliothèque, appelez `GameInputInitialize` avec l'IID v0. L'en-tête v0 ne déclare pas `GameInputInitialize` ; déclarez-la donc vous-même :

```cpp theme={null}
#include <v0/GameInput.h>

STDAPI GameInputInitialize(_In_ REFIID riid, _COM_Outptr_ LPVOID* ppv);

HRESULT CreateLegacyGameInput(IGameInput** gameInput)
{
    return GameInputInitialize(__uuidof(IGameInput), reinterpret_cast<void**>(gameInput));
}
```

Si le runtime installé est trop ancien pour fournir `GameInputInitialize`, la bibliothèque se rabat sur la fonction `GameInputCreate` du runtime pour l'IID v0 et retourne `E_NOINTERFACE` pour tout autre IID.

Pour obtenir une autre version de l'API d'un objet `IGameInput` dont vous disposez déjà, appelez `QueryInterface` sur celui-ci au lieu d'appeler de nouveau `GameInputInitialize`. Pour plus d'informations et d'exemples, consultez [Utilisation de plusieurs versions de l'API GameInput dans une même application](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-version-interop.md).

## Configuration requise

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

**Bibliothèque :** GameInput.lib

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

## Voir aussi

[GameInputCreate](https://docs.xbox.com/fr/reference/input/gameinput/functions/gameinputcreate.md)\
[Gestion des versions de l'API GameInput](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-versioning.md)\
[Utilisation de plusieurs versions de l'API GameInput dans une même application](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-version-interop.md)\
[GameInput](https://docs.xbox.com/fr/reference/input/gameinput/gameinput_members.md)

## Historique des versions

| Version | Modifications |
| - | - |
| **v3** | Introduite. |


## Related topics

- [GameInputCreate](https://docs.xbox.com/fr/reference/input/gameinput/functions/gameinputcreate.md)
- [GameInput sur les consoles XBOX](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-xbox.md)
- [Utilisation de plusieurs versions de l'API GameInput dans une même application](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-version-interop.md)
- [Membres de l'API GameInput](https://docs.xbox.com/fr/reference/input/gameinput/gameinput_members.md)
- [XInputOnGameInputInitialize](https://docs.xbox.com/fr/reference/input/xinputongameinput/functions/xinputongameinputinitialize.md)
