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 主机