XGameStreamingGetClientIPAddress

此 API 返回一个最终用户客户端设备的 IP 地址,该设备用于通过 Xbox 游戏流式处理服务流式传输内容。 只有在遵守与通知最终用户信息收集有关的 Microsoft 标准隐私准则时,才应使用此 API 和相关信息。 如果对此 API 的合规性使用有任何疑问或顾虑,请联系 Microsoft 代表。

语法

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

参数

client _In_
类型:XGameStreamingClientId

正在被查询的流式处理客户端。

ipAddressSize _In_
类型:size_t

正在提供的 ipAddress 缓冲区的最大大小。 通常情况下,此值应仅为 ClientIPAddressMaxBytes.

ipAddress _Out_writes_z_(ipAddressSize)
类型:char*

将使用指定客户端 IP 地址填充的缓冲区。

返回值

类型:HRESULT

如果成功,则返回 S_OK;否则返回错误代码。

可能的错误

错误代码 错误值 错误原因
E_GAMESTREAMING_NOT_INITIALIZED 0x89245400 XGameStreaming 运行时尚未初始化。 在调用其他 API 之前,请先调用 XGameStreamingInitialize
E_GAMESTREAMING_CLIENT_NOT_CONNECTED 0x89245401 指定客户端未连接。
E_GAMESTREAMING_NO_DATA 0x89245402 请求的数据目前不可用, 数据可能稍后可用。
E_NOT_SUFFICIENT_BUFFER 0x7A ipAddress 大小不足以容纳 IP 地址和 null 终止字符。

有关错误代码的列表,请参阅 错误代码

备注

ipAddress 可以是 IPv4 地址 (1.2.3.4) 或 IPv6 (1:2:3:4:5:6:7:8)。 ParseNetworkString 需要时可用于分析字符串。

返回的 IP 地址是 Xbox 从流式处理客户端收到的地址。 如果流式处理客户端正在使用 VPN 或位于 NAT 之后,则使用地理位置的 IP 地址可能出现问题。

注意

开发期间或流式处理客户端与 Xbox 处于同一专用网络上的远程玩游戏方案中,可能返回专用 IP 地址。

示例

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

要求

头文件:xgamestreaming.h
库:xgameruntime.lib
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机

另请参阅

XGameStreaming