스트리밍 클라이언트 장치의 연결 상태가 변경될 때 호출될 콜백을 등록합니다. 등록 시 이미 연결된 모든 스트리밍 클라이언트 장치에 대해 콜백이 호출됩니다.
구문
HRESULT XGameStreamingRegisterConnectionStateChanged(
XTaskQueueHandle queue,
void* context,
XGameStreamingConnectionStateChangedCallback* callback,
XTaskQueueRegistrationToken* token
)
매개 변수
queue _In_opt_
형식: XTaskQueueHandle
변경 콜백을 배치할 비동기 큐에 대한 핸들입니다.
context _In_opt_
형식: void*
콜백 함수에 전달된 컨텍스트에 대한 옵션 포인터
callback _In_
형식: XGameStreamingConnectionStateChangedCallback*
스트리밍 클라이언트 장치의 연결 상태가 변경될 때 호출될 콜백 함수
token _Out_
형식: XTaskQueueRegistrationToken*
이벤트의 등록을 취소하는 데 사용할 수 있는 등록 토큰에 대한 포인터
반환 값
형식: HRESULT
성공한 경우 S_OK를 반환하고, 그렇지 않으면 오류 코드를 반환합니다.
잠재적인 오류
| 오류 코드 | 오류 값 | 오류 발생 원인 |
|---|---|---|
| E_GAMESTREAMING_NOT_INITIALIZED | 0x89245400 | XGameStreaming 런타임이 아직 초기화되지 않았습니다. 다른 API를 호출하기 전에 XGameStreamingInitialize를 호출합니다. |
오류 코드 목록은 오류 코드를 참조하세요.
비고
참고 항목
이 함수는 시간에 민감한 스레드에서 호출하는 것이 안전하지 않습니다. 자세한 내용은 시간에 민감한 스레드를 참조하세요.
이 API는 게임에서 스트리밍 클라이언트 장치 사용자 지정을 수행하고 게임이 연결된 장치가 있는지 여부를 기준으로 환경을 최적화할 수 있는 상태를 유지할 수 있는데 권장되는 방법입니다.
참고 항목
등록 시 현재 연결된 모든 스트리밍 클라이언트 장치에 대해 콜백이 호출됩니다.
예
// Called during game startup to hook into any game streaming start/stop events
void SetupStreamAware()
{
// Register a callback for client connections and disconnections. Note that the connection callback
// will fire for any already connected clients, so do all of our per-client setup in that callback.
XGameStreamingConnectionStateChangedRegistrationToken stateChangeToken = {0};
XGameStreamingRegisterConnectionStateChanged(
m_taskQueue, this, ConnectionStateChangedCallback, &stateChangeToken);
}
static void ConnectionStateChangedCallback(void* context, XGameStreamingClientId client, XGameStreamingConnectionState state)
{
static_cast<Game*>(context)->OnConnectionStateChanged(client, state);
}
void OnConnectionStateChanged(XGameStreamingClientId client, XGameStreamingConnectionState state)
{
switch (state)
{
case XGameStreamingConnectionState::Connected:
OnClientConnected(client);
break;
case XGameStreamingConnectionState::Disconnected:
OnClientDisconnected(client);
break;
default:
break;
}
}
void OnClientConnected(XGameStreamingClientId client)
{
// Update list of connected clients
m_streamingClients.push_back(client);
// Do per-client initialization
// ...
}
void OnClientDisconnected(XGameStreamingClientId client)
{
// Release our reference on the client that is no longer streaming the game
std::remove(m_streamingClients.begin(), m_streamingClients.end(), client);
// Do per-client cleanup
// ...
}
요구 사항
헤더: xgamestreaming.h
라이브러리: xgameruntime.lib
지원되는 플랫폼: Windows, Xbox One 패밀리 콘솔 및 Xbox Series 콘솔
참고 항목
XGameStreamingConnectionState
XGameStreamingConnectionStateChangedCallback
XGameStreamingUnregisterConnectionStateChanged
XGameStreaming