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

# WdLaunchRemoteGame

> WdLaunchRemoteGame

# WdLaunchRemoteGame

Inicia un juego en un dispositivo remoto.

## Sintaxis

```cpp theme={null}
HRESULT WdLaunchRemoteGame(  
         _In_z_ const char* remoteDevice,  
         _In_z_ const char* remotePath,  
         _In_opt_z_ const char* args,  
         _In_opt_ const WdLaunchOptions* launchOptions,  
         _Out_opt_ uint32_t* processId,  
         _Out_opt_ uint32_t* threadId  
);  
```

### Parámetros

`_In_z_ remoteDevice`\
Tipo: **const char\***

Nombre de host o dirección IP del dispositivo remoto (por ejemplo, `"192.168.1.100"` o `"MyDevKit"`).

`_In_z_ remotePath`\
Tipo: **const char\***

Ruta de acceso al ejecutable del juego en el dispositivo remoto. Puede ser una ruta de acceso absoluta (por ejemplo, `"D:\\Games\\MyGame\\game.exe"`) o una ruta de acceso relativa que se resuelve con respecto a la raíz común (por ejemplo, `"MyGame\\game.exe"`).

`_In_opt_z_ args`\
Tipo: **const char\***

Opcional. Argumentos de línea de comandos que se pasarán al ejecutable del juego (por ejemplo, `"-windowed -debug"`). Pase `nullptr` si no se necesitan argumentos.

`_In_opt_ launchOptions`\
Tipo: **[WdLaunchOptions](/reference/remoting/structs/wdlaunchoptions)\***

Opcional. Especifica el modo de inicio y el alias de la raíz común. Pase `nullptr` para usar la configuración predeterminada (inicio `Immediate`, raíz común predeterminada).

`_Out_opt_ processId`\
Tipo: **uint32\_t\***

Opcional. Recibe el identificador de proceso del juego iniciado. Pase `nullptr` si no se necesita el identificador de proceso.

`_Out_opt_ threadId`\
Tipo: **uint32\_t\***

Opcional. Recibe el identificador de subproceso del subproceso principal del juego iniciado. Pase `nullptr` si no se necesita el identificador de subproceso.

### Valor devuelto

Tipo: **HRESULT**

Devuelve `S_OK` si se realiza correctamente; de lo contrario, devuelve un código de error.

#### Códigos de error

| Código                  | Valor      | Descripción                                                     | Causa raíz                                                                                                                                                                           | Solución de problemas                                                                                                                                                                                                                                |
| ----------------------- | ---------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| E\_GAMEFILEPATHNOTEXIST | 0x8C114010 | La ruta de acceso del archivo del juego no existe.              | La ruta de acceso del ejecutable o del paquete del juego proporcionada no es válida o no es accesible en la máquina remota.                                                          | Valide que la ruta de acceso existe en el dispositivo remoto; confirme que la operación de copia se realizó correctamente                                                                                                                            |
| E\_CONNECTIONERROR      | 0x8C114014 | Error de conexión.                                              | Error genérico al establecer la conexión de red (error a nivel de transporte), no relacionado con la validez de la dirección IP ni con la resolución del nombre de la máquina remota | Compruebe la conectividad de red, las reglas de firewall y la disponibilidad del servicio en la máquina remota; compruebe la visibilidad entre dispositivos: deberían poder hacerse ping entre sí; reintente la conexión con el registro habilitado. |
| E\_NAMERESOLUTIONFAILED | 0x8C114012 | No se pudo resolver el nombre de la máquina remota.             | El nombre de host no se puede resolver mediante DNS ni mediante resolución de nombres local.                                                                                         | Compruebe la ortografía del nombre de host, la configuración de DNS y la conectividad de red; use la dirección IP para aislar los problemas de resolución de nombres.                                                                                |
| E\_INVALIDADDRESS       | 0x8C114013 | Dirección no válida.                                            | Se proporcionó una dirección de red incorrecta, con formato erróneo o no compatible (por ejemplo, un formato de IP incorrecto, una IP errónea o un protocolo no compatible).         | Confirme la dirección IP correcta; corrija el formato de la dirección y asegúrese de que use un protocolo IPv4                                                                                                                                       |
| E\_CLIENTNOTAUTHORIZED  | 0x8C114008 | El dispositivo rechazó al cliente.                              | El cliente no está en la lista de clientes de confianza del dispositivo. El intento de conexión se inició antes de completar el proceso de emparejamiento                            | Complete correctamente el proceso de emparejamiento por PIN; ejecute de nuevo la solicitud de conexión                                                                                                                                               |
| E\_SERVERNOTAUTHORIZED  | 0x8C114009 | El cliente rechazó al dispositivo.                              | El dispositivo de destino no está en la lista de puntos de conexión de confianza del cliente. El intento de conexión se inició antes de completar el proceso de emparejamiento       | Complete correctamente el proceso de emparejamiento por PIN; ejecute de nuevo la solicitud de conexión                                                                                                                                               |
| E\_SERVERTOOOLD         | 0x8C114011 | La versión del servidor es demasiado antigua para este cliente. | La versión de la API en el lado del cliente es más reciente que la versión del punto de conexión en el dispositivo remoto                                                            | Actualice wdEndpoint en la máquina remota a una versión compatible                                                                                                                                                                                   |
| E\_ADMIN\_REQUIRED      | 0x8C114016 | Se requieren privilegios de administrador.                      | El punto de conexión no se está ejecutando con privilegios elevados y la operación requiere permisos de nivel de administrador                                                       | Vuelva a ejecutar el punto de conexión como administrador                                                                                                                                                                                            |

## Comentarios

Solo puede haber un proceso de juego en ejecución en el dispositivo remoto a la vez. Si ya hay un juego en ejecución, esta función lo finalizará automáticamente y lo iniciará de nuevo. El juego existente se puede finalizar mediante [WdTerminateRemoteGame](/reference/remoting/functions/wdterminateremotegame) antes de iniciar uno nuevo.

Cuando se inicia con [WdLaunchMode::Suspended](/reference/remoting/enums/wdlaunchmode), el proceso del juego se inicia en estado suspendido. Use [WdResumeRemoteGame](/reference/remoting/functions/wdresumeremotegame) para reanudar la ejecución. Esto resulta útil para asociar un depurador antes de que el juego comience a ejecutarse.

## Ejemplos

### Ejemplo 1: Iniciar un juego en un dispositivo remoto

Inicia un ejecutable de juego copiado previamente usando la configuración predeterminada (ejecución inmediata, raíz común predeterminada).

```cpp theme={null}
// LaunchGame.cpp
// Launches a game executable on a remote device.
// Build: Link against wdremoteapi.lib

#include <windows.h>
#include <stdio.h>
#include "WdRemoteIteration.h"

int main()
{
    // TODO: Replace with your remote device IP address or hostname
    const char* remoteDevice = "192.168.1.100";

    // TODO: Replace with the path to your game executable on the remote device.
    // Relative paths resolve against the default common root.
    const char* remotePath = "MyGame\\Binaries\\MyGame.exe";

    uint32_t processId = 0;
    uint32_t threadId  = 0;

    HRESULT hr = WdLaunchRemoteGame(
        remoteDevice,
        remotePath,
        nullptr,       // args — no command-line arguments
        nullptr,       // launchOptions — defaults to Immediate mode, default common root
        &processId,
        &threadId);

    if (SUCCEEDED(hr))
    {
        printf("Game launched — PID: %u, TID: %u\n", processId, threadId);
    }
    else
    {
        printf("Launch failed: HRESULT 0x%08X\n", hr);
    }

    return hr;
}
```

### Ejemplo 2: Iniciar en modo suspendido para depurar

Inicia el juego en estado suspendido para poder asociar un depurador antes de que comience la ejecución. Una vez conectado el depurador, el usuario presiona Entrar para reanudar el proceso.

