XGameStreamingGetClientIPAddress

This API returns an IP address for the end user client device that is being used to stream content via the xbox game streaming service. This API and associated information should only be used when complying with Microsoft standard privacy guidelines with respect to informing end users of the information collection. If you have any questions or concerns regarding the compliant usage of this API reach out to your Microsoft representative.

Syntax

HRESULT XGameStreamingGetClientIPAddress(  
         XGameStreamingClientId client,  
         size_t ipAddressSize,  
         char* ipAddress  
)  

Parameters

client   _In_
Type: XGameStreamingClientId

The streaming client that is being queried.

ipAddressSize   _In_
Type: size_t

The maximum size of the ipAddress buffer that is being provided. Typically the value of this should just be the ClientIPAddressMaxBytes.

ipAddress   _Out_writes_z_(ipAddressSize)
Type: char*

The buffer that will be populated with the IP address of the specified client.

Return value

Type: HRESULT

Returns S_OK if successful; otherwise, returns an error code.

Potential Errors

Error Code Error Value Reason for Error
E_GAMESTREAMING_NOT_INITIALIZED 0x89245400 The XGameStreaming runtime has not been initialized. Call XGameStreamingInitialize before calling other APIs.
E_GAMESTREAMING_CLIENT_NOT_CONNECTED 0x89245401 The specified client is not connected.
E_GAMESTREAMING_NO_DATA 0x89245402 The requested data is not available. The data may be available later.
E_NOT_SUFFICIENT_BUFFER 0x7A ipAddress is not large enough to hold the IP address and null terminating character.

For a list of error codes, see Error Codes.

Remarks

The ipAddress can be either an IPv4 address (1.2.3.4) or an IPv6 address (1:2:3:4:5:6:7:8). ParseNetworkString can be used to parse the string if desired.

The IP address returned is what the Xbox has received from the streaming client. If the streaming client is using a VPN or is behind a NAT then utilizing the IP address for geolocation may have issues.

Note

Private IP addresses may be returned during development or remote play scenarios where the streaming client and the Xbox are on the same private network.

Example

void GameStreamingClientManager::GetClientIPAddress(XGameStreamingClientId client)
{
    // Create the output buffer for the IP address
    char ipAddress[ClientIPAddressMaxBytes]; 

    // Get the IP address of the client 
    HRESULT hr = XGameStreamingGetClientIPAddress(client, ClientIPAddressMaxBytes, ipAddress); 

    if (SUCCEEDED(hr)) 
    { 
        // Game logic to use IP address
    } 
    else if (hr == E_GAMESTREAMING_CLIENT_NO_DATA) 
    { 
        // Game logic handles no data on client case 
    } 
    else 
    { 
        // In case of error just log and proceed as if there was no data 
        LogFormat(L"XGameStreamingGetClientIPAddress failed %x", hr); 
    } 
}

Requirements

Header: xgamestreaming.h
Library: xgameruntime.lib
Supported platforms: Windows, Xbox One family consoles and Xbox Series consoles

See also

XGameStreaming