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

> Obtiene una instancia de la interfaz IGameInput para una versión específica de la API de GameInput.

Obtiene una instancia de la interfaz `IGameInput` para una versión específica de la API de GameInput.

## Sintaxis

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

### Parámetros

*riid*   \_In\_\
Tipo: REFIID

El identificador de interfaz (IID) de la interfaz `IGameInput` que se va a obtener. El IID selecciona la versión de la API de GameInput, por ejemplo, `__uuidof(GameInput::v4::IGameInput)` para v4 o `__uuidof(GameInput::v0::IGameInput)` para v0.

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

Recibe la interfaz solicitada del singleton por proceso subyacente. Se establece en `nullptr` si se produce un error en la función.

### Valor devuelto

Tipo: HRESULT

Devuelve `S_OK` si se ejecuta correctamente. Devuelve `E_NOINTERFACE` si *riid* no es el IID de una interfaz `IGameInput` o si el runtime de GameInput instalado no admite la versión de la API solicitada. Devuelve otro código de error si no se puede cargar el runtime de GameInput.

## Comentarios

`GameInputInitialize` funciona como [GameInputCreate](https://docs.xbox.com/es/reference/input/gameinput/functions/gameinputcreate.md), pero toma el IID de la versión de `IGameInput` que desee. Ambas funciones devuelven una interfaz del mismo singleton por proceso. La primera llamada crea el singleton y las llamadas posteriores le agregan una referencia. Para obtener instrucciones sobre cuándo llamar a estas funciones y durante cuánto tiempo mantener la referencia, consulte [GameInputCreate](https://docs.xbox.com/es/reference/input/gameinput/functions/gameinputcreate.md).

Un runtime de GameInput admite todas las versiones de la API que sean inferiores o iguales a su propia versión principal. Por ejemplo, el runtime de GameInput 4.0 acepta el IID de cualquier versión de `IGameInput` de v0 a v4. Si solicita una versión más reciente que el runtime instalado, la función produce un error con `E_NOINTERFACE`. Puede usar esto para comprobar en tiempo de ejecución si hay disponible una versión más reciente de la API.

### Relación con GameInputCreate

A partir de v3, `GameInputCreate` en el encabezado de GameInput es una función insertada que llama a `GameInputInitialize` con el IID de la interfaz `IGameInput` que declara el encabezado:

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

Por este motivo, llamar a `GameInputCreate` en v3 y versiones posteriores crea la versión de `IGameInput` que coincide con el encabezado que incluye. Para crear una versión diferente sin incluir su encabezado, llame directamente a `GameInputInitialize`.

En v0, `GameInputCreate` es una función que exporta `GameInput.lib` y que siempre crea la interfaz v0. En cambio, el archivo `GameInput.lib` del paquete NuGet [Microsoft.GameInput](https://www.nuget.org/packages/Microsoft.GameInput) exporta `GameInputInitialize`. Para crear la interfaz v0 al vincular esa biblioteca, llame a `GameInputInitialize` con el IID de v0. El encabezado de v0 no declara `GameInputInitialize`, por lo que debe declararla usted mismo:

```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 el runtime instalado es demasiado antiguo para proporcionar `GameInputInitialize`, la biblioteca recurre a la función `GameInputCreate` del runtime para el IID de v0 y devuelve `E_NOINTERFACE` para cualquier otro IID.

Para obtener otra versión de la API de un objeto `IGameInput` que ya tiene, llame a `QueryInterface` en él en lugar de volver a llamar a `GameInputInitialize`. Para obtener más información y ejemplos, consulte [Uso de varias versiones de la API de GameInput en una aplicación](https://docs.xbox.com/es/build/core-features/common/input/overviews/input-version-interop.md).

## Requisitos

**Encabezado:** GameInput.h

**Biblioteca:** GameInput.lib

**Plataformas compatibles:** Windows, consolas de la familia XBOX One y consolas XBOX Series

## Consulte también

[GameInputCreate](https://docs.xbox.com/es/reference/input/gameinput/functions/gameinputcreate.md)\
[Control de versiones de la API de GameInput](https://docs.xbox.com/es/build/core-features/common/input/overviews/input-versioning.md)\
[Uso de varias versiones de la API de GameInput en una aplicación](https://docs.xbox.com/es/build/core-features/common/input/overviews/input-version-interop.md)\
[GameInput](https://docs.xbox.com/es/reference/input/gameinput/gameinput_members.md)

## Historial de versiones

| Versión | Cambios |
| - | - |
| **v3** | Se introdujo. |


## Related topics

- [GameInputCreate](https://docs.xbox.com/es/reference/input/gameinput/functions/gameinputcreate.md)
- [GameInput en consolas XBOX](https://docs.xbox.com/es/build/core-features/common/input/overviews/input-xbox.md)
- [Uso de varias versiones de la API de GameInput en una aplicación](https://docs.xbox.com/es/build/core-features/common/input/overviews/input-version-interop.md)
- [Miembros de la API de GameInput](https://docs.xbox.com/es/reference/input/gameinput/gameinput_members.md)
- [XInputOnGameInputInitialize](https://docs.xbox.com/es/reference/input/xinputongameinput/functions/xinputongameinputinitialize.md)