```cpp theme={null}
// LaunchSuspended.cpp
// Launches a game in suspended mode, waits for debugger attach, then resumes.
// Build: Link against wdremoteapi.lib

#include <windows.h>
#include <stdio.h>
#include "WdRemoteIteration.h"

int main()
{
    const char* remoteDevice = "192.168.1.100";
    const char* remotePath   = "MyGame\\Binaries\\MyGame.exe";

    WdLaunchOptions launchOptions = {};
    launchOptions.launchMode     = WdLaunchMode::Suspended;
    launchOptions.commonRootAlias = nullptr;  // Use default common root

    uint32_t processId = 0;
    uint32_t threadId  = 0;

    HRESULT hr = WdLaunchRemoteGame(
        remoteDevice,
        remotePath,
        "-debug -log",    // Command-line arguments passed to the executable
        &launchOptions,
        &processId,
        &threadId);

    if (FAILED(hr))
    {
        printf("Launch failed: HRESULT 0x%08X\n", hr);
        return hr;
    }

    printf("Game suspended — PID: %u\n", processId);
    printf("Attach your debugger to the remote process, then press Enter to resume...\n");
    getchar();

    hr = WdResumeRemoteGame(remoteDevice);
    if (SUCCEEDED(hr))
    {
        printf("Game resumed.\n");
    }
    else
    {
        printf("Resume failed: HRESULT 0x%08X\n", hr);
    }

    return hr;
}
```

### Ejemplo 3: Flujo de trabajo de copia e inicio

Muestra el ciclo de iteración típico: copiar los archivos del juego al dispositivo remoto y, a continuación, iniciar el ejecutable. Este es el flujo de trabajo integral más común de la API XBOX PC Remote Iteration.

```cpp theme={null}
// CopyAndLaunch.cpp
// Copies game files to a remote device, then launches the game.
// Build: Link against wdremoteapi.lib

#include <windows.h>
#include <stdio.h>
#include "WdRemoteIteration.h"

int main()
{
    // TODO: Replace these values with your own
    const char* remoteDevice   = "192.168.1.100";
    const char* localBuildPath = "C:\\builds\\MyGame";
    const char* gameFolderName = "MyGame";
    const char* gameExePath    = "MyGame\\Binaries\\MyGame.exe";

    // Step 1: Copy game files to the remote device
    printf("Copying files...\n");
    HRESULT hr = WdRemoteCopy(
        remoteDevice,
        localBuildPath,
        gameFolderName,
        nullptr, nullptr, nullptr, nullptr);

    if (FAILED(hr))
    {
        printf("Copy failed: HRESULT 0x%08X\n", hr);
        return hr;
    }

    // Step 2: Launch the game
    printf("Launching game...\n");
    hr = WdLaunchRemoteGame(
        remoteDevice,
        gameExePath,
        nullptr, nullptr, nullptr, nullptr);

    if (FAILED(hr))
    {
        printf("Launch failed: HRESULT 0x%08X\n", hr);
        return hr;
    }

    printf("Game files copied and launched successfully.\n");
    return 0;
}
```

## Requisitos

| Requisito                           | Valor                              |
| ----------------------------------- | ---------------------------------- |
| **Encabezado**                      | WdRemoteIteration.h                |
| **Biblioteca**                      | wdremoteapi.lib                    |
| **Sistemas operativos compatibles** | Windows 11 y versiones posteriores |
| **Arquitecturas compatibles**       | x64, ARM64                         |

## Consulte también

* [WdResumeRemoteGame](/reference/remoting/functions/wdresumeremotegame)
* [WdTerminateRemoteGame](/reference/remoting/functions/wdterminateremotegame)
* [WdLaunchOptions](/reference/remoting/structs/wdlaunchoptions)
* [WdLaunchMode](/reference/remoting/enums/wdlaunchmode)
* [Códigos de error de la API XBOX PC Remote Iteration](/reference/remoting/error-codes)
* [API XBOX PC Remote Iteration](/reference/remoting/remoteiteration_members)


## Related topics

- [WdLaunchMode](/es/reference/remoting/enums/wdlaunchmode.md)
- [WdLaunchOptions](/es/reference/remoting/structs/wdlaunchoptions.md)
- [WdResumeRemoteGame](/es/reference/remoting/functions/wdresumeremotegame.md)
- [WdTerminateRemoteGame](/es/reference/remoting/functions/wdterminateremotegame.md)
- [WdRegisterRemoteXboxGame](/es/reference/remoting/functions/wdregisterremotexboxgame.md)
