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

> Obtém uma instância da interface IGameInput para uma versão específica da API GameInput.

Obtém uma instância da interface `IGameInput` para uma versão específica da API GameInput.

## Sintaxe

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

### Parâmetros

*riid*   \_In\_\
Tipo: REFIID

O ID de interface (IID) da interface `IGameInput` a ser obtida. O IID seleciona a versão da API GameInput, por exemplo, `__uuidof(GameInput::v4::IGameInput)` para a v4 ou `__uuidof(GameInput::v0::IGameInput)` para a v0.

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

Recebe a interface solicitada do singleton subjacente por processo. Definido como `nullptr` se a função falhar.

### Valor retornado

Tipo: HRESULT

Retorna `S_OK` em caso de êxito. Retorna `E_NOINTERFACE` se *riid* não for o IID de uma interface `IGameInput` ou se o runtime do GameInput instalado não oferecer suporte à versão da API solicitada. Retorna outro código de erro se o runtime do GameInput não puder ser carregado.

## Comentários

`GameInputInitialize` funciona como [GameInputCreate](https://docs.xbox.com/pt-BR/reference/input/gameinput/functions/gameinputcreate.md), mas recebe o IID da versão de `IGameInput` que você deseja. Ambas as funções retornam uma interface no mesmo singleton por processo. A primeira chamada cria o singleton, e as chamadas posteriores adicionam uma referência a ele. Para obter orientações sobre quando chamar essas funções e por quanto tempo manter a referência, confira [GameInputCreate](https://docs.xbox.com/pt-BR/reference/input/gameinput/functions/gameinputcreate.md).

Um runtime do GameInput oferece suporte a todas as versões da API menores ou iguais à sua própria versão principal. Por exemplo, o runtime do GameInput 4.0 aceita o IID de qualquer versão de `IGameInput` da v0 à v4. Se você solicitar uma versão mais recente que o runtime instalado, a função falhará com `E_NOINTERFACE`. Você pode usar isso para verificar em tempo de execução se uma versão mais recente da API está disponível.

### Relação com GameInputCreate

A partir da v3, `GameInputCreate` no cabeçalho do GameInput é uma função embutida que chama `GameInputInitialize` com o IID da interface `IGameInput` que o cabeçalho declara:

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

Por isso, chamar `GameInputCreate` na v3 e posteriores cria a versão de `IGameInput` que corresponde ao cabeçalho que você inclui. Para criar uma versão diferente sem incluir o cabeçalho dela, chame `GameInputInitialize` diretamente.

Na v0, `GameInputCreate` é uma função exportada por `GameInput.lib` e sempre cria a interface v0. Em vez disso, a `GameInput.lib` do pacote NuGet [Microsoft.GameInput](https://www.nuget.org/packages/Microsoft.GameInput) exporta `GameInputInitialize`. Para criar a interface v0 ao vincular essa biblioteca, chame `GameInputInitialize` com o IID da v0. O cabeçalho da v0 não declara `GameInputInitialize`, portanto declare-a você mesmo:

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

Se o runtime instalado for antigo demais para fornecer `GameInputInitialize`, a biblioteca recorrerá ao `GameInputCreate` do runtime para o IID da v0 e retornará `E_NOINTERFACE` para qualquer outro IID.

Para obter outra versão da API de um objeto `IGameInput` que você já tem, chame `QueryInterface` nele em vez de chamar `GameInputInitialize` novamente. Para obter mais informações e exemplos, confira [Usando várias versões da API GameInput em um aplicativo](https://docs.xbox.com/pt-BR/build/core-features/common/input/overviews/input-version-interop.md).

## Requisitos

**Cabeçalho:** GameInput.h

**Biblioteca:** GameInput.lib

**Plataformas com suporte:** Windows, consoles da família XBOX One e consoles XBOX Series

## Confira também

[GameInputCreate](https://docs.xbox.com/pt-BR/reference/input/gameinput/functions/gameinputcreate.md)\
[Controle de versão da API do GameInput](https://docs.xbox.com/pt-BR/build/core-features/common/input/overviews/input-versioning.md)\
[Usando várias versões da API GameInput em um aplicativo](https://docs.xbox.com/pt-BR/build/core-features/common/input/overviews/input-version-interop.md)\
[GameInput](https://docs.xbox.com/pt-BR/reference/input/gameinput/gameinput_members.md)

## Histórico de versões

| Versão | Alterações |
| - | - |
| **v3** | Introduzida. |


## Related topics

- [GameInputCreate](https://docs.xbox.com/pt-BR/reference/input/gameinput/functions/gameinputcreate.md)
- [GameInput em consoles XBOX](https://docs.xbox.com/pt-BR/build/core-features/common/input/overviews/input-xbox.md)
- [Usando várias versões da API GameInput em um aplicativo](https://docs.xbox.com/pt-BR/build/core-features/common/input/overviews/input-version-interop.md)
- [Membros da API do GameInput](https://docs.xbox.com/pt-BR/reference/input/gameinput/gameinput_members.md)
- [XInputOnGameInputInitialize](https://docs.xbox.com/pt-BR/reference/input/xinputongameinput/functions/xinputongameinputinitialize.md)
