From 676e5d0832d0da2f686cb82f7c6c163d3b788ba1 Mon Sep 17 00:00:00 2001
From: Nathan Iskandar <54045034+natiskan@users.noreply.github.com>
Date: Tue, 15 Jun 2021 15:54:53 -0700
Subject: [PATCH] 2106 GDK (#570)
---
.gitignore | 10 +-
Build/GetXsapiAndroidBinaryDir.cmake | 6 +
Build/Microsoft.Xbox.Services.Win32.C.Dll.def | 584 ++++++++++++++
External/Xal/External/libHttpClient | 2 +-
External/Xal/Source/Xal/Include/Xal/xal.h | 38 +-
.../Xal/Include/Xal/xal_internal_telemetry.h | 2 +-
.../Include/Xal/xal_internal_web_account.h | 16 +-
.../Xal/Source/Xal/Include/Xal/xal_platform.h | 24 +-
.../Xal/Source/Xal/Include/Xal/xal_user.h | 54 +-
.../Xal/Source/Xal/Include/Xal/xal_uwp_user.h | 4 +-
.../Xal/Source/Xal/Include/Xal/xal_version.h | 2 +-
.../Xal/Source/Xal/Include/Xal/xal_xdk_ext.h | 4 +-
.../pplx/details/threadpool.hpp | 2 +-
Include/cpprestinclude/pplx/threadpool.h | 1 +
Include/xsapi-c/achievements_manager_c.h | 4 +-
Include/xsapi-c/multiplayer_activity_c.h | 291 ++++---
Include/xsapi-c/multiplayer_c.h | 762 ++++++++++--------
Include/xsapi-c/notification_c.h | 3 -
Include/xsapi-c/presence_c.h | 6 +-
Include/xsapi-c/social_c.h | 9 +-
Include/xsapi-c/xbox_live_global_c.h | 2 +
Include/xsapi-cpp/impl/notification.hpp | 2 +-
Include/xsapi-cpp/notification_service.h | 8 +-
.../RTA/notification_subscription.cpp | 4 +-
Source/Shared/HookedUri/asyncrt_utils.h | 2 +-
.../HookedUri/details/asyncrt_utils.hpp | 4 +-
Source/Shared/HookedUri/details/basic_types.h | 2 +
Source/Shared/Logger/log.h | 5 +-
Source/Shared/a/android_utils.cpp | 2 +
Source/Shared/a/android_utils.h | 4 +
Source/Shared/a/http_call_jni.cpp | 2 +-
Source/Shared/a/rwlock_guard.h | 4 +
Source/Shared/build_version.h | 2 +-
Source/Shared/internal_mem.h | 10 +-
Utilities/CMake/Android/CMakeLists.txt | 158 ++++
Utilities/CMake/Android/GetXSAPIFlags.cmake | 29 +
Utilities/CMake/CMakeLists.txt | 674 +++++-----------
.../CMake/GetAndroidXSAPISourceFiles.cmake | 79 ++
.../CMake/GetCommonXSAPISourceFiles.cmake | 335 ++++++++
Utilities/Docs/quality-override.txt | 231 ++++++
.../VSOBuildScripts/toolsDownloadRelease.ps1 | 84 ++
.../VSOBuildScripts/toolsVpackUpdate.ps1 | 112 +++
.../VSOBuildScripts/unitTestGetResults.ps1 | 106 +++
xsapi.staticlib.props | 6 +-
44 files changed, 2679 insertions(+), 1012 deletions(-)
create mode 100644 Build/GetXsapiAndroidBinaryDir.cmake
create mode 100644 Build/Microsoft.Xbox.Services.Win32.C.Dll.def
create mode 100644 Utilities/CMake/Android/CMakeLists.txt
create mode 100644 Utilities/CMake/Android/GetXSAPIFlags.cmake
create mode 100644 Utilities/CMake/GetAndroidXSAPISourceFiles.cmake
create mode 100644 Utilities/CMake/GetCommonXSAPISourceFiles.cmake
create mode 100644 Utilities/Docs/quality-override.txt
create mode 100644 Utilities/VSOBuildScripts/toolsDownloadRelease.ps1
create mode 100644 Utilities/VSOBuildScripts/toolsVpackUpdate.ps1
create mode 100644 Utilities/VSOBuildScripts/unitTestGetResults.ps1
diff --git a/.gitignore b/.gitignore
index cdcac041..7e153e62 100644
--- a/.gitignore
+++ b/.gitignore
@@ -129,6 +129,8 @@ Binaries/
Debug/
Release/
ARM/
+Built/
+Bins/
# Allow files in our /Build folder
!/Build
@@ -157,4 +159,10 @@ Tests/APIExplorer/XDK/Kits/DirectXTK/Src/Shaders/Compiled/*
Microsoft.Xbox.Services.*.sln.log
Microsoft.Xbox.Services.*.sln.out
-**/apirunner-log.txt
\ No newline at end of file
+**/apirunner-log.txt
+
+# Android Studio generated files
+**/.idea
+**/*.iml
+**/local.properties
+**/.cxx
\ No newline at end of file
diff --git a/Build/GetXsapiAndroidBinaryDir.cmake b/Build/GetXsapiAndroidBinaryDir.cmake
new file mode 100644
index 00000000..075e11ed
--- /dev/null
+++ b/Build/GetXsapiAndroidBinaryDir.cmake
@@ -0,0 +1,6 @@
+cmake_minimum_required(VERSION 3.6)
+
+function(GET_XSAPI_ANDROID_BINARY_DIR PATH_TO_ROOT OUT_BINARY_DIR)
+ string(TOLOWER "${CMAKE_BUILD_TYPE}" PATH_FLAVOR)
+ set(${OUT_BINARY_DIR} "${PATH_TO_ROOT}/Built/Android/${ANDROID_ABI}/${PATH_FLAVOR}" PARENT_SCOPE)
+endfunction()
diff --git a/Build/Microsoft.Xbox.Services.Win32.C.Dll.def b/Build/Microsoft.Xbox.Services.Win32.C.Dll.def
new file mode 100644
index 00000000..94a2df2a
--- /dev/null
+++ b/Build/Microsoft.Xbox.Services.Win32.C.Dll.def
@@ -0,0 +1,584 @@
+LIBRARY xsapi
+EXPORTS
+ HCAddCallRoutedHandler
+ HCAddWebSocketRoutedHandler
+ HCCleanup
+ HCCleanupAsync
+ HCGetHttpCallPerformFunction
+ HCGetLibVersion
+ HCGetWebSocketConnectResult
+ HCGetWebSocketFunctions
+ HCGetWebSocketSendMessageResult
+ HCHttpCallCloseHandle
+ HCHttpCallCreate
+ HCHttpCallDuplicateHandle
+ HCHttpCallGetContext
+ HCHttpCallGetId
+ HCHttpCallGetRequestUrl
+ HCHttpCallPerformAsync
+ HCHttpCallRequestGetHeader
+ HCHttpCallRequestGetHeaderAtIndex
+ HCHttpCallRequestGetNumHeaders
+ HCHttpCallRequestGetRequestBodyBytes
+ HCHttpCallRequestGetRequestBodyString
+ HCHttpCallRequestGetRetryAllowed
+ HCHttpCallRequestGetRetryCacheId
+ HCHttpCallRequestGetRetryDelay
+ HCHttpCallRequestGetTimeout
+ HCHttpCallRequestGetTimeoutWindow
+ HCHttpCallRequestGetUrl
+ HCHttpCallRequestSetHeader
+ HCHttpCallRequestSetRequestBodyBytes
+ HCHttpCallRequestSetRequestBodyString
+ HCHttpCallRequestSetRetryAllowed
+ HCHttpCallRequestSetRetryCacheId
+ HCHttpCallRequestSetRetryDelay
+ HCHttpCallRequestSetSSLValidation
+ HCHttpCallRequestSetTimeout
+ HCHttpCallRequestSetTimeoutWindow
+ HCHttpCallRequestSetUrl
+ HCHttpCallResponseAppendResponseBodyBytes
+ HCHttpCallResponseGetHeader
+ HCHttpCallResponseGetHeaderAtIndex
+ HCHttpCallResponseGetNetworkErrorCode
+ HCHttpCallResponseGetNumHeaders
+ HCHttpCallResponseGetPlatformNetworkErrorMessage
+ HCHttpCallResponseGetResponseBodyBytes
+ HCHttpCallResponseGetResponseBodyBytesSize
+ HCHttpCallResponseGetResponseString
+ HCHttpCallResponseGetStatusCode
+ HCHttpCallResponseSetHeader
+ HCHttpCallResponseSetHeaderWithLength
+ HCHttpCallResponseSetNetworkErrorCode
+ HCHttpCallResponseSetPlatformNetworkErrorMessage
+ HCHttpCallResponseSetResponseBodyBytes
+ HCHttpCallResponseSetStatusCode
+ HCHttpCallSetContext
+ HCHttpCallSetTracing
+ HCInitialize
+ HCMemGetFunctions
+ HCMemSetFunctions
+ HCMockAddMock
+ HCMockCallCreate
+ HCMockClearMocks
+ HCMockRemoveMock
+ HCMockResponseSetHeader
+ HCMockResponseSetNetworkErrorCode
+ HCMockResponseSetResponseBodyBytes
+ HCMockResponseSetStatusCode
+ HCMockSetMockMatchedCallback
+ HCRemoveCallRoutedHandler
+ HCRemoveWebSocketRoutedHandler
+ HCSetGlobalProxy
+ HCSetHttpCallPerformFunction
+ HCSettingsGetTraceLevel
+ HCSettingsSetTraceLevel
+ HCSetWebSocketFunctions
+ HCTraceImplMessage
+ HCTraceImplScopeId
+ HCTraceSetClientCallback
+ HCTraceSetPlatformCallbacks
+ HCTraceSetTraceToDebugger
+ HCWebSocketCloseHandle
+ HCWebSocketConnectAsync
+ HCWebSocketCreate
+ HCWebSocketDisconnect
+ HCWebSocketDuplicateHandle
+ HCWebSocketGetEventFunctions
+ HCWebSocketGetHeader
+ HCWebSocketGetHeaderAtIndex
+ HCWebSocketGetNumHeaders
+ HCWebSocketGetProxyUri
+ HCWebSocketSendBinaryMessageAsync
+ HCWebSocketSendMessageAsync
+ HCWebSocketSetHeader
+ HCWebSocketSetProxyDecryptsHttps
+ HCWebSocketSetProxyUri
+ XalAddUserWithUiAsync
+ XalAddUserWithUiResult
+ XalCleanupAsync
+ XalCleanupResult
+ XalCompareUsers
+ XalFindUserByLocalId
+ XalGetDeviceUser
+ XalGetDeviceUserIsPresent
+ XalGetMaxUsers
+ XalGetSandbox
+ XalGetSandboxSize
+ XalGetTitleId
+ XalInitialize
+ XalMemGetFunctions
+ XalMemSetFunctions
+ XalPlatformCryptoSetCallbacks
+ XalPlatformDateTimeSetCallbacks
+ XalPlatformRemoteConnectCancelPrompt
+ XalPlatformRemoteConnectSetEventHandlers
+ XalPlatformStorageClearComplete
+ XalPlatformStorageReadComplete
+ XalPlatformStorageSetEventHandlers
+ XalPlatformStorageWriteComplete
+ XalPlatformWebSetEventHandler
+ XalPlatformWebShowUrlComplete
+ XalSignOutUserAsync
+ XalSignOutUserAsyncIsPresent
+ XalSignOutUserResult
+ XalTryAddDefaultUserSilentlyAsync
+ XalTryAddDefaultUserSilentlyResult
+ XalTryAddUserByIdAsync
+ XalTryAddUserByIdResult
+ XalUserCheckPrivilege
+ XalUserCloseHandle
+ XalUserCloseSignoutDeferral
+ XalUserDuplicateHandle
+ XalUserGetAgeGroup
+ XalUserGetGamerPictureAsync
+ XalUserGetGamerPictureResult
+ XalUserGetGamerPictureResultSize
+ XalUserGetGamertag
+ XalUserGetGamertagSize
+ XalUserGetId
+ XalUserGetLocalId
+ XalUserGetSignoutDeferral
+ XalUserGetState
+ XalUserGetTokenAndSignatureSilentlyAsync
+ XalUserGetTokenAndSignatureSilentlyResult
+ XalUserGetTokenAndSignatureSilentlyResultSize
+ XalUserIsDevice
+ XalUserIsGuest
+ XalUserRegisterChangeEventHandler
+ XalUserResolveIssueWithUiAsync
+ XalUserResolveIssueWithUiResult
+ XalUserResolvePrivilegeWithUiIsPresent
+ XalUserResolveUserPrivilegeWithUiAsync
+ XalUserResolveUserPrivilegeWithUiResult
+ XalUserUnregisterChangeEventHandler
+ XAsyncBegin
+ XAsyncCancel
+ XAsyncComplete
+ XAsyncGetResult
+ XAsyncGetResultSize
+ XAsyncGetStatus
+ XAsyncRun
+ XAsyncSchedule
+ XblAchievementsAddAchievementProgressChangeHandler
+ XblAchievementsGetAchievementAsync
+ XblAchievementsGetAchievementResult
+ XblAchievementsGetAchievementsForTitleIdAsync
+ XblAchievementsGetAchievementsForTitleIdResult
+ XblAchievementsManagerAddLocalUser
+ XblAchievementsManagerDoWork
+ XblAchievementsManagerGetAchievement
+ XblAchievementsManagerGetAchievements
+ XblAchievementsManagerGetAchievementsByState
+ XblAchievementsManagerIsUserInitialized
+ XblAchievementsManagerRemoveLocalUser
+ XblAchievementsManagerResultCloseHandle
+ XblAchievementsManagerResultDuplicateHandle
+ XblAchievementsManagerResultGetAchievements
+ XblAchievementsManagerUpdateAchievement
+ XblAchievementsRemoveAchievementProgressChangeHandler
+ XblAchievementsResultCloseHandle
+ XblAchievementsResultDuplicateHandle
+ XblAchievementsResultGetAchievements
+ XblAchievementsResultGetNextAsync
+ XblAchievementsResultGetNextResult
+ XblAchievementsResultHasNext
+ XblAchievementsUpdateAchievementAsync
+ XblAchievementsUpdateAchievementForTitleIdAsync
+ XblAchievementUnlockAddNotificationHandler
+ XblAchievementUnlockRemoveNotificationHandler
+ XblAddServiceCallRoutedHandler
+ XblCleanupAsync
+ XblContextCloseHandle
+ XblContextCreateHandle
+ XblContextDuplicateHandle
+ XblContextGetUser
+ XblContextGetXboxUserId
+ XblContextSettingsGetHttpRetryDelay
+ XblContextSettingsGetHttpTimeoutWindow
+ XblContextSettingsGetLongHttpTimeout
+ XblContextSettingsGetUseCrossPlatformQosServers
+ XblContextSettingsGetWebsocketTimeoutWindow
+ XblContextSettingsSetHttpRetryDelay
+ XblContextSettingsSetHttpTimeoutWindow
+ XblContextSettingsSetLongHttpTimeout
+ XblContextSettingsSetUseCrossPlatformQosServers
+ XblContextSettingsSetWebsocketTimeoutWindow
+ XblDisableAssertsForXboxLiveThrottlingInDevSandboxes
+ XblEventsSetMaxFileSize
+ XblEventsSetStorageAllotment
+ XblEventsWriteInGameEvent
+ XblFormatSecureDeviceAddress
+ XblGameInviteAddNotificationHandler
+ XblGameInviteRemoveNotificationHandler
+ XblGetAsyncQueue
+ XblGetErrorCondition
+ XblGetScid
+ XblHttpCallCloseHandle
+ XblHttpCallCreate
+ XblHttpCallDuplicateHandle
+ XblHttpCallGetHeader
+ XblHttpCallGetHeaderAtIndex
+ XblHttpCallGetNetworkErrorCode
+ XblHttpCallGetNumHeaders
+ XblHttpCallGetPlatformNetworkErrorMessage
+ XblHttpCallGetRequestUrl
+ XblHttpCallGetResponseBodyBytes
+ XblHttpCallGetResponseBodyBytesSize
+ XblHttpCallGetResponseString
+ XblHttpCallGetStatusCode
+ XblHttpCallPerformAsync
+ XblHttpCallRequestSetHeader
+ XblHttpCallRequestSetLongHttpCall
+ XblHttpCallRequestSetRequestBodyBytes
+ XblHttpCallRequestSetRequestBodyString
+ XblHttpCallRequestSetRetryAllowed
+ XblHttpCallRequestSetRetryCacheId
+ XblHttpCallSetTracing
+ XblInitialize
+ XblLeaderboardGetLeaderboardAsync
+ XblLeaderboardGetLeaderboardResult
+ XblLeaderboardGetLeaderboardResultSize
+ XblLeaderboardResultGetNextAsync
+ XblLeaderboardResultGetNextResult
+ XblLeaderboardResultGetNextResultSize
+ XblLocalStorageClearComplete
+ XblLocalStorageReadComplete
+ XblLocalStorageSetHandlers
+ XblLocalStorageWriteComplete
+ XblMatchmakingCreateMatchTicketAsync
+ XblMatchmakingCreateMatchTicketResult
+ XblMatchmakingDeleteMatchTicketAsync
+ XblMatchmakingGetHopperStatisticsAsync
+ XblMatchmakingGetHopperStatisticsResult
+ XblMatchmakingGetHopperStatisticsResultSize
+ XblMatchmakingGetMatchTicketDetailsAsync
+ XblMatchmakingGetMatchTicketDetailsResult
+ XblMatchmakingGetMatchTicketDetailsResultSize
+ XblMemGetFunctions
+ XblMemSetFunctions
+ XblMultiplayerActivityAddInviteHandler
+ XblMultiplayerActivityDeleteActivityAsync
+ XblMultiplayerActivityFlushRecentPlayersAsync
+ XblMultiplayerActivityGetActivityAsync
+ XblMultiplayerActivityGetActivityResult
+ XblMultiplayerActivityGetActivityResultSize
+ XblMultiplayerActivityRemoveInviteHandler
+ XblMultiplayerActivitySendInvitesAsync
+ XblMultiplayerActivitySetActivityAsync
+ XblMultiplayerActivityUpdateRecentPlayers
+ XblMultiplayerAddConnectionIdChangedHandler
+ XblMultiplayerAddSessionChangedHandler
+ XblMultiplayerAddSubscriptionLostHandler
+ XblMultiplayerClearActivityAsync
+ XblMultiplayerCreateSearchHandleAsync
+ XblMultiplayerCreateSearchHandleResult
+ XblMultiplayerDeleteSearchHandleAsync
+ XblMultiplayerEventArgsFindMatchCompleted
+ XblMultiplayerEventArgsMember
+ XblMultiplayerEventArgsMembers
+ XblMultiplayerEventArgsMembersCount
+ XblMultiplayerEventArgsPerformQoSMeasurements
+ XblMultiplayerEventArgsPropertiesJson
+ XblMultiplayerEventArgsXuid
+ XblMultiplayerGetActivitiesForSocialGroupAsync
+ XblMultiplayerGetActivitiesForSocialGroupResult
+ XblMultiplayerGetActivitiesForSocialGroupResultCount
+ XblMultiplayerGetActivitiesForUsersAsync
+ XblMultiplayerGetActivitiesForUsersResult
+ XblMultiplayerGetActivitiesForUsersResultCount
+ XblMultiplayerGetActivitiesWithPropertiesForSocialGroupAsync
+ XblMultiplayerGetActivitiesWithPropertiesForSocialGroupResult
+ XblMultiplayerGetActivitiesWithPropertiesForSocialGroupResultSize
+ XblMultiplayerGetActivitiesWithPropertiesForUsersAsync
+ XblMultiplayerGetActivitiesWithPropertiesForUsersResult
+ XblMultiplayerGetActivitiesWithPropertiesForUsersResultSize
+ XblMultiplayerGetSearchHandlesAsync
+ XblMultiplayerGetSearchHandlesResult
+ XblMultiplayerGetSearchHandlesResultCount
+ XblMultiplayerGetSessionAsync
+ XblMultiplayerGetSessionByHandleAsync
+ XblMultiplayerGetSessionByHandleResult
+ XblMultiplayerGetSessionResult
+ XblMultiplayerManagerAutoFillMembersDuringMatchmaking
+ XblMultiplayerManagerCancelMatch
+ XblMultiplayerManagerDoWork
+ XblMultiplayerManagerEstimatedMatchWaitTime
+ XblMultiplayerManagerFindMatch
+ XblMultiplayerManagerGameSessionActive
+ XblMultiplayerManagerGameSessionConstants
+ XblMultiplayerManagerGameSessionCorrelationId
+ XblMultiplayerManagerGameSessionHost
+ XblMultiplayerManagerGameSessionIsHost
+ XblMultiplayerManagerGameSessionMembers
+ XblMultiplayerManagerGameSessionMembersCount
+ XblMultiplayerManagerGameSessionPropertiesJson
+ XblMultiplayerManagerGameSessionSessionReference
+ XblMultiplayerManagerGameSessionSetProperties
+ XblMultiplayerManagerGameSessionSetSynchronizedHost
+ XblMultiplayerManagerGameSessionSetSynchronizedProperties
+ XblMultiplayerManagerInitialize
+ XblMultiplayerManagerJoinability
+ XblMultiplayerManagerJoinGame
+ XblMultiplayerManagerJoinGameFromLobby
+ XblMultiplayerManagerJoinLobby
+ XblMultiplayerManagerLeaveGame
+ XblMultiplayerManagerLobbySessionAddLocalUser
+ XblMultiplayerManagerLobbySessionConstants
+ XblMultiplayerManagerLobbySessionCorrelationId
+ XblMultiplayerManagerLobbySessionDeleteLocalMemberProperties
+ XblMultiplayerManagerLobbySessionHost
+ XblMultiplayerManagerLobbySessionInviteFriends
+ XblMultiplayerManagerLobbySessionInviteUsers
+ XblMultiplayerManagerLobbySessionIsHost
+ XblMultiplayerManagerLobbySessionLocalMembers
+ XblMultiplayerManagerLobbySessionLocalMembersCount
+ XblMultiplayerManagerLobbySessionMembers
+ XblMultiplayerManagerLobbySessionMembersCount
+ XblMultiplayerManagerLobbySessionPropertiesJson
+ XblMultiplayerManagerLobbySessionRemoveLocalUser
+ XblMultiplayerManagerLobbySessionSessionReference
+ XblMultiplayerManagerLobbySessionSetLocalMemberConnectionAddress
+ XblMultiplayerManagerLobbySessionSetLocalMemberProperties
+ XblMultiplayerManagerLobbySessionSetProperties
+ XblMultiplayerManagerLobbySessionSetSynchronizedHost
+ XblMultiplayerManagerLobbySessionSetSynchronizedProperties
+ XblMultiplayerManagerMatchStatus
+ XblMultiplayerManagerMemberAreMembersOnSameDevice
+ XblMultiplayerManagerSetAutoFillMembersDuringMatchmaking
+ XblMultiplayerManagerSetJoinability
+ XblMultiplayerManagerSetQosMeasurements
+ XblMultiplayerQuerySessionsAsync
+ XblMultiplayerQuerySessionsResult
+ XblMultiplayerQuerySessionsResultCount
+ XblMultiplayerRemoveConnectionIdChangedHandler
+ XblMultiplayerRemoveSessionChangedHandler
+ XblMultiplayerRemoveSubscriptionLostHandler
+ XblMultiplayerSearchHandleCloseHandle
+ XblMultiplayerSearchHandleDuplicateHandle
+ XblMultiplayerSearchHandleGetCreationTime
+ XblMultiplayerSearchHandleGetCustomSessionPropertiesJson
+ XblMultiplayerSearchHandleGetId
+ XblMultiplayerSearchHandleGetJoinRestriction
+ XblMultiplayerSearchHandleGetMemberCounts
+ XblMultiplayerSearchHandleGetNumberAttributes
+ XblMultiplayerSearchHandleGetSessionClosed
+ XblMultiplayerSearchHandleGetSessionOwnerXuids
+ XblMultiplayerSearchHandleGetSessionReference
+ XblMultiplayerSearchHandleGetStringAttributes
+ XblMultiplayerSearchHandleGetTags
+ XblMultiplayerSearchHandleGetVisibility
+ XblMultiplayerSendInvitesAsync
+ XblMultiplayerSendInvitesResult
+ XblMultiplayerSessionAddMemberReservation
+ XblMultiplayerSessionCloseHandle
+ XblMultiplayerSessionCompare
+ XblMultiplayerSessionConstantsSetCapabilities
+ XblMultiplayerSessionConstantsSetCloudComputePackageJson
+ XblMultiplayerSessionConstantsSetMaxMembersInSession
+ XblMultiplayerSessionConstantsSetMeasurementServerAddressesJson
+ XblMultiplayerSessionConstantsSetMemberInitialization
+ XblMultiplayerSessionConstantsSetPeerToHostRequirements
+ XblMultiplayerSessionConstantsSetPeerToPeerRequirements
+ XblMultiplayerSessionConstantsSetQosConnectivityMetrics
+ XblMultiplayerSessionConstantsSetTimeouts
+ XblMultiplayerSessionConstantsSetVisibility
+ XblMultiplayerSessionCreateHandle
+ XblMultiplayerSessionCurrentUser
+ XblMultiplayerSessionCurrentUserDeleteCustomPropertyJson
+ XblMultiplayerSessionCurrentUserSetCustomPropertyJson
+ XblMultiplayerSessionCurrentUserSetEncounters
+ XblMultiplayerSessionCurrentUserSetGroups
+ XblMultiplayerSessionCurrentUserSetMembersInGroup
+ XblMultiplayerSessionCurrentUserSetQosMeasurements
+ XblMultiplayerSessionCurrentUserSetRoles
+ XblMultiplayerSessionCurrentUserSetSecureDeviceAddressBase64
+ XblMultiplayerSessionCurrentUserSetServerQosMeasurements
+ XblMultiplayerSessionCurrentUserSetStatus
+ XblMultiplayerSessionDeleteCustomPropertyJson
+ XblMultiplayerSessionDuplicateHandle
+ XblMultiplayerSessionEtag
+ XblMultiplayerSessionGetInfo
+ XblMultiplayerSessionGetInitializationInfo
+ XblMultiplayerSessionGetMember
+ XblMultiplayerSessionGetRoleByName
+ XblMultiplayerSessionHostCandidates
+ XblMultiplayerSessionJoin
+ XblMultiplayerSessionLeave
+ XblMultiplayerSessionMatchmakingServer
+ XblMultiplayerSessionMembers
+ XblMultiplayerSessionMembersAccepted
+ XblMultiplayerSessionPropertiesSetJoinRestriction
+ XblMultiplayerSessionPropertiesSetKeywords
+ XblMultiplayerSessionPropertiesSetReadRestriction
+ XblMultiplayerSessionPropertiesSetTurnCollection
+ XblMultiplayerSessionRawServersJson
+ XblMultiplayerSessionReferenceCreate
+ XblMultiplayerSessionReferenceIsValid
+ XblMultiplayerSessionReferenceParseFromUriPath
+ XblMultiplayerSessionReferenceToUriPath
+ XblMultiplayerSessionRoleTypes
+ XblMultiplayerSessionSessionConstants
+ XblMultiplayerSessionSessionProperties
+ XblMultiplayerSessionSessionReference
+ XblMultiplayerSessionSetAllocateCloudCompute
+ XblMultiplayerSessionSetClosed
+ XblMultiplayerSessionSetCustomPropertyJson
+ XblMultiplayerSessionSetHostDeviceToken
+ XblMultiplayerSessionSetInitializationSucceeded
+ XblMultiplayerSessionSetLocked
+ XblMultiplayerSessionSetMatchmakingResubmit
+ XblMultiplayerSessionSetMatchmakingServerConnectionPath
+ XblMultiplayerSessionSetMatchmakingTargetSessionConstantsJson
+ XblMultiplayerSessionSetMutableRoleSettings
+ XblMultiplayerSessionSetRawServersJson
+ XblMultiplayerSessionSetServerConnectionStringCandidates
+ XblMultiplayerSessionSetSessionChangeSubscription
+ XblMultiplayerSessionSubscribedChangeTypes
+ XblMultiplayerSessionTimeOfSession
+ XblMultiplayerSessionWriteStatus
+ XblMultiplayerSetActivityAsync
+ XblMultiplayerSetSubscriptionsEnabled
+ XblMultiplayerSetTransferHandleAsync
+ XblMultiplayerSetTransferHandleResult
+ XblMultiplayerSubscriptionsEnabled
+ XblMultiplayerWriteSessionAsync
+ XblMultiplayerWriteSessionByHandleAsync
+ XblMultiplayerWriteSessionByHandleResult
+ XblMultiplayerWriteSessionResult
+ XblPresenceAddDevicePresenceChangedHandler
+ XblPresenceAddTitlePresenceChangedHandler
+ XblPresenceGetPresenceAsync
+ XblPresenceGetPresenceForMultipleUsersAsync
+ XblPresenceGetPresenceForMultipleUsersResult
+ XblPresenceGetPresenceForMultipleUsersResultCount
+ XblPresenceGetPresenceForSocialGroupAsync
+ XblPresenceGetPresenceForSocialGroupResult
+ XblPresenceGetPresenceForSocialGroupResultCount
+ XblPresenceGetPresenceResult
+ XblPresenceRecordCloseHandle
+ XblPresenceRecordDuplicateHandle
+ XblPresenceRecordGetDeviceRecords
+ XblPresenceRecordGetUserState
+ XblPresenceRecordGetXuid
+ XblPresenceRemoveDevicePresenceChangedHandler
+ XblPresenceRemoveTitlePresenceChangedHandler
+ XblPresenceSetPresenceAsync
+ XblPresenceStopTrackingAdditionalTitles
+ XblPresenceStopTrackingUsers
+ XblPresenceTrackAdditionalTitles
+ XblPresenceTrackUsers
+ XblPrivacyBatchCheckPermissionAsync
+ XblPrivacyBatchCheckPermissionResult
+ XblPrivacyBatchCheckPermissionResultSize
+ XblPrivacyCheckPermissionAsync
+ XblPrivacyCheckPermissionForAnonymousUserAsync
+ XblPrivacyCheckPermissionForAnonymousUserResult
+ XblPrivacyCheckPermissionForAnonymousUserResultSize
+ XblPrivacyCheckPermissionResult
+ XblPrivacyCheckPermissionResultSize
+ XblPrivacyGetAvoidListAsync
+ XblPrivacyGetAvoidListResult
+ XblPrivacyGetAvoidListResultCount
+ XblPrivacyGetMuteListAsync
+ XblPrivacyGetMuteListResult
+ XblPrivacyGetMuteListResultCount
+ XblProfileGetUserProfileAsync
+ XblProfileGetUserProfileResult
+ XblProfileGetUserProfilesAsync
+ XblProfileGetUserProfilesForSocialGroupAsync
+ XblProfileGetUserProfilesForSocialGroupResult
+ XblProfileGetUserProfilesForSocialGroupResultCount
+ XblProfileGetUserProfilesResult
+ XblProfileGetUserProfilesResultCount
+ XblRealTimeActivityAddConnectionStateChangeHandler
+ XblRealTimeActivityAddResyncHandler
+ XblRealTimeActivityRemoveConnectionStateChangeHandler
+ XblRealTimeActivityRemoveResyncHandler
+ XblRemoveServiceCallRoutedHandler
+ XblSetOverrideConfiguration
+ XblSocialAddSocialRelationshipChangedHandler
+ XblSocialGetSocialRelationshipsAsync
+ XblSocialGetSocialRelationshipsResult
+ XblSocialManagerAddLocalUser
+ XblSocialManagerCreateSocialUserGroupFromFilters
+ XblSocialManagerCreateSocialUserGroupFromList
+ XblSocialManagerDestroySocialUserGroup
+ XblSocialManagerDoWork
+ XblSocialManagerGetLocalUserCount
+ XblSocialManagerGetLocalUsers
+ XblSocialManagerPresenceRecordIsUserPlayingTitle
+ XblSocialManagerRemoveLocalUser
+ XblSocialManagerSetRichPresencePollingStatus
+ XblSocialManagerUpdateSocialUserGroup
+ XblSocialManagerUserGroupGetFilters
+ XblSocialManagerUserGroupGetLocalUser
+ XblSocialManagerUserGroupGetType
+ XblSocialManagerUserGroupGetUsers
+ XblSocialManagerUserGroupGetUsersTrackedByGroup
+ XblSocialRelationshipResultCloseHandle
+ XblSocialRelationshipResultDuplicateHandle
+ XblSocialRelationshipResultGetNextAsync
+ XblSocialRelationshipResultGetNextResult
+ XblSocialRelationshipResultGetRelationships
+ XblSocialRelationshipResultGetTotalCount
+ XblSocialRelationshipResultHasNext
+ XblSocialRemoveSocialRelationshipChangedHandler
+ XblSocialSubmitBatchReputationFeedbackAsync
+ XblSocialSubmitReputationFeedbackAsync
+ XblStringVerifyStringAsync
+ XblStringVerifyStringResult
+ XblStringVerifyStringResultSize
+ XblStringVerifyStringsAsync
+ XblStringVerifyStringsResult
+ XblStringVerifyStringsResultSize
+ XblTitleManagedStatsDeleteStatsAsync
+ XblTitleManagedStatsUpdateStatsAsync
+ XblTitleManagedStatsWriteAsync
+ XblTitleStorageBlobMetadataResultCloseHandle
+ XblTitleStorageBlobMetadataResultDuplicateHandle
+ XblTitleStorageBlobMetadataResultGetItems
+ XblTitleStorageBlobMetadataResultGetNextAsync
+ XblTitleStorageBlobMetadataResultGetNextResult
+ XblTitleStorageBlobMetadataResultHasNext
+ XblTitleStorageDeleteBlobAsync
+ XblTitleStorageDownloadBlobAsync
+ XblTitleStorageDownloadBlobResult
+ XblTitleStorageGetBlobMetadataAsync
+ XblTitleStorageGetBlobMetadataResult
+ XblTitleStorageGetQuotaAsync
+ XblTitleStorageGetQuotaResult
+ XblTitleStorageUploadBlobAsync
+ XblTitleStorageUploadBlobResult
+ XblUserStatisticsAddStatisticChangedHandler
+ XblUserStatisticsGetMultipleUserStatisticsAsync
+ XblUserStatisticsGetMultipleUserStatisticsForMultipleServiceConfigurationsAsync
+ XblUserStatisticsGetMultipleUserStatisticsForMultipleServiceConfigurationsResult
+ XblUserStatisticsGetMultipleUserStatisticsForMultipleServiceConfigurationsResultSize
+ XblUserStatisticsGetMultipleUserStatisticsResult
+ XblUserStatisticsGetMultipleUserStatisticsResultSize
+ XblUserStatisticsGetSingleUserStatisticAsync
+ XblUserStatisticsGetSingleUserStatisticResult
+ XblUserStatisticsGetSingleUserStatisticResultSize
+ XblUserStatisticsGetSingleUserStatisticsAsync
+ XblUserStatisticsGetSingleUserStatisticsResult
+ XblUserStatisticsGetSingleUserStatisticsResultSize
+ XblUserStatisticsRemoveStatisticChangedHandler
+ XblUserStatisticsStopTrackingStatistics
+ XblUserStatisticsStopTrackingUsers
+ XblUserStatisticsTrackStatistics
+ XTaskQueueCloseHandle
+ XTaskQueueCreate
+ XTaskQueueCreateComposite
+ XTaskQueueDispatch
+ XTaskQueueDuplicateHandle
+ XTaskQueueGetCurrentProcessTaskQueue
+ XTaskQueueGetPort
+ XTaskQueueRegisterMonitor
+ XTaskQueueRegisterWaiter
+ XTaskQueueSetCurrentProcessTaskQueue
+ XTaskQueueSubmitCallback
+ XTaskQueueSubmitDelayedCallback
+ XTaskQueueTerminate
+ XTaskQueueUnregisterMonitor
+ XTaskQueueUnregisterWaiter
diff --git a/External/Xal/External/libHttpClient b/External/Xal/External/libHttpClient
index 0f43237a..d34b3b12 160000
--- a/External/Xal/External/libHttpClient
+++ b/External/Xal/External/libHttpClient
@@ -1 +1 @@
-Subproject commit 0f43237a35cd2335b5503ffaaf240a368c938f3d
+Subproject commit d34b3b125f3cb23da81428aa350f66930bc99f8c
diff --git a/External/Xal/Source/Xal/Include/Xal/xal.h b/External/Xal/Source/Xal/Include/Xal/xal.h
index e753df5e..83c959ce 100644
--- a/External/Xal/Source/Xal/Include/Xal/xal.h
+++ b/External/Xal/Source/Xal/Include/Xal/xal.h
@@ -33,7 +33,7 @@ extern "C"
///
/// It is never an error to set a platform event handler that is not required.
///
-HRESULT XalInitialize(
+STDAPI XalInitialize(
_In_ XalInitArgs const* args,
_In_opt_ XTaskQueueHandle internalWorkQueue
) noexcept;
@@ -48,7 +48,7 @@ HRESULT XalInitialize(
/// This functions should only be called when all user handles have been closed
/// and there are no outstanding asynchronous operations.
///
-HRESULT XalCleanupAsync(
+STDAPI XalCleanupAsync(
_In_ XAsyncBlock* async
) noexcept;
@@ -57,7 +57,7 @@ HRESULT XalCleanupAsync(
///
/// The AsyncBlock for this operation.
/// Result code for this API operation.
-HRESULT XalCleanupResult(
+STDAPI XalCleanupResult(
_In_ XAsyncBlock* async
) noexcept;
@@ -67,7 +67,7 @@ HRESULT XalCleanupResult(
///
/// The maximum number of concurrent users.
/// Result code for this API operation. Possible values are S_OK, E_XAL_NOTINITIALIZED, or E_FAIL.
-HRESULT XalGetMaxUsers(
+STDAPI XalGetMaxUsers(
_Out_ uint32_t* maxUsers
) noexcept;
@@ -77,7 +77,7 @@ HRESULT XalGetMaxUsers(
///
/// The Xbox Live title ID.
/// Result code for this API operation. Possible values are S_OK, E_XAL_NOTINITIALIZED, or E_FAIL.
-HRESULT XalGetTitleId(
+STDAPI XalGetTitleId(
_Out_ uint32_t* titleId
) noexcept;
@@ -85,7 +85,7 @@ HRESULT XalGetTitleId(
/// Get the size of the buffer needed to store the Xbox Live sandbox string.
///
/// The size of the sandbox string including the null terminator.
-size_t XalGetSandboxSize() noexcept;
+STDAPI_(size_t) XalGetSandboxSize() noexcept;
///
/// Get the Xbox Live sandbox that Xal was initialized with. Must be called after
@@ -97,7 +97,7 @@ size_t XalGetSandboxSize() noexcept;
/// The number of bytes used in the buffer including
/// the null terminator.
/// Result code for this API operation. Possible values are S_OK, E_XAL_NOTINITIALIZED, or E_FAIL.
-HRESULT XalGetSandbox(
+STDAPI XalGetSandbox(
_In_ size_t sandboxSize,
_Out_writes_(sandboxSize) char* sandbox,
_Out_opt_ size_t* sandboxUsed
@@ -114,7 +114,7 @@ HRESULT XalGetSandbox(
/// userIdentifier will be stored in the user and passed to all XalPlatform*
/// callbacks related to this user.
///
-HRESULT XalTryAddDefaultUserSilentlyAsync(
+STDAPI XalTryAddDefaultUserSilentlyAsync(
_In_ uint32_t userIdentifier,
_In_ XAsyncBlock* async
) noexcept;
@@ -127,7 +127,7 @@ HRESULT XalTryAddDefaultUserSilentlyAsync(
///
/// If the operations failed, newUser will be NULL.
///
-HRESULT XalTryAddDefaultUserSilentlyResult(
+STDAPI XalTryAddDefaultUserSilentlyResult(
_In_ XAsyncBlock* async,
_Out_ XalUserHandle* newUser
) noexcept;
@@ -146,7 +146,7 @@ HRESULT XalTryAddDefaultUserSilentlyResult(
/// userIdentifier will be stored in the user and passed to all XalPlatform*
/// callbacks related to this user.
///
-HRESULT XalTryAddUserByIdAsync(
+STDAPI XalTryAddUserByIdAsync(
_In_ uint32_t userIdentifier,
_In_ uint64_t xboxUserId,
_In_ XAsyncBlock* async
@@ -161,7 +161,7 @@ HRESULT XalTryAddUserByIdAsync(
///
/// If the operations failed, newUser will be NULL.
///
-HRESULT XalTryAddUserByIdResult(
+STDAPI XalTryAddUserByIdResult(
_In_ XAsyncBlock* async,
_Out_ XalUserHandle* newUser
) noexcept;
@@ -179,7 +179,7 @@ HRESULT XalTryAddUserByIdResult(
/// userIdentifier will be stored in the user and passed to all XalPlatform*
/// callbacks related to this user.
///
-HRESULT XalAddUserWithUiAsync(
+STDAPI XalAddUserWithUiAsync(
_In_ uint32_t userIdentifier,
_In_ XAsyncBlock* async
) noexcept;
@@ -193,7 +193,7 @@ HRESULT XalAddUserWithUiAsync(
///
/// If the operations failed, newUser will be NULL.
///
-HRESULT XalAddUserWithUiResult(
+STDAPI XalAddUserWithUiResult(
_In_ XAsyncBlock* async,
_Out_ XalUserHandle* newUser
) noexcept;
@@ -202,7 +202,7 @@ HRESULT XalAddUserWithUiResult(
/// Checks if the current platform supports retrieving a device user handle.
///
/// True if device user present, false if not.
-bool XalGetDeviceUserIsPresent() noexcept;
+STDAPI_(bool) XalGetDeviceUserIsPresent() noexcept;
///
/// Returns a user which represents the device itself.
@@ -213,7 +213,7 @@ bool XalGetDeviceUserIsPresent() noexcept;
/// This user handle will have had XalUserDuplicateHandle called on it. Be sure
/// to call XalUserCloseHandle once it is no longer needed.
///
-HRESULT XalGetDeviceUser(
+STDAPI XalGetDeviceUser(
_Out_ XalUserHandle* deviceUser
) noexcept;
@@ -221,7 +221,7 @@ HRESULT XalGetDeviceUser(
/// Checks if the user can be signed out on the current platform.
///
/// True if user can be signed out, false if user can't.
-bool XalSignOutUserAsyncIsPresent() noexcept;
+STDAPI_(bool) XalSignOutUserAsyncIsPresent() noexcept;
///
/// Signs out a user from the device.
@@ -242,7 +242,7 @@ bool XalSignOutUserAsyncIsPresent() noexcept;
/// (see ) this function will
/// invoke the hook.
///
-HRESULT XalSignOutUserAsync(
+STDAPI XalSignOutUserAsync(
_In_ XalUserHandle user,
_In_ XAsyncBlock* async
) noexcept;
@@ -252,7 +252,7 @@ HRESULT XalSignOutUserAsync(
///
/// The AsyncBlock for this operation.
/// Result code for this API operation.
-HRESULT XalSignOutUserResult(
+STDAPI XalSignOutUserResult(
_In_ XAsyncBlock* async
) noexcept;
@@ -265,7 +265,7 @@ HRESULT XalSignOutUserResult(
///
/// If no user can be found matching the local id, E_XAL_USERNOTFOUND is returned.
///
-HRESULT XalFindUserByLocalId(
+STDAPI XalFindUserByLocalId(
_In_ XalUserLocalId localId,
_Out_ XalUserHandle* user
) noexcept;
diff --git a/External/Xal/Source/Xal/Include/Xal/xal_internal_telemetry.h b/External/Xal/Source/Xal/Include/Xal/xal_internal_telemetry.h
index 3209fee6..13ab3774 100644
--- a/External/Xal/Source/Xal/Include/Xal/xal_internal_telemetry.h
+++ b/External/Xal/Source/Xal/Include/Xal/xal_internal_telemetry.h
@@ -116,7 +116,7 @@ typedef struct XalTelemetryTicket
/// The cll persistence for this event.
/// The cll sensitivity for this event.
/// The cll sampleRate for this event.
-HRESULT XalTelemetryWriteEvent(
+STDAPI XalTelemetryWriteEvent(
_In_ XalUserHandle user,
_In_z_ char const* iKey,
_In_z_ char const* eventNameWithProvider,
diff --git a/External/Xal/Source/Xal/Include/Xal/xal_internal_web_account.h b/External/Xal/Source/Xal/Include/Xal/xal_internal_web_account.h
index 4a1db139..f2b77ac7 100644
--- a/External/Xal/Source/Xal/Include/Xal/xal_internal_web_account.h
+++ b/External/Xal/Source/Xal/Include/Xal/xal_internal_web_account.h
@@ -20,7 +20,7 @@ extern "C"
/// Returns the size of the buffer needed to store the web account ID string.
///
/// The user object.
-size_t XalUserGetWebAccountIdSize(
+STDAPI_(size_t) XalUserGetWebAccountIdSize(
_In_ XalUserHandle user
) noexcept;
@@ -34,7 +34,7 @@ size_t XalUserGetWebAccountIdSize(
///
/// The number of bytes used in the buffer
/// including the null terminator.
-HRESULT XalUserGetWebAccountId(
+STDAPI XalUserGetWebAccountId(
_In_ XalUserHandle user,
_In_ size_t webAccountIdSize,
_Out_writes_(webAccountIdSize) char* webAccountId,
@@ -97,7 +97,7 @@ typedef struct XalUserGetWebAccountTokenArgs
/// The requested token details.
/// The AsyncBlock for this operation.
/// .
-HRESULT XalUserGetWebAccountTokenSilentlyAsync(
+STDAPI XalUserGetWebAccountTokenSilentlyAsync(
_In_ XalUserHandle user,
_In_ XalUserGetWebAccountTokenArgs const* args,
_In_ XAsyncBlock* async
@@ -108,7 +108,7 @@ HRESULT XalUserGetWebAccountTokenSilentlyAsync(
///
/// The AsyncBlock for this operation.
/// The size in bytes for the result buffer.
-HRESULT XalUserGetWebAccountTokenSilentlyResultSize(
+STDAPI XalUserGetWebAccountTokenSilentlyResultSize(
_In_ XAsyncBlock* async,
_Out_ size_t* bufferSize
) noexcept;
@@ -120,7 +120,7 @@ HRESULT XalUserGetWebAccountTokenSilentlyResultSize(
/// The size of the buffer for the result object.
///
/// The result token.
-HRESULT XalUserGetWebAccountTokenSilentlyResult(
+STDAPI XalUserGetWebAccountTokenSilentlyResult(
_In_ XAsyncBlock* async,
_In_ size_t bufferSize,
_Out_writes_z_(bufferSize) char* result
@@ -133,7 +133,7 @@ HRESULT XalUserGetWebAccountTokenSilentlyResult(
/// The requested token details.
/// The AsyncBlock for this operation.
/// .
-HRESULT XalUserGetWebAccountTokenWithUiAsync(
+STDAPI XalUserGetWebAccountTokenWithUiAsync(
_In_ XalUserHandle user,
_In_ XalUserGetWebAccountTokenArgs const* args,
_In_ XAsyncBlock* async
@@ -144,7 +144,7 @@ HRESULT XalUserGetWebAccountTokenWithUiAsync(
///
/// The AsyncBlock for this operation.
/// The size in bytes for the result buffer.
-HRESULT XalUserGetWebAccountTokenWithUiResultSize(
+STDAPI XalUserGetWebAccountTokenWithUiResultSize(
_In_ XAsyncBlock* async,
_Out_ size_t* bufferSize
) noexcept;
@@ -156,7 +156,7 @@ HRESULT XalUserGetWebAccountTokenWithUiResultSize(
/// The size of the buffer for the result object.
///
/// The result token.
-HRESULT XalUserGetWebAccountTokenWithUiResult(
+STDAPI XalUserGetWebAccountTokenWithUiResult(
_In_ XAsyncBlock* async,
_In_ size_t bufferSize,
_Out_writes_z_(bufferSize) char* result
diff --git a/External/Xal/Source/Xal/Include/Xal/xal_platform.h b/External/Xal/Source/Xal/Include/Xal/xal_platform.h
index d226808d..60609858 100644
--- a/External/Xal/Source/Xal/Include/Xal/xal_platform.h
+++ b/External/Xal/Source/Xal/Include/Xal/xal_platform.h
@@ -38,7 +38,7 @@ extern "C"
/// A pointer to the custom freeing callback to use,
/// or a null pointer to restore the default.
/// Result code for this API operation.
-HRESULT XalMemSetFunctions(
+STDAPI XalMemSetFunctions(
_In_opt_ XalMemAllocFunc* memAllocFunc,
_In_opt_ XalMemFreeFunc* memFreeFunc
) noexcept;
@@ -54,7 +54,7 @@ HRESULT XalMemSetFunctions(
/// Set to the to the current memory free callback.
/// Returns the default routine if not previously set.
/// Result code for this API operation.
-HRESULT XalMemGetFunctions(
+STDAPI XalMemGetFunctions(
_Out_ XalMemAllocFunc** memAllocFunc,
_Out_ XalMemFreeFunc** memFreeFunc
) noexcept;
@@ -75,7 +75,7 @@ HRESULT XalMemGetFunctions(
///
/// Must be called before XalInitialize.
///
-HRESULT XalPlatformWebSetEventHandler(
+STDAPI XalPlatformWebSetEventHandler(
_In_opt_ XTaskQueueHandle queue,
_In_opt_ void* context,
_In_ XalPlatformWebShowUrlEventHandler2* handler
@@ -94,7 +94,7 @@ HRESULT XalPlatformWebSetEventHandler(
/// cannot be completed.
///
///
-HRESULT XalPlatformWebShowUrlComplete(
+STDAPI XalPlatformWebShowUrlComplete(
_In_ XalPlatformOperation operation,
_In_ XalPlatformOperationResult result,
_In_opt_z_ char const* url
@@ -114,7 +114,7 @@ HRESULT XalPlatformWebShowUrlComplete(
///
/// Must be called before XalInitialize.
///
-HRESULT XalPlatformStorageSetEventHandlers(
+STDAPI XalPlatformStorageSetEventHandlers(
_In_opt_ XTaskQueueHandle queue,
_In_ XalPlatformStorageEventHandlers2* handlers
) noexcept;
@@ -130,7 +130,7 @@ HRESULT XalPlatformStorageSetEventHandlers(
/// the write is completed or if an error occurs and the operation cannot be
/// completed .
///
-HRESULT XalPlatformStorageWriteComplete(
+STDAPI XalPlatformStorageWriteComplete(
_In_ XalPlatformOperation operation,
_In_ XalPlatformOperationResult result
) noexcept;
@@ -151,7 +151,7 @@ HRESULT XalPlatformStorageWriteComplete(
/// If the requested key cannot be found, the operation should be completed
/// with XalClientOperationResult_Success, data = nullptr and dataSize = 0.
///
-HRESULT XalPlatformStorageReadComplete(
+STDAPI XalPlatformStorageReadComplete(
_In_ XalPlatformOperation operation,
_In_ XalPlatformOperationResult result,
_In_ size_t dataSize,
@@ -169,7 +169,7 @@ HRESULT XalPlatformStorageReadComplete(
/// the data is cleared or if an error occurs and the operation cannot be
/// completed .
///
-HRESULT XalPlatformStorageClearComplete(
+STDAPI XalPlatformStorageClearComplete(
_In_ XalPlatformOperation operation,
_In_ XalPlatformOperationResult result
) noexcept;
@@ -188,7 +188,7 @@ HRESULT XalPlatformStorageClearComplete(
///
/// Must be called before XalInitialize.
///
-HRESULT XalPlatformRemoteConnectSetEventHandlers(
+STDAPI XalPlatformRemoteConnectSetEventHandlers(
_In_opt_ XTaskQueueHandle queue,
_In_ XalPlatformRemoteConnectEventHandlers2* handlers
) noexcept;
@@ -205,7 +205,7 @@ HRESULT XalPlatformRemoteConnectSetEventHandlers(
/// E_ABORT. The XalPlatformRemoteConnectClosePromptEventHandler will be called
/// as normal.
///
-HRESULT XalPlatformRemoteConnectCancelPrompt(
+STDAPI XalPlatformRemoteConnectCancelPrompt(
_In_ XalPlatformOperation operation
) noexcept;
@@ -221,7 +221,7 @@ HRESULT XalPlatformRemoteConnectCancelPrompt(
///
/// Must be called before XalInitialize.
///
-HRESULT XalPlatformCryptoSetCallbacks(
+STDAPI XalPlatformCryptoSetCallbacks(
_In_ XalPlatformCryptoCallbacks* callbacks
) noexcept;
@@ -237,7 +237,7 @@ HRESULT XalPlatformCryptoSetCallbacks(
///
/// Must be called before XalInitialize.
///
-HRESULT XalPlatformDateTimeSetCallbacks(
+STDAPI XalPlatformDateTimeSetCallbacks(
_In_ XalPlatformDateTimeCallbacks* callbacks
) noexcept;
diff --git a/External/Xal/Source/Xal/Include/Xal/xal_user.h b/External/Xal/Source/Xal/Include/Xal/xal_user.h
index 0a1ddd61..4cab2423 100644
--- a/External/Xal/Source/Xal/Include/Xal/xal_user.h
+++ b/External/Xal/Source/Xal/Include/Xal/xal_user.h
@@ -20,7 +20,7 @@ extern "C"
/// The user handle.
/// The new user handle.
/// Result code for this API operation. Possible values are S_OK, E_INVALIDARG, or E_FAIL.
-HRESULT XalUserDuplicateHandle(
+STDAPI XalUserDuplicateHandle(
_In_ XalUserHandle user,
_Out_ XalUserHandle* duplicatedUser
) noexcept;
@@ -30,7 +30,7 @@ HRESULT XalUserDuplicateHandle(
///
/// The user object
///
-void XalUserCloseHandle(
+STDAPI_(void) XalUserCloseHandle(
_In_ XalUserHandle user
) noexcept;
@@ -46,7 +46,7 @@ void XalUserCloseHandle(
///
/// User identity ordering is arbitrary, but sutiable for sorting.
///
-int32_t XalCompareUsers(
+STDAPI_(int32_t) XalCompareUsers(
_In_ XalUserHandle user1,
_In_ XalUserHandle user2
) noexcept;
@@ -60,7 +60,7 @@ int32_t XalCompareUsers(
/// The user object.
/// The Xbox Live User ID (XUID) of the user.
/// Result code for this API operation. Possible values are S_OK, E_INVALIDARG, or E_FAIL.
-HRESULT XalUserGetId( // TODO any valid error scenarios? local users, consent
+STDAPI XalUserGetId( // TODO any valid error scenarios? local users, consent
_In_ XalUserHandle user,
_Out_ uint64_t* id
) noexcept;
@@ -71,7 +71,7 @@ HRESULT XalUserGetId( // TODO any valid error scenarios? local users, consent
/// The user object.
/// The local id of the user.
/// Result code for this API operation. Possible values are S_OK, E_INVALIDARG, or E_FAIL.
-HRESULT XalUserGetLocalId(
+STDAPI XalUserGetLocalId(
_In_ XalUserHandle user,
_Out_ XalUserLocalId* localId
) noexcept;
@@ -81,7 +81,7 @@ HRESULT XalUserGetLocalId(
///
/// The user object.
///
-bool XalUserIsDevice(
+STDAPI_(bool) XalUserIsDevice(
_In_ XalUserHandle user
) noexcept;
@@ -90,7 +90,7 @@ bool XalUserIsDevice(
///
/// The user object.
///
-bool XalUserIsGuest(
+STDAPI_(bool) XalUserIsGuest(
_In_ XalUserHandle user
) noexcept;
@@ -101,7 +101,7 @@ bool XalUserIsGuest(
/// The sign-in state of the user
/// .
/// Result code for this API operation.
-HRESULT XalUserGetState(
+STDAPI XalUserGetState(
_In_ XalUserHandle user,
_Out_ XalUserState* state
) noexcept;
@@ -118,7 +118,7 @@ HRESULT XalUserGetState(
/// XalGamertagComponent_Classic instead. XalGamertagComponent_Suffix will be
/// empty if the modern components are unavailable.
///
-size_t XalUserGetGamertagSize(
+STDAPI_(size_t) XalUserGetGamertagSize(
_In_ XalUserHandle user,
_In_ XalGamertagComponent component
) noexcept;
@@ -140,7 +140,7 @@ size_t XalUserGetGamertagSize(
/// XalGamertagComponent_Classic instead. XalGamertagComponent_Suffix will be
/// empty if the modern components are unavailable.
///
-HRESULT XalUserGetGamertag(
+STDAPI XalUserGetGamertag(
_In_ XalUserHandle user,
_In_ XalGamertagComponent component,
_In_ size_t gamertagSize,
@@ -155,7 +155,7 @@ HRESULT XalUserGetGamertag(
/// The size wanted.
/// The AsyncBlock for this operation.
/// Result code for this API operation. Possible values are S_OK or E_FAIL.
-HRESULT XalUserGetGamerPictureAsync(
+STDAPI XalUserGetGamerPictureAsync(
_In_ XalUserHandle user,
_In_ XalGamerPictureSize pictureSize,
_In_ XAsyncBlock* async
@@ -167,7 +167,7 @@ HRESULT XalUserGetGamerPictureAsync(
/// The AsyncBlock for this operation.
/// The size in bytes for the result buffer.
/// Result code for this API operation.
-HRESULT XalUserGetGamerPictureResultSize(
+STDAPI XalUserGetGamerPictureResultSize(
_In_ XAsyncBlock* async,
_Out_ size_t* bufferSize
) noexcept;
@@ -179,7 +179,7 @@ HRESULT XalUserGetGamerPictureResultSize(
/// The size of the gamer picture buffer.
/// The gamer picture png data.
/// Result code for this API operation.
-HRESULT XalUserGetGamerPictureResult(
+STDAPI XalUserGetGamerPictureResult(
_In_ XAsyncBlock* async,
_In_ size_t bufferSize,
_Out_writes_(bufferSize) void* buffer
@@ -191,7 +191,7 @@ HRESULT XalUserGetGamerPictureResult(
/// The user object.
/// The age group.
/// Result code for this API operation. Possible values are S_OK, E_INVALIDARG, or E_FAIL.
-HRESULT XalUserGetAgeGroup(
+STDAPI XalUserGetAgeGroup(
_In_ XalUserHandle user,
_Out_ XalAgeGroup* ageGroup
) noexcept;
@@ -207,7 +207,7 @@ HRESULT XalUserGetAgeGroup(
/// denied a privilege. If the user has the privilege it will always be
/// XAL_PRIVILEGE_CHECK_DENY_REASON_NONE.
/// Result code for this API operation. Possible values are S_OK, E_XAL_NOTINITIALIZED, or E_FAIL.
-HRESULT XalUserCheckPrivilege(
+STDAPI XalUserCheckPrivilege(
_In_ XalUserHandle user,
_In_ XalPrivilege privilege,
_Out_ bool* hasPrivilege,
@@ -218,7 +218,7 @@ HRESULT XalUserCheckPrivilege(
/// Checks if the current platform supports resolving missing privileges.
///
///
-bool XalUserResolvePrivilegeWithUiIsPresent() noexcept;
+STDAPI_(bool) XalUserResolvePrivilegeWithUiIsPresent() noexcept;
///
/// Shows ui explaining why the user is missing the given privilege and
@@ -228,7 +228,7 @@ bool XalUserResolvePrivilegeWithUiIsPresent() noexcept;
/// The privilege to check.
/// The AsyncBlock for this operation.
/// Result code for this API operation.
-HRESULT XalUserResolveUserPrivilegeWithUiAsync(
+STDAPI XalUserResolveUserPrivilegeWithUiAsync(
_In_ XalUserHandle user,
_In_ XalPrivilege privilege,
_In_ XAsyncBlock* async
@@ -239,7 +239,7 @@ HRESULT XalUserResolveUserPrivilegeWithUiAsync(
///
/// The AsyncBlock for this operation.
/// Result code for this API operation.
-HRESULT XalUserResolveUserPrivilegeWithUiResult(
+STDAPI XalUserResolveUserPrivilegeWithUiResult(
_In_ XAsyncBlock* async
) noexcept;
@@ -254,7 +254,7 @@ HRESULT XalUserResolveUserPrivilegeWithUiResult(
/// The AsyncBlock for this operation.
/// .
/// Result code for this API operation.
-HRESULT XalUserGetTokenAndSignatureSilentlyAsync(
+STDAPI XalUserGetTokenAndSignatureSilentlyAsync(
_In_ XalUserHandle user,
_In_ XalUserGetTokenAndSignatureArgs const* args,
_In_ XAsyncBlock* async
@@ -266,7 +266,7 @@ HRESULT XalUserGetTokenAndSignatureSilentlyAsync(
/// The AsyncBlock for this operation.
/// The size in bytes for the result buffer.
/// Result code for this API operation.
-HRESULT XalUserGetTokenAndSignatureSilentlyResultSize(
+STDAPI XalUserGetTokenAndSignatureSilentlyResultSize(
_In_ XAsyncBlock* async,
_Out_ size_t* bufferSize
) noexcept;
@@ -283,7 +283,7 @@ HRESULT XalUserGetTokenAndSignatureSilentlyResultSize(
///
/// result is a pointer within buffer and does not need to be freed separately.
///
-HRESULT XalUserGetTokenAndSignatureSilentlyResult(
+STDAPI XalUserGetTokenAndSignatureSilentlyResult(
_In_ XAsyncBlock* async,
_In_ size_t bufferSize,
_Out_writes_bytes_to_(bufferSize, *bufferUsed) void* buffer,
@@ -303,7 +303,7 @@ HRESULT XalUserGetTokenAndSignatureSilentlyResult(
/// This function should only be called after a call to
/// XalUserGetTokenAndSignatureSilentlyAsync fails with E_XAL_UIREQUIRED.
///
-HRESULT XalUserResolveIssueWithUiAsync(
+STDAPI XalUserResolveIssueWithUiAsync(
_In_ XalUserHandle user,
_In_opt_z_ char const* url,
_In_ XAsyncBlock* async
@@ -314,7 +314,7 @@ HRESULT XalUserResolveIssueWithUiAsync(
///
/// The AsyncBlock for this operation.
/// Result code for this API operation.
-HRESULT XalUserResolveIssueWithUiResult(
+STDAPI XalUserResolveIssueWithUiResult(
_In_ XAsyncBlock* async
) noexcept;
@@ -329,7 +329,7 @@ HRESULT XalUserResolveIssueWithUiResult(
/// The event handler, .
/// The token for unregistering this callback
/// Result code for this API operation. Possible values are S_OK, E_XAL_NOTINITIALIZED, or E_FAIL.
-HRESULT XalUserRegisterChangeEventHandler(
+STDAPI XalUserRegisterChangeEventHandler(
_In_opt_ XTaskQueueHandle queue,
_In_opt_ void* context,
_In_ XalUserChangeEventHandler* handler,
@@ -342,7 +342,7 @@ HRESULT XalUserRegisterChangeEventHandler(
/// The token returned from
/// XalUserRegisterChangeEventHandler.
///
-void XalUserUnregisterChangeEventHandler(
+STDAPI_(void) XalUserUnregisterChangeEventHandler(
_In_ XalRegistrationToken token
) noexcept;
@@ -358,7 +358,7 @@ void XalUserUnregisterChangeEventHandler(
///
/// May fail with E_XAL_DEFERRALNOTAVAILABLE.
///
-HRESULT XalUserGetSignoutDeferral(
+STDAPI XalUserGetSignoutDeferral(
_Out_ XalSignoutDeferralHandle* deferral
) noexcept;
@@ -367,7 +367,7 @@ HRESULT XalUserGetSignoutDeferral(
///
/// The deferral handle.
///
-void XalUserCloseSignoutDeferral(
+STDAPI_(void) XalUserCloseSignoutDeferral(
_In_ XalSignoutDeferralHandle deferral
) noexcept;
diff --git a/External/Xal/Source/Xal/Include/Xal/xal_uwp_user.h b/External/Xal/Source/Xal/Include/Xal/xal_uwp_user.h
index 830c40ec..33d29233 100644
--- a/External/Xal/Source/Xal/Include/Xal/xal_uwp_user.h
+++ b/External/Xal/Source/Xal/Include/Xal/xal_uwp_user.h
@@ -13,7 +13,7 @@ extern "C"
//------------------------------------------------------------------------------
// Uwp user functions
//------------------------------------------------------------------------------
-HRESULT XalUserGetPlatformWebAccount(
+STDAPI XalUserGetPlatformWebAccount(
_In_ XalUserHandle user,
_Out_ Windows::Security::Credentials::WebAccount^* webAccount
) noexcept;
@@ -24,7 +24,7 @@ HRESULT XalUserGetPlatformWebAccount(
/// The system user.
/// The AsyncBlock for this operation.
/// Result code for this API operation.
-HRESULT XalAddUwpSystemUserSilentAsync(
+STDAPI XalAddUwpSystemUserSilentAsync(
_In_ Windows::System::User^ user,
_In_ XAsyncBlock* async
) noexcept;
diff --git a/External/Xal/Source/Xal/Include/Xal/xal_version.h b/External/Xal/Source/Xal/Include/Xal/xal_version.h
index 7401e844..0aaf8483 100644
--- a/External/Xal/Source/Xal/Include/Xal/xal_version.h
+++ b/External/Xal/Source/Xal/Include/Xal/xal_version.h
@@ -20,6 +20,6 @@ extern "C"
/// YYYYMMDD Date string describing the date the build was created
/// rrr QFE number (000 indicates base release)
///
-#define XAL_VERSION "2021.04.20210518.001"
+#define XAL_VERSION "2021.06.20210518.000"
}
diff --git a/External/Xal/Source/Xal/Include/Xal/xal_xdk_ext.h b/External/Xal/Source/Xal/Include/Xal/xal_xdk_ext.h
index b18c47de..c00a6e20 100644
--- a/External/Xal/Source/Xal/Include/Xal/xal_xdk_ext.h
+++ b/External/Xal/Source/Xal/Include/Xal/xal_xdk_ext.h
@@ -8,7 +8,7 @@ extern "C"
///
/// The user handle.
/// The associated system user.
-HRESULT XalUserToXboxSystemUser(
+STDAPI XalUserToXboxSystemUser(
_In_ XalUserHandle user,
_Out_ Windows::Xbox::System::IUser^* systemUser
) noexcept;
@@ -18,7 +18,7 @@ HRESULT XalUserToXboxSystemUser(
///
/// The system user.
/// The new user handle.
-HRESULT XalAddXboxSystemUser(
+STDAPI XalAddXboxSystemUser(
_In_ Windows::Xbox::System::IUser^ systemUser,
_Out_ XalUserHandle* user
) noexcept;
diff --git a/Include/cpprestinclude/pplx/details/threadpool.hpp b/Include/cpprestinclude/pplx/details/threadpool.hpp
index 283d5a09..9c56c0f8 100644
--- a/Include/cpprestinclude/pplx/details/threadpool.hpp
+++ b/Include/cpprestinclude/pplx/details/threadpool.hpp
@@ -16,7 +16,7 @@
* ==--==
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
**/
-#include "pplx\threadpool.h"
+#include "pplx/threadpool.h"
#if defined(__ANDROID__)
#include
#include
diff --git a/Include/cpprestinclude/pplx/threadpool.h b/Include/cpprestinclude/pplx/threadpool.h
index 04d89515..c556eca3 100644
--- a/Include/cpprestinclude/pplx/threadpool.h
+++ b/Include/cpprestinclude/pplx/threadpool.h
@@ -44,6 +44,7 @@
#include
#include
#include "pplx/pplx.h"
+#include "asio/io_service.hpp"
#endif
namespace crossplat {
diff --git a/Include/xsapi-c/achievements_manager_c.h b/Include/xsapi-c/achievements_manager_c.h
index 197f7a6b..853d28b8 100644
--- a/Include/xsapi-c/achievements_manager_c.h
+++ b/Include/xsapi-c/achievements_manager_c.h
@@ -157,7 +157,7 @@ STDAPI XblAchievementsManagerRemoveLocalUser(
///
/// Checks whether a specific user has had its initial state synced.
///
-/// Xbox Live User to check.
+/// Xbox Live User to check.
/// HRESULT return code for this API operation. If the user is not
/// initialized, this function will return E_FAIL.
STDAPI XblAchievementsManagerIsUserInitialized(
@@ -260,7 +260,7 @@ STDAPI XblAchievementsManagerGetAchievementsByState(
///
/// The Xbox User ID of the player.
/// The UTF-8 encoded achievement ID as defined by Dev Center.
-/// The completion percentage of the achievement to indicate progress.
+/// The completion percentage of the achievement to indicate progress.
/// Valid values are from 1 to 100. Set to 100 to unlock the achievement.
/// Progress will be set by the server to the highest value sent
/// HRESULT return code for this API operation.
diff --git a/Include/xsapi-c/multiplayer_activity_c.h b/Include/xsapi-c/multiplayer_activity_c.h
index 8bfb6505..17b102e8 100644
--- a/Include/xsapi-c/multiplayer_activity_c.h
+++ b/Include/xsapi-c/multiplayer_activity_c.h
@@ -12,9 +12,11 @@ extern "C"
{
///
-/// Different platforms on which a title can be activated.
+/// Enumerates the platforms on which a title can be activated.
///
-enum class XblMultiplayerActivityPlatform : uint32_t
+///
+///
+ enum class XblMultiplayerActivityPlatform : uint32_t
{
///
/// Unknown device.
@@ -27,17 +29,17 @@ enum class XblMultiplayerActivityPlatform : uint32_t
XboxOne = 1,
///
- /// WindowsOneCore (UWP & GameCore on PC).
+ /// Windows OneCore (Universal Windows Platform [UWP] and {% term projname %} on PC).
///
WindowsOneCore = 2,
///
- /// Win32 based device.
+ /// Win32-based device.
///
Win32 = 3,
///
- /// Scarlett device.
+ /// {% term scarlett %} device.
///
Scarlett = 4,
@@ -68,34 +70,46 @@ enum class XblMultiplayerActivityPlatform : uint32_t
};
///
-/// Setting which dictates who can join a player's current activity.
+/// Enumerates who can join a player's current activity.
///
+///
+///
+///
+/// To see how this enumeration is used, see "Setting an activity" in
+/// the Activities section
+/// of Example code for Multiplayer Activity.
+///
enum class XblMultiplayerActivityJoinRestriction : uint32_t
{
///
- /// Public.
+ /// Everyone.
///
Public = 0,
///
- /// InviteOnly.
+ /// Only invited players.
///
InviteOnly = 1,
///
- /// Followed.
+ /// Only followed players.
///
Followed = 2
};
///
-/// Different types of recent players encounters.
+/// Enumerates types of recent player encounters.
///
+///
+///
+/// To see how this enumeration is used, see "Setting an activity" in
+/// the Activities section
+/// of Example code for Multiplayer Activity.
+///
enum class XblMultiplayerActivityEncounterType : uint32_t
{
///
- /// Default.
- /// This has no inherent meaning - it is up to the title to interpret this value appropriately.
+ /// No inherent meaning. The title interprets this value as appropriate.
///
Default = 0,
@@ -111,60 +125,73 @@ enum class XblMultiplayerActivityEncounterType : uint32_t
};
///
-/// Information about a User's activity playing a certain title.
+/// Information about a player's activity while playing a title.
///
+///
+///
+///
+/// To see how this enumeration is used, see "Setting an activity" and "Getting activities" in
+/// the Activities section
+/// of Example code for Multiplayer Activity.
+///
typedef struct XblMultiplayerActivityInfo
{
///
- /// Xbox User ID the activity info belongs to.
+ /// The Xbox user ID to which the activity info belongs.
///
uint64_t xuid;
///
- /// The connection string is passed to the connecting client in order to join a game.
- /// Typically contains information like the server IP address.
- /// When querying activities, this field will only be populated if the activity is public
- /// or if the user is following the caller.
+ /// The connection string passed to the connecting client to join a game;
+ /// typically contains information such as the server IP address.
+ /// When querying activities, this field is populated only if the activity is public
+ /// or the player is following the caller.
///
_Field_z_ const char* connectionString;
///
- /// Setting which dictates who can join the player's current activity.
+ /// Specifies who can join the player's current activity.
///
XblMultiplayerActivityJoinRestriction joinRestriction;
///
- /// The maximum number of players who can join the players current activity.
- /// A value of 0 indicates that maxPlayers is not set.
+ /// The maximum number of players who can join the player's current activity.
+ /// A value of 0 indicates that no players can join.
///
size_t maxPlayers;
///
- /// The number of players already playing with the user in a multiplayer activity.
- /// A value of 0 indicates that currentPlayers is not set.
+ /// The number of players already playing with the player in a multiplayer activity.
+ /// A value of 0 indicates that no other players are currently playing.
///
size_t currentPlayers;
///
/// A unique identifier to group all users playing as part of the same activity.
- /// Set by title when the activity is created.
+ /// The title sets this identifier when it creates the activity.
///
_Field_z_ const char* groupId;
///
- /// The platform on which that activity is happening.
- /// When setting an activity, the platform will be automatically inferred (this field will be ignored).
+ /// The platform on which the activity is happening.
+ /// When setting an activity, the platform is automatically inferred; this field is ignored.
///
XblMultiplayerActivityPlatform platform;
} XblMultiplayerActivityInfo;
///
-/// Struct describing a recent player encounter.
+/// Describes a recent player encounter.
///
+///
+///
+/// To see how this enumeration is used, see "Updating recent players" in
+/// the Recent players section
+/// of Example code for Multiplayer Activity.
+///
typedef struct XblMultiplayerActivityRecentPlayerUpdate
{
///
- /// Xuid of the encountered user.
+ /// Xbox user ID of the encountered user.
///
uint64_t xuid;
@@ -175,17 +202,17 @@ typedef struct XblMultiplayerActivityRecentPlayerUpdate
} XblMultiplayerActivityRecentPlayerUpdate;
///
-/// Appends to a user's list of recent players.
-/// If an encountered user is already in the list, it updates the existing recent player entry.
+/// Appends to a player's list of recent players.
+/// If an encountered user is already in the list, it updates the existing recent-player entry.
///
-/// Xbox live context for the local user.
-/// List of XblMultiplayerActivityRecentPlayerUpdates to append to the recent players list.
-/// Size of the updates array.
+/// {% term xbox-live %} context for the local user.
+/// List of objects to append to the recent players list.
+/// Size of the `updates` array.
/// HRESULT return code for this API operation.
///
-/// This call only affects the caller's recent players list (unidirectional).
-/// Recent player updates will be batched and uploaded by XSAPI using the background queue provided during XblInitialize.
-/// To force an immediate flush, call XblMultiplayerActivityFlushRecentPlayersAsync.
+/// This call is unidirectional; it only affects the caller's recent-players list.
+/// Recent-player updates are batched and uploaded by XSAPI by using the background queue provided during `XblInitialize`.
+/// To force an immediate flush, call .
///
STDAPI XblMultiplayerActivityUpdateRecentPlayers(
_In_ XblContextHandle xblContext,
@@ -194,16 +221,19 @@ STDAPI XblMultiplayerActivityUpdateRecentPlayers(
) XBL_NOEXCEPT;
///
-/// Immediately writes any pending recent players updates to XboxLive service.
-/// Note that calling this API is optional; updates will automatically be uploaded periodically on a background task queue.
+/// Immediately writes any pending recent-players updates to {% term xbox-live %}.
///
-/// Xbox live context for the local user.
-/// The AsyncBlock for this operation.
+/// {% term xbox-live %} context for the local user.
+/// The `XAsyncBlock` for this operation.
/// HRESULT return code for this API operation.
///
-/// When this API is used, the upload will happen on the task queue supplied in this call.
-/// The result of the asynchronous operation can be obtained by calling
-/// inside the AsyncBlock callback or after the AsyncBlock is complete.
+/// Calling this API is optional; updates are periodically uploaded from a background task queue.
+/// When this API is used, the upload happens on the task queue supplied in this call.
+/// To get the result of the asynchronous operation, call
+/// inside the `XAsyncBlock` callback or after `XAsyncBlock` is complete.
+/// To see how this enumeration is used, see the
+/// Recent players section
+/// of Example code for Multiplayer Activity.
///
STDAPI XblMultiplayerActivityFlushRecentPlayersAsync(
_In_ XblContextHandle xblContext,
@@ -213,14 +243,26 @@ STDAPI XblMultiplayerActivityFlushRecentPlayersAsync(
///
/// Sets or updates the multiplayer activity for a local user.
///
-/// Xbox live context for the local user.
-/// Struct describing the activity.
-/// The "maxPlayers" and "currentPlayers" fields are optional and will be ignored if they are set to 0.
-/// The value of the "platform" field will be ignored and XSAPI will automatically set the activity as
-/// being on the correct local platform.
-/// True if the activity should be joinable on other platforms supported by the title.
-/// The AsyncBlock for this operation.
+/// {% term xbox-live %} context for the local user.
+/// Information about the activity.
+/// The `maxPlayers` and `currentPlayers` fields are optional; they are ignored if set to 0.
+/// The value of the `platform` field is ignored; XSAPI automatically sets the activity
+/// on the appropriate local platform.
+///
+/// True if the activity should be joinable on other platforms supported by the title.
+///
+/// The `XAsyncBlock` for this operation.
/// HRESULT return code for this API operation.
+///
+/// When a title starts or joins a multiplayer experience, it should create an
+/// activity. Doing this lets both the shell and other players in your title
+/// see the player's activity. Your title can let other players join the game
+/// in progress. If a player wants to join an activity for your title and it is not
+/// running, it is activated and the connection string is passed to it.
+/// To see how this function is used, see "Setting an activity" in
+/// the Activities section
+/// of Example code for Multiplayer Activity.
+///
STDAPI XblMultiplayerActivitySetActivityAsync(
_In_ XblContextHandle xblContext,
_In_ const XblMultiplayerActivityInfo* activityInfo,
@@ -231,15 +273,20 @@ STDAPI XblMultiplayerActivitySetActivityAsync(
///
/// Get the multiplayer activity for a set of users. You can query at most 30 users with each call.
///
-/// Xbox live context for the local user.
-/// List of Xbox User IDs for whom to get multiplayer activity.
-/// Size of the xuids array.
-/// The AsyncBlock for this operation.
+/// {% term xbox-live %} context for the local user.
+/// List of Xbox user IDs for whom to get multiplayer activity.
+/// Size of the `xuids` array.
+/// The `XAsyncBlock` for this operation.
/// HRESULT return code for this API operation.
///
/// To get the result, call and
-/// inside the XAsyncBlock callback or
-/// after the async operation is complete.
+/// inside the `XAsyncBlock` callback or
+/// after the async operation is complete.
+/// To see how this function is used, see "Getting activities" in
+/// the Activities section
+/// of Example code for Multiplayer Activity.
+/// For more information about multiplayer activities, see
+/// Activities.
///
STDAPI XblMultiplayerActivityGetActivityAsync(
_In_ XblContextHandle xblContext,
@@ -251,9 +298,18 @@ STDAPI XblMultiplayerActivityGetActivityAsync(
///
/// Gets the buffer size needed to store the results of a get activity call.
///
-/// The AsyncBlock for this operation.
+/// The `XAsyncBlock` for this operation.
/// The size in bytes for the result buffer.
/// HRESULT return code for this API operation.
+///
+/// To see how this function is used, see "Getting activities" in
+/// the Activities section
+/// of Example code for Multiplayer Activity.
+/// For more information about multiplayer activities, see
+/// Activities.
+///
+///
+///
STDAPI XblMultiplayerActivityGetActivityResultSize(
_In_ XAsyncBlock* async,
_Out_ size_t* resultSizeInBytes
@@ -262,15 +318,25 @@ STDAPI XblMultiplayerActivityGetActivityResultSize(
///
/// Gets the results for a successful get activity call.
///
-/// The AsyncBlock for this operation.
+/// The `XAsyncBlock` for this operation.
/// The size of the result buffer.
/// Use to get the required buffer size.
-/// A caller allocated byte buffer to write result into.
-/// Strongly typed array ofXblMultiplayerActivityInfo that points into buffer.
-/// Do not free this as its lifecycle is tied to buffer.
-/// The number of entries in the ptrToBufferResults array.
-/// The number of bytes in the provided buffer that were used.
+/// A caller-allocated byte buffer that receives the result.
+/// Strongly typed array of that
+/// points into `buffer`. Do not free this array. Its lifecycle is tied to `buffer`.
+///
+/// The number of entries in the `ptrToBufferResults` array.
+/// The number of bytes in `buffer` that were used.
/// HRESULT return code for this API operation.
+///
+/// To get the size of the buffer that you need to store the results, call the
+/// function.
+/// To see how this function is used, see "Getting activities" in
+/// the Activities section
+/// of Example code for Multiplayer Activity.
+/// For more information about multiplayer activities, see
+/// Activities.
+///
STDAPI XblMultiplayerActivityGetActivityResult(
_In_ XAsyncBlock* async,
_In_ size_t bufferSize,
@@ -281,16 +347,21 @@ STDAPI XblMultiplayerActivityGetActivityResult(
) XBL_NOEXCEPT;
///
-/// Clear the multiplayer activity for the local user.
+/// Clears the multiplayer activity for the local user.
///
-/// Xbox live context for the local user.
-/// The AsyncBlock for this operation.
+/// {% term xbox-live %} context for the local user.
+/// The `XAsyncBlock` for this operation.
/// HRESULT return code for this API operation.
///
-/// Titles should delete the activity for a user as soon as they leave the multiplayer activity.
-/// A user's activity will be automatically cleared by a presence check if the title fails to delete it manually.
-/// The result of the asynchronous operation can be obtained by calling
-/// inside the AsyncBlock callback or after the AsyncBlock is complete.
+/// Titles should delete the activity for a user as soon as they leave the multiplayer activity.
+/// If the title does not delete a user's activity, it is automatically cleared by a presence check.
+/// To get the result of the asynchronous operation, call
+/// inside the `XAsyncBlock` callback or after `XAsyncBlock` is complete.
+/// To see how this function is used, see "Deleting an activity" in
+/// the Activities section
+/// of Example code for Multiplayer Activity.
+/// For more information about multiplayer activities, see
+/// Activities.
///
STDAPI XblMultiplayerActivityDeleteActivityAsync(
_In_ XblContextHandle xblContext,
@@ -298,21 +369,26 @@ STDAPI XblMultiplayerActivityDeleteActivityAsync(
) XBL_NOEXCEPT;
///
-/// Sends invites to specified Xuids to join the callers current activity.
+/// Sends invites to Xbox user IDs to join the caller's current activity.
///
-/// Xbox live context for the local user.
-/// List of Xbox User IDs to invite.
-/// Size of the xuids array.
-/// If the title is configured for cross platform invites,
-/// setting this to true will send an invitation to all platform endpoints the title supports.
-/// If set to false, the invite will only be sent to the platform of the sender.
-/// If cross platform invites are not configured, the invite will always be sent to just the sender's platform.
-/// (Optional) Connection string that the peer will use to join the game.
-/// The AsyncBlock for this operation.
+/// {% term xbox-live %} context for the local user.
+/// List of Xbox user IDs to invite.
+/// Size of the `xuids` array.
+/// If the title is configured for cross-platform invites,
+/// setting this parameter to true sends an invite to all platform endpoints that the title supports.
+/// If set to false, the invite is sent to the sender's platform platform only.
+/// If cross-platform invites are not configured, the invite is always sent to the sender's platform only.
+/// (Optional) Connection string that the peer uses to join the game.
+/// The `XAsyncBlock` for this operation.
/// HRESULT return code for this API operation.
///
-/// The result of the asynchronous operation can be obtained by calling
-/// inside the AsyncBlock callback or after the AsyncBlock is complete.
+/// To get the result of the asynchronous operation, call
+/// inside the `XAsyncBlock` callback or after `XAsyncBlock` is complete.
+/// To see how this function is used, see "Sending invites" in
+/// the Invites section
+/// of Example code for Multiplayer Activity.
+/// For more information about multiplayer activities, see
+/// Activities.
///
STDAPI XblMultiplayerActivitySendInvitesAsync(
_In_ XblContextHandle xblContext,
@@ -325,8 +401,13 @@ STDAPI XblMultiplayerActivitySendInvitesAsync(
#if HC_PLATFORM == HC_PLATFORM_WIN32 || HC_PLATFORM_IS_EXTERNAL
///
-/// Contains information about received game multiplayer activity invites.
+/// Describes multiplayer activity invites.
///
+///
+///
+/// For more information about multiplayer activities, see
+/// Activities.
+///
typedef struct XblMultiplayerActivityInviteData
{
///
@@ -340,7 +421,7 @@ typedef struct XblMultiplayerActivityInviteData
uint64_t senderXuid;
///
- /// Sender Image URL.
+ /// URL of the sender's gamerpic.
///
_Field_z_ const char* senderImageUrl;
@@ -350,20 +431,20 @@ typedef struct XblMultiplayerActivityInviteData
char senderGamertag[XBL_GAMERTAG_CHAR_SIZE];
///
- /// The UTF-8 encoded modern gamertag for the player.
+ /// The UTF-8 encoded modern gamertag of the player.
/// Not guaranteed to be unique.
///
char senderModernGamertag[XBL_MODERN_GAMERTAG_CHAR_SIZE];
///
- /// The UTF-8 encoded suffix appended to modern gamertag to ensure uniqueness.
- /// May be empty in some cases.
+ /// The UTF-8 encoded suffix appended to the modern gamertag to ensure uniqueness.
+ /// Can be empty in some cases.
///
char senderModernGamertagSuffix[XBL_MODERN_GAMERTAG_SUFFIX_CHAR_SIZE];
///
/// The UTF-8 encoded unique modern gamertag and suffix.
- /// Format will be "modernGamertag#suffix".
+ /// Format is "modernGamertag#suffix".
/// Guaranteed to be no more than 16 rendered characters.
///
char senderUniqueModernGamertag[XBL_UNIQUE_MODERN_GAMERTAG_CHAR_SIZE];
@@ -374,13 +455,13 @@ typedef struct XblMultiplayerActivityInviteData
_Field_z_ const char* titleName;
///
- /// Url to the title image used in the invite.
+ /// URL of the title image used in the invite.
///
_Field_z_ const char* titleImageUrl;
///
- /// The connection string is passed to the connecting client in order to join a game.
- /// Typically contains information like the server IP address.
+ /// Connection string to pass to the connecting client so that it can join a game.
+ /// Typically contains information such as the server IP address.
///
_Field_z_ const char* connectionString;
@@ -396,7 +477,11 @@ typedef struct XblMultiplayerActivityInviteData
/// Data needed by the invitee to respond to a game invite.
/// Client context provided when the handler was added.
///
-/// The lifetime of the XblMultiplayerActivityInviteData object is limited to the callback.
+///
+/// The lifetime of the object is limited to the callback.
+/// For more information about multiplayer activities, see
+/// Activities.
+///
typedef void CALLBACK XblMultiplayerActivityInviteHandler(
_In_ const XblMultiplayerActivityInviteData* data,
_In_opt_ void* context
@@ -405,10 +490,16 @@ typedef void CALLBACK XblMultiplayerActivityInviteHandler(
///
/// Registers an event handler for multiplayer activity invites.
///
-/// Xbox live context for the local user.
+/// {% term xbox-live %} context for the local user.
/// The callback function that receives notifications.
-/// Caller context to be passed the handler.
-/// An XblFunctionContext object that can be used to unregister the event handler.
+/// Caller context to be passed to the handler.
+/// An `XblFunctionContext` object that can be used to unregister the event handler.
+///
+/// To unregister an event handler for multiplayer activity invites, call the
+/// function.
+/// For more information about multiplayer activities, see
+/// Activities.
+///
STDAPI_(XblFunctionContext) XblMultiplayerActivityAddInviteHandler(
_In_ XblContextHandle xblContextHandle,
_In_ XblMultiplayerActivityInviteHandler* handler,
@@ -418,9 +509,15 @@ STDAPI_(XblFunctionContext) XblMultiplayerActivityAddInviteHandler(
///
/// Unregisters an event handler for multiplayer activity invites.
///
-/// Xbox live context for the local user.
-/// The XblFunctionContext object that was returned when the event handler was registered.
+/// {% term xbox-live %} context for the local user.
+/// The `XblFunctionContext` object that was returned when the event handler was registered.
///
+///
+/// To register an event handler for multiplayer activity invites, call the
+/// function.
+/// For more information about multiplayer activities, see
+/// Activities.
+///
STDAPI XblMultiplayerActivityRemoveInviteHandler(
_In_ XblContextHandle xblContextHandle,
_In_ XblFunctionContext token
diff --git a/Include/xsapi-c/multiplayer_c.h b/Include/xsapi-c/multiplayer_c.h
index 7527f701..c265fc91 100644
--- a/Include/xsapi-c/multiplayer_c.h
+++ b/Include/xsapi-c/multiplayer_c.h
@@ -12,9 +12,10 @@ extern "C"
{
///
-/// Defines values used to indicate the state of a tournament game.
-/// DEPRECATED. It will be removed in a future release
+/// Defines values that indicate the state of a tournament game.
+/// DEPRECATED. This enumeration will be removed in a future release.
///
+///
enum class XblTournamentGameResult : uint32_t
{
///
@@ -49,13 +50,14 @@ enum class XblTournamentGameResult : uint32_t
};
///
-/// Defines values used to indicate the arbitration state of a tournament game.
-/// DEPRECATED. It will be removed in a future release
+/// Defines values that indicate the arbitration state of a tournament game.
+/// DEPRECATED. This enumeration will be removed in a future release.
///
+///
enum class XblTournamentArbitrationState : uint32_t
{
///
- /// No arbitration state set.
+ /// No arbitration state is set.
///
None,
@@ -65,25 +67,27 @@ enum class XblTournamentArbitrationState : uint32_t
Completed,
///
- /// The match was canceled, for example in the case of forfeiting.
+ /// The match was canceled, such as in the case of forfeiting.
///
Canceled,
///
- /// The match begun, but no players or servers reported results in time before the arbitration deadline.
+ /// The match began, but no players or servers reported results before the arbitration deadline.
///
NoResults,
///
- /// Some results were received, and results were compiled based on this incomplete data.
+ /// Some results were received, and results were compiled based on the incomplete data.
///
PartialResults
};
///
-/// Defines values used to indicate the source for a tournament game state.
-/// DEPRECATED. It will be removed in a future release
+/// Defines values that indicate the source for a tournament game state.
+/// DEPRECATED. This enumeration will be removed in a future release.
///
+///
+///
enum class XblTournamentGameResultSource : uint32_t
{
///
@@ -92,7 +96,7 @@ enum class XblTournamentGameResultSource : uint32_t
None,
///
- /// Game result source is from client arbitration submit.
+ /// Game result is determined by client arbitration.
///
Arbitration,
@@ -108,47 +112,52 @@ enum class XblTournamentGameResultSource : uint32_t
};
///
-/// Defines values used to indicate the status of a tournament game result.
-/// DEPRECATED. It will be removed in a future release
+/// Defines values that indicate the status of a tournament game result.
+/// DEPRECATED. This enumeration will be removed in a future release.
///
+///
+///
enum class XblTournamentArbitrationStatus : uint32_t
{
///
- /// Occurs before arbitrationStartTime.
+ /// The system time is before the arbitration start time (`ArbitrationStartTime`), which is also the start time for the match.
///
Waiting,
///
- /// Occurs after arbitrationStartTime and at least one user has gone active.
+ /// The system time is after the arbitration start time (`ArbitrationStartTime`), and at least one player has become active.
///
InProgress,
///
- /// The user has reported results and his role in the arbitration process is now done.
- /// Occurs either after (arbitrationForfeitTime and no players have joined), (arbitration succeeded), or (arbitrationFinishTime).
+ /// The player reported results, so the player's role in the arbitration process is now done.
+ /// Occurs when arbitration succeeds, after the arbitration forfeit time (`ArbitrationStartTime`
+ /// plus the `ForfeitTimeout` delta) if no players have joined, or after arbitration time-out
+ /// (`ArbitrationStartTime` plus the `ArbitrationTimeout` delta).
///
Complete,
///
- /// The user has gone active at least once and is now participating in the match.
+ /// The player has become active at least once and is now participating in the match.
///
Playing,
///
- /// The user was not able to upload results before the arbitrationTimeout deadline.
+ /// The player was not able to upload results before arbitration time-out (`ArbitrationStartTime` plus the `ArbitrationTimeout` delta).
///
Incomplete,
///
- /// The status is "Joining" until both the XblTournamentArbitrationStatus is "InProgress" and the member is active.
+ /// The system time is after the arbitration start time (`ArbitrationStartTime`), but the player is not yet active.
///
Joining
};
///
-/// Defines values used to indicate the team session registration state for a tournament.
-/// DEPRECATED. It will be removed in a future release
+/// Defines values that indicate the team session registration state for a tournament.
+/// DEPRECATED. This enumeration will be removed in a future release.
///
+///
enum class XblTournamentRegistrationState : uint32_t
{
///
@@ -177,34 +186,35 @@ enum class XblTournamentRegistrationState : uint32_t
Registered,
///
- /// The team has completed its participation in the Tournament.
+ /// The team completed its participation in the tournament.
///
Completed
};
///
-/// Defines values used to indicate the reason why the team in under selected tournament registration state.
+/// Defines values that indicate reasons why the team is under selected tournament registration state.
/// DEPRECATED. It will be removed in a future release
///
+///
enum class XblTournamentRegistrationReason : uint32_t
{
///
- /// The team registration reason is unknown.
+ /// The reason is unknown.
///
Unknown,
///
- /// The registration for this tournament has been closed.
+ /// The registration for this tournament is closed.
///
RegistrationClosed,
///
- /// One of the team members have already been registered for this tournament.
+ /// One of the team members is already registered for this tournament.
///
MemberAlreadyRegistered,
///
- /// The tournament has reached its max team registration limit and is now full.
+ /// The tournament has reached its team registration limit.
///
TournamentFull,
@@ -214,41 +224,55 @@ enum class XblTournamentRegistrationReason : uint32_t
TeamEliminated,
///
- /// The tournament has been completed.
+ /// The tournament is completed.
///
TournamentCompleted
};
///
-/// Defines values used to indicate status for visibility or accessibility of a session.
+/// Defines values that indicate the visibility or accessibility of a session.
///
+///
+///
+///
+///
+///
+///
+///
+///
+/// For more information,
+/// see Game session visibility and joinability
+/// and the Visibility and joinability section
+/// of Multiplayer Session advanced topics.
+///
enum class XblMultiplayerSessionVisibility : uint32_t
{
///
- /// Unknown.
+ /// The status is unknown.
///
Unknown,
///
- /// Ignore the SessionVisibility filter.
+ /// Ignore the session visibility filter.
///
Any,
///
- /// The session is private and it's not visible to other users who aren't in the session.
- /// Joining a visible or private session is a HTTP_E_STATUS_FORBIDDEN (403).
+ /// The session is private and is not visible to players who aren't in the session.
+ /// Attempting to join causes the service to return HTTP_E_STATUS_FORBIDDEN (403).
///
PrivateSession,
///
- /// The session is visible to other users who aren't in the session, but the session is read-only to them and they can't join.
- /// Joining an visible causes the service to return HTTP_E_STATUS_BAD_REQUEST (400).
+ /// The session is visible to players who aren't in the session, but the session is
+ /// read-only to them and they can't join.
+ /// Attempting to join causes the service to return HTTP_E_STATUS_BAD_REQUEST (400).
///
Visible,
///
/// The session is full and cannot be joined by anyone.
- /// Joining an open but full session causes the service to return HTTP_E_STATUS_BAD_REQUEST (400).
+ /// Attempting to join causes the service to return HTTP_E_STATUS_BAD_REQUEST (400).
///
Full,
@@ -259,9 +283,59 @@ enum class XblMultiplayerSessionVisibility : uint32_t
};
///
-/// Defines values used to indicate status for the initialization stage of a session during managed initialization.
+/// Defines values that indicate the initialization stage of a session during managed initialization.
///
+///
+///
+/// For more information about managed initialization, see the "Managed initialization" section
+/// of Target session initialization and QoS.
+///
enum class XblMultiplayerInitializationStage : uint32_t
+{
+ ///
+ /// Stage not known.
+ ///
+ Unknown,
+
+ ///
+ /// Stage not set.
+ ///
+ None,
+
+ ///
+ /// Joining stage. Typically, matchmaking creates a session and adds users to the session.
+ /// The client has until the joining timeout to join the session during this stage.
+ ///
+ Joining,
+
+ ///
+ /// Measuring stage. Quality of Service (QoS) measurement happens during this stage.
+ /// If the title is manually managing QoS, the title handles this stage.
+ /// Otherwise, the {% term xbox-live-party %} system handles this stage
+ /// when calling `RegisterGameSession` or `RegisterMatchSession`.
+ ///
+ Measuring,
+
+ ///
+ /// Evaluating stage. If `externalEvaluation` is false, this stage is skipped.
+ /// Otherwise, the title does its own evaluation.
+ ///
+ Evaluating,
+
+ ///
+ /// Failed stage. If the first initilization episode didn't succeed, the session can't be initialized.
+ ///
+ Failed
+};
+
+///
+/// Defines values that indicate the type of metric used to measure matchmaking Quality of Service (QoS) for a session.
+///
+///
+///
+/// For more information, see Target session initialization and QoS.
+///
+enum class XblMultiplayerMetrics : uint32_t
{
///
/// Unknown.
@@ -269,73 +343,31 @@ enum class XblMultiplayerInitializationStage : uint32_t
Unknown,
///
- /// Initialization stage not set.
- ///
- None,
-
- ///
- /// Joining initialization stage.
- /// Typically matchmaking creates session and puts users into it.
- /// SPC has up to the joining timeout to join the session during this phase.
- ///
- Joining,
-
- ///
- /// Measuring initialization stage. Stage where QoS measurement happens.
- /// If the title is manually managing QoS, then title will do this stage.
- /// Otherwise the Party system will do this when calling RegisterGameSession or RegisterMatchSession.
- ///
- Measuring,
-
- ///
- /// Evaluating initialization stage.
- /// If auto evaluate is true, then this stage is skipped.
- /// Otherwise the title will do its own evaluation.
- /// This stage is applied even with the SPC is managing QoS.
- ///
- Evaluating,
-
- ///
- /// Failed initialization stage.
- /// If episode 1 didn't succeed, then goes into failed permanently.
- ///
- Failed
-};
-
-///
-/// Defines values used to indicate the type of metric used to measure matchmaking QoS for a session.
-///
-enum class XblMultiplayerMetrics : uint32_t
-{
- ///
- /// Unknown metric.
- ///
- Unknown,
-
- ///
- /// Bandwidth host selection metric.
+ /// Upstream (peer-to-host) bandwidth.
///
BandwidthUp,
///
- /// Bandwidth down host selection metric.
+ /// Downstream (host-to-peer) bandwidth.
///
BandwidthDown,
///
- /// Bandwidth host selection metric.
+ /// Combined bandwidth.
///
Bandwidth,
///
- /// Latency host selection metric.
+ /// Upstream (peer-to-host) latency.
///
Latency
};
///
-/// Defines values used to indicate the current network address translation (NAT) settings for a console connecting to Xbox Live.
+/// Defines values that indicate the current network address translation (NAT) settings for
+/// a console connecting to {% term xbox-live %}.
///
+///
enum class XblNetworkAddressTranslationSetting : uint32_t
{
///
@@ -344,24 +376,29 @@ enum class XblNetworkAddressTranslationSetting : uint32_t
Unknown,
///
- /// Can connect with any other consoles regardless of their NAT setting.
+ /// Can connect with any consoles regardless of their NAT settings.
///
Open,
///
- /// Consoles using Moderate NAT settings can only connect with other consoles using Moderate or Open settings.
+ /// Can connect only with consoles that use Moderate or Open settings.
///
Moderate,
///
- /// Consoles using Strict NAT settings can only connect with other consoles using Open NAT settings.
+ /// Can connect only with consoles that use Open NAT settings.
///
Strict
};
///
-/// Defines values used to indicate types measurement failures for a session member on the network.
+/// Defines values that indicate why Quality of Service (QoS) measurement failed during session initialization.
///
+///
+///
+///
+/// For more information, see Target session initialization and QoS.
+///
enum class XblMultiplayerMeasurementFailure : uint32_t
{
///
@@ -370,50 +407,56 @@ enum class XblMultiplayerMeasurementFailure : uint32_t
Unknown,
///
- /// This player has no measurement failure.
+ /// No measurement failure.
///
None,
///
- /// This player failed because timeout measurement test failed.
+ /// Measurement timed out.
///
Timeout,
///
- /// This player failed because latency measurement test failed.
+ /// Measurement of latency failed.
///
Latency,
///
- /// This player failed because bandwidth up measurement test failed.
+ /// Measurement of upstream (peer-to-host) bandwidth failed.
///
BandwidthUp,
///
- /// This player failed because bandwidth down measurement test failed.
+ /// Measurement of downstream (host-to-peer) bandwidth failed.
///
BandwidthDown,
///
- /// This player failed cause someone failed in their group failed.
+ /// Measurement failed for this player failed because measurement failed for another player in the group.
///
Group,
///
- /// This player failed due to a network error such as the user was unreachable.
+ /// Measurement failed due to a network error; for example, the player was unreachable.
///
Network,
///
- /// This player failed because your episode failed.
- /// This likely happened because there wasn't enough users in the session.
+ /// Measurement failed because the initialization episode failed.
+ /// This likely happened because not enough users were in the session.
///
Episode
};
///
-/// Defines values used to indicate current status values for a session.
+/// Defines values that indicate the current status of a session.
///
+///
+///
+/// For more information, see
+/// the Session user states section
+/// of Multiplayer Session advanced topics.
+///
enum class XblMultiplayerSessionStatus : uint32_t
{
///
@@ -422,53 +465,53 @@ enum class XblMultiplayerSessionStatus : uint32_t
Unknown,
///
- /// The session is active and there is at least one user.
+ /// At least one player is active in the session.
///
Active,
///
- /// The session is inactive.
- /// This means no users in the session are active or all users left the session.
+ /// No players are active in the session or all players left the session.
///
Inactive,
///
- /// The session is reserved.
- /// This means one for more users have not accepted the session invite.
+ /// One or more players have not accepted the session invite.
///
Reserved
};
///
-/// Defines values used to indicate restrictions on the users who can join a session.
+/// Defines values that indicate restrictions on the users who can join a session.
///
enum class XblMultiplayerSessionRestriction : uint32_t
{
///
- /// The unrecognized restriction type.
+ /// Unknown restriction type.
///
Unknown,
///
- /// Default value, no restriction.
+ /// No restrictions.
///
None,
///
- /// If "local", only users whose token's DeviceId matches someone else already in the session and "active": true.
+ /// Only players whose token `DeviceId` values match the `DeviceId` of a player
+ /// who is already in the session and active.
///
Local,
///
- /// If "followed", only local users (as defined above) and users who are followed by an
+ /// Only local players (as defined for `Local`) and players who are followed by an
/// existing (not reserved) member of the session can join without a reservation.
///
Followed
};
///
-/// Defines values used to indicate status for a matchmaking request for a session.
+/// Defines values that indicate the status of a matchmaking request for a session.
///
+///
enum class XblMatchmakingStatus : uint32_t
{
///
@@ -477,54 +520,61 @@ enum class XblMatchmakingStatus : uint32_t
Unknown,
///
- /// Indicates the matchmaking search is not specified.
- /// This status is optional and requires the clientMatchmaking capability.
+ /// The matchmaking search is not specified.
+ /// This status is optional and requires the `clientMatchmaking` capability.
///
None,
///
- /// Indicates the matchmaking search is still searching.
+ /// The matchmaking search is still searching.
///
Searching,
///
- /// Indicates the matchmaking search has expired.
+ /// The matchmaking search has expired.
///
Expired,
///
- /// Indicates the matchmaking search has found a session.
+ /// The matchmaking search found a session.
///
Found,
///
- /// Indicates the matchmaking search has been canceled.
+ /// The matchmaking search was canceled.
///
Canceled
};
///
-/// Defines values used to indicate status for member of a session.
+/// Defines values that indicate the status of a member of a session.
///
+///
+///
+///
enum class XblMultiplayerSessionMemberStatus : uint32_t
{
///
- /// Member is reserved for a specific Xbox User ID.
- /// This specific member must join the session to fill the reservation.
- /// If a reserved member doesn't join before the JoinTimeout they will be removed.
+ /// The member is reserved for a specific Xbox user ID.
+ /// The specified member must join the session to fill the reservation.
+ /// If a reserved member doesn't join before the end of `JoinTimeout` (in
+ /// the structure), the member is removed from the session.
///
Reserved,
///
/// The member is inactive in the current title.
- /// The member may be active in another title as specified by ActiveTitleId.
- /// If an inactive member doesn't mark themselves as Active within the MemberInactiveTimeout they will be removed from the session.
+ /// The member may be active in another title, as specified by `ActiveTitleId` in
+ /// the structure.
+ /// If an inactive member doesn't mark themselves as active before the end of `MemberInactiveTimeout`
+ /// (in the structure), the member is removed from the session.
///
Inactive,
///
/// When the shell launches the title to start a multiplayer game, the member is marked as ready.
- /// If a ready member doesn't mark themselves as Active within the MemberReadyTimeout they will be marked as inactive.
+ /// If a ready member doesn't mark themselves as active before the end of `MemberReadyTimeout` (in
+ /// the structure), the member is marked as inactive.
///
Ready,
@@ -535,18 +585,20 @@ enum class XblMultiplayerSessionMemberStatus : uint32_t
};
///
-/// Defines values used to indicate the mode used when creating or writing to a new Multiplayer service session.
+/// Defines values that indicate the mode used when creating or writing to a multiplayer session.
///
+///
+///
enum class XblMultiplayerSessionWriteMode : uint32_t
{
///
- /// Create a new multiplayer session.
+ /// Create a multiplayer session.
/// Fails if the session already exists.
///
CreateNew,
///
- /// Either update or create a new session.
+ /// Either update or create a session.
/// Doesn't care whether the session exists.
///
UpdateOrCreateNew,
@@ -559,14 +611,14 @@ enum class XblMultiplayerSessionWriteMode : uint32_t
///
/// Updates an existing multiplayer session.
- /// Fails with HTTP_E_STATUS_PRECOND_FAILED (HTTP status 412) if eTag on local session doesn't match eTag on server.
+ /// Fails with HTTP_E_STATUS_PRECOND_FAILED (HTTP status 412) if the ETag on the local session doesn't match the ETag on the server.
/// Fails if the session does not exist.
///
SynchronizedUpdate,
};
///
-/// Defines values used to indicate the write status of a Multiplayer session.
+/// Defines values that indicate the write status of a multiplayer session.
///
enum class XblWriteSessionStatus : uint32_t
{
@@ -576,44 +628,45 @@ enum class XblWriteSessionStatus : uint32_t
Unknown,
///
- /// HTTP Result 403- User does not have proper permission to write a session.
+ /// User does not have permission to write to the session (HTTP status 403).
///
AccessDenied,
///
- /// HTTP Result 201- Write created session successfully.
+ /// The write operation created the session (HTTP status 201).
///
Created,
///
- /// HTTP Result 409- Conflict occurred during write about session document.
+ /// A conflict occurred during the write operation (HTTP status 409).
///
Conflict,
///
- /// HTTP Result 404- Session not found.
+ /// The session was not found (HTTP status 404).
///
HandleNotFound,
///
- /// HTTP Result 412- Session document is not the most recent.
+ /// The session was updated by another user (HTTP status 412).
///
OutOfSync,
///
- /// HTTP Result 204- Session deleted successfully.
+ /// The session was deleted successfully (HTTP status 204).
///
SessionDeleted,
///
- /// HTTP Result 200- Session updated successfully.
+ /// The session was updated successfully (HTTP status 200).
///
Updated
};
///
-/// Defines values used to indicate change types for a multiplayer session.
+/// Defines values that indicate change types for a multiplayer session.
///
+///
enum class XblMultiplayerSessionChangeTypes : uint32_t
{
///
@@ -632,12 +685,12 @@ enum class XblMultiplayerSessionChangeTypes : uint32_t
HostDeviceTokenChange = 0x0002,
///
- /// Changes to the stage of initialization has changed.
+ /// Changes to the stage of initialization.
///
InitializationStateChange = 0x0004,
///
- /// Changes to the matchmaking status (e.g. match found or expired).
+ /// Changes to the matchmaking status, such as match found or match expired.
///
MatchmakingStatusChange = 0x0008,
@@ -652,29 +705,29 @@ enum class XblMultiplayerSessionChangeTypes : uint32_t
MemberStatusChange = 0x0020,
///
- /// Changes to the XblMultiplayerJoinability of the session.
+ /// Changes to the joinability () of the session.
///
SessionJoinabilityChange = 0x0040,
///
- /// Changes within properties/custom.
+ /// Changes in the custom properties of the session.
///
CustomPropertyChange = 0x0080,
///
- /// Changes within member/properties/custom, for any of the members.
+ /// Changes in the custom properties of any of the members.
///
MemberCustomPropertyChange = 0x0100,
///
- /// Changes within tournament server properties. Such as next game, last game, or registration.
- /// DEPRECATED. It will be removed in a future release
+ /// Changes in tournament server properties, such as next game, last game, or registration.
+ /// DEPRECATED. This value will be removed in a future release.
///
TournamentPropertyChange = 0x0200,
///
- /// Changes within arbitration server properties. Such as game results.
- /// DEPRECATED. It will be removed in a future release
+ /// Changes in arbitration server properties, such as game results.
+ /// DEPRECATED. This value will be removed in a future release.
///
ArbitrationPropertyChange = 0x0400
};
@@ -682,11 +735,13 @@ enum class XblMultiplayerSessionChangeTypes : uint32_t
DEFINE_ENUM_FLAG_OPERATORS(XblMultiplayerSessionChangeTypes);
///
-/// Defines values used to indicate mutable_role_setting types for a multiplayer role.
+/// Defines values that indicate which multiplayer role settings are mutable.
///
+///
///
-/// Only the session owner can modify role settings and only those that are set in XblMultiplayerRoleType::MutableRoleSettings.
-/// The XblMutableRoleSettings can be set in the session template.
+/// Only the session owner can modify role settings and only those that are set
+/// in `XblMultiplayerRoleType::MutableRoleSettings`.
+/// You can set `XblMutableRoleSettings` in the session template.
///
enum class XblMutableRoleSettings : uint32_t
{
@@ -696,12 +751,12 @@ enum class XblMutableRoleSettings : uint32_t
None = 0x0,
///
- /// Allows you to set a max count for the multiplayer role.
+ /// Allows you to set the maximum number of players that can fill the role.
///
Max = 0x1,
///
- /// Allows you to set a target count for the multiplayer role.
+ /// Allows you to set the target number of players that should fill the role.
///
Target = 0x2
};
@@ -713,8 +768,9 @@ DEFINE_ENUM_FLAG_OPERATORS(XblMutableRoleSettings);
///
/// Represents a reference to a tournament reference.
-/// DEPRECATED. It will be removed in a future release
+/// DEPRECATED. This structure will be removed in a future release.
///
+///
typedef struct XBL_DEPRECATED XblTournamentReference
{
///
@@ -728,7 +784,7 @@ typedef struct XBL_DEPRECATED XblTournamentReference
_Null_terminated_ char TournamentId[XBL_GUID_LENGTH];
///
- /// The organizer name of the tournament.
+ /// The name of the tournament organizer.
///
_Null_terminated_ char Organizer[XBL_TOURNAMENT_REFERENCE_ORGANIZER_LENGTH];
@@ -740,8 +796,8 @@ typedef struct XBL_DEPRECATED XblTournamentReference
///
-/// The result of a multiplayer game.
-/// DEPRECATED. It will be removed in a future release
+/// Represents the result of a multiplayer game.
+/// DEPRECATED. This structure will be removed in a future release.
///
typedef struct XBL_DEPRECATED XblTournamentGameResultWithRank
{
@@ -751,19 +807,19 @@ typedef struct XBL_DEPRECATED XblTournamentGameResultWithRank
XblTournamentGameResult Result;
///
- /// The ranking of the result. Only applies when result is XblTournamentGameResult::Rank.
+ /// The ranking of the result. Applies only when `Result` is `XblTournamentGameResult::Rank`.
///
uint64_t Ranking;
} XblTournamentGameResultWithRank;
///
-/// A team's result for a multiplayer game.
-/// DEPRECATED. It will be removed in a future release
+/// Represents a team result for a multiplayer game.
+/// DEPRECATED. This structure will be removed in a future release.
///
typedef struct XBL_DEPRECATED XblTournamentTeamResult
{
///
- /// Name of the team that the result is for.
+ /// Name of the team.
///
const char* Team;
@@ -778,27 +834,32 @@ typedef struct XBL_DEPRECATED XblTournamentTeamResult
} XblTournamentTeamResult;
///
-/// Represents requirements that apply to each connection between a host candidate and session members.
+/// Represents requirements for each connection between a host candidate and session members.
///
+///
+///
+///
+/// For more information, see Target session initialization and QoS.
+///
typedef struct XblMultiplayerPeerToHostRequirements
{
///
- /// The maximum latency, in milliseconds, for the peer to host connection.
+ /// The maximum latency, in milliseconds, of the upstream (peer-to-host) connection.
///
uint64_t LatencyMaximum;
///
- /// The minimum bandwidth down in kilobits per second for the peer to host connection.
+ /// The minimum bandwidth, in kilobits per second, of the downstream (host-to-peer) connection.
///
uint64_t BandwidthDownMinimumInKbps;
///
- /// The minimum bandwidth up in kilobits per second for the peer to host connection.
+ /// The minimum bandwidth, in kilobits per second, of the upstream (peer-to-host) connection.
///
uint64_t BandwidthUpMinimumInKbps;
///
- /// Indicates which metric was used to select the host.
+ /// The metric used to select the host.
///
XblMultiplayerMetrics HostSelectionMetric;
} XblMultiplayerPeerToHostRequirements;
@@ -806,234 +867,258 @@ typedef struct XblMultiplayerPeerToHostRequirements
///
/// Represents requirements for a connection between session members.
///
+///
+///
typedef struct XblMultiplayerPeerToPeerRequirements
{
///
- /// The maximum latency, in milliseconds, for the peer to peer connection.
+ /// The maximum latency, in milliseconds, for the peer-to-peer connection.
///
uint64_t LatencyMaximum;
///
- /// The minimum bandwidth in kilobits per second for the peer to peer connection.
+ /// The minimum bandwidth, in kilobits per second, for the peer-to-peer connection.
///
uint64_t BandwidthMinimumInKbps;
} XblMultiplayerPeerToPeerRequirements;
///
-/// Used to configure requirements and initialize a new Multiplayer session.
+/// Represents requirements for a new Multiplayer service session.
///
+///
+///
typedef struct XblMultiplayerMemberInitialization
{
///
- /// Timeout in milliseconds for the first stage of the QoS process which is the joining stage.
+ /// Maximum time, in milliseconds, for the joining stage of the Quality of Service (QoS) process.
///
uint64_t JoinTimeout;
///
- /// Timeout in milliseconds for the measurement stage of the QoS process.
+ /// Maximum time, in milliseconds, for the measurement stage of the QoS process.
///
uint64_t MeasurementTimeout;
///
- /// Timeout in milliseconds for the evaluation stage of the QoS process.
+ /// Maximum time, in milliseconds, for the evaluation stage of the QoS process.
///
uint64_t EvaluationTimeout;
///
- /// This is an optional evaluate stage for title. The title can do evaluation when set to true.
+ /// When set to true, indicates that the title performs the evaluation stage.
///
bool ExternalEvaluation;
///
- /// Defaults to 2. Must be between 1 and maxMemberCount. Only applies to initialization episode zero.
+ /// Minimum number of members for the session. Defaults to 2. Must be between 1 and `maxMemberCount`.
+ /// Applies only to the joining stage.
///
uint32_t MembersNeededToStart;
} XblMultiplayerMemberInitialization;
///
-/// Represents the capabilities of a multiplayer session.
+/// Represents the capabilities of a Multiplayer service session.
///
+///
+///
///
-/// Session capabilities are boolean values that are optionally set in the session template.
-/// If no capabilities are needed, an empty SessionCapabilities object should be in the template
-/// to prevent capabilities from being specified on session creation, unless the title
-/// requires dynamic session capabilities.
+/// Session capabilities are optional Boolean values that are set in the session template.
+/// If no capabilities are needed, an empty `SessionCapabilities` object should be in the template
+/// to prevent capabilities from being specified at session creation, unless the title
+/// requires dynamic session capabilities.
+/// For more information, see the Session capabilities
+/// section of Multiplayer Session advanced topics.
///
typedef struct XblMultiplayerSessionCapabilities
{
///
- /// If false, the session can't enable any metrics and the session members can not set their SecureDeviceAddress.
+ /// Indicates whether a session can enable metrics and session members can set `secureDeviceAddress`.
+ /// If false, the session can't enable any metrics, and session members can't set `secureDeviceAddress`.
///
bool Connectivity;
///
- /// True if team capability is set on the session for a tournament.
- /// DEPRECATED. It will be removed in a future release
+ /// If true, team capability is set on the session for a tournament.
+ /// DEPRECATED. This member will be removed in a future release.
///
XBL_DEPRECATED bool Team;
///
- /// True if arbitration capability is set on the session for a tournament.
- /// DEPRECATED. It will be removed in a future release
+ /// If true, arbitration capability is set on the session for a tournament.
+ /// DEPRECATED. This member will be removed in a future release.
///
XBL_DEPRECATED bool Arbitration;
///
- /// By default (if false), active users are required to remain online playing the title,
- /// otherwise they get demoted to inactive status.
- /// Setting this flag to true disables this check so that members stay active indefinitely.
+ /// If false (the default value), active users are required to remain online playing the title.
+ /// If they don't, they are demoted to inactive status.
+ /// Set this flag to true to enable session members to stay active indefinitely.
///
bool SuppressPresenceActivityCheck;
///
- /// Indicates whether the session represents actual gameplay, as opposed to setup/menu time like a lobby or matchmaking.
- /// If true, then the session is in gameplay mode.
+ /// Indicates whether the session represents actual gameplay rather than time in setup or
+ /// a menu, such a lobby or during matchmaking.
+ /// If true, the session is in gameplay mode.
///
bool Gameplay;
///
- /// If true, this session can host a large number of users, which has impact on other session properties (see documentation).
+ /// If true, the session can host 101 to 1000 users, which affects other session features.
+ /// If false, the session can host 1 to 100 users. For more information, see
+ /// the Session size section
+ /// of Multiplayer Session advanced topics.
///
bool Large;
///
- /// If true, this connection is required to have a member be active (see documentation).
+ /// If true, a connection is required for a member to be marked as active. To enable session notifications
+ /// and detect disconnections, this member must be set to true. For more information, see
+ /// the Subscribe for MPSD session change notifications section
+ /// of Multiplayer tasks.
///
bool ConnectionRequiredForActiveMembers;
///
- /// Session supports calls from platforms without strong title identity.
+ /// If true, the session supports calls from platforms without strong title identity.
/// This capability can't be set on large sessions.
///
bool UserAuthorizationStyle;
///
- /// Session supports cross play between PC and Xbox.
+ /// If true, the session supports crossplay between {% term platform_windows %} PC and Xbox.
///
bool Crossplay;
///
- /// True, if the session can be linked to a search handle for searching.
+ /// If true, the session can be linked to a search handle for searching.
///
bool Searchable;
///
- /// If you have user_authorization_style set, then in order to be searchable, you must have owners set.
+ /// If true, the session has owners. For a session to be searchable when `UserAuthorizationStyle` is
+ /// true, the session must have owners.
///
bool HasOwners;
} XblMultiplayerSessionCapabilities;
///
-/// Represents constant values for a multiplayer session.
+/// Represents constants for a multiplayer session.
///
+///
+/// Session constants are set by the creator or by the session template only when a session is created.
+///
typedef struct XblMultiplayerSessionConstants
{
///
- /// The maximum number of members in this session.
+ /// The maximum number of members in the session.
///
uint32_t MaxMembersInSession;
///
- /// The visibility of this session.
+ /// The visibility of the session.
///
XblMultiplayerSessionVisibility Visibility;
///
- /// A collection of Xbox User IDs indicating who initiated the session. (Optional)
+ /// A collection of Xbox user IDs indicating who initiated the session. (Optional)
///
uint64_t* InitiatorXuids;
///
- /// The number of entries in the InitiatorXuids array.
+ /// The number of entries in the `InitiatorXuids` array.
///
size_t InitiatorXuidsCount;
///
- /// JSON string that specify the custom constants for the session.
- /// These can not be changed after the session is created. (Optional)
+ /// Any custom constants for the session, specified in a JSON string.
+ /// These constants can't be changed after the session is created. (Optional)
///
const char* CustomJson;
///
- /// JSON string that specify the cloud compute package constants for the session.
- /// These can not be changed after the session is created. (Optional)
+ /// The Cloud Compute package constants for the session, specified in a JSON string.
+ /// These constants can't be changed after the session is created. (Optional)
///
const char* SessionCloudComputePackageConstantsJson;
///
- /// If a member reservation does not join within this timeout, then reservation is removed.
+ /// Maximum time, in milliseconds, for a member with a reservation to join the session.
+ /// If the member doesn't join within this time, the reservation is removed.
///
uint64_t MemberReservedTimeout;
///
- /// If an inactive member reservation does not become active within this timeout, then the inactive member is removed from the session.
+ /// Maximum time, in milliseconds, for an inactive member to become active.
+ /// If an inactive member doesn't become active within this time, the member is removed from the session.
///
uint64_t MemberInactiveTimeout;
///
- /// If a member who is marked as ready doesn't mark themselves as active within this timeout, then member becomes inactive.
+ /// Maximum time, in milliseconds, for a member who is marked as ready to become active.
/// When the shell launches the title to start a multiplayer game, the member is marked as ready.
+ /// If a member who is marked as ready doesn't become active within this time, the member becomes inactive.
///
uint64_t MemberReadyTimeout;
///
- /// If the session is empty for this timeout, then the session is deleted.
+ /// Maximum time, in milliseconds, that the session can remain empty.
+ /// If no members join the session within this time, the session is deleted.
///
uint64_t SessionEmptyTimeout;
///
- /// Delta from start time representing the point at which results are finalized.
- /// If no one has reported (client or server) at this point, we declare the match results incomplete.
- /// DEPRECATED. It will be removed in a future release
+ /// Delta, in milliseconds, from start time that represents the time at which results are finalized.
+ /// If no one (client or server) has reported at this time, we declare the match results incomplete.
+ /// DEPRECATED. This member will be removed in a future release.
///
XBL_DEPRECATED uint64_t ArbitrationTimeout;
///
- /// Delta from start time representing the point at which, if the session has no active users, the match is canceled.
- /// DEPRECATED. It will be removed in a future release
+ /// Delta, in milliseconds, from start time that represents the time at which, if the session has
+ /// no active users, the match is canceled.
+ /// DEPRECATED. This member will be removed in a future release.
///
XBL_DEPRECATED uint64_t ForfeitTimeout;
///
- /// Indicates if the title wants latency measured for determining connectivity.
- /// Requires CapabilitiesConnectivity capability.
+ /// If true, indicates that the title wants latency measured to help determine connectivity.
+ /// Requires `capabilities.connectivity` to be true.
///
bool EnableMetricsLatency;
///
- /// Indicates if the title wants bandwidth down measured for determining connectivity.
- /// Requires CapabilitiesConnectivity capability.
+ /// If true, indicates that the title wants downstream (host-to-peer) bandwidth measured to help
+ /// determine connectivity. Requires `capabilities.connectivity` to be true.
///
bool EnableMetricsBandwidthDown;
///
- /// Indicates if the title wants bandwidth up measured for determining connectivity.
- /// Requires CapabilitiesConnectivity capability.
+ /// If true, indicates that the title wants upstream (peer-to-host) bandwidth measured to help
+ /// determine connectivity. Requires `capabilities.connectivity` to be true.
///
bool EnableMetricsBandwidthUp;
///
- /// Indicates if the title wants a custom measurement measured for determining connectivity.
- /// Requires CapabilitiesConnectivity capability.
+ /// If true, indicates that the title wants a custom measurement to help determine connectivity.
+ /// Requires `capabilities.connectivity` to be true.
///
bool EnableMetricsCustom;
///
- /// If a member_initialization object is set, the session expects the client system or title
- /// to perform initialization following session creation.
- /// The timeouts and initialization stages are automatically tracked by
- /// the session, including initial QoS if any metrics are set.
- /// Will be null if it is not set.
+ /// If set, the session expects the client system or title to perform initialization after session creation.
+ /// Timeouts and initialization stages are automatically tracked by the session, including
+ /// initial Quality of Service (QoS) measurements if any metrics are set.
///
XblMultiplayerMemberInitialization* MemberInitialization;
///
- /// Peer to peer QoS requirements.
+ /// QoS requirements for a connection between session members.
///
XblMultiplayerPeerToPeerRequirements PeerToPeerRequirements;
///
- /// Peer to host QoS requirements.
+ /// QoS requirements for a connection between a host candidate and session members.
///
XblMultiplayerPeerToHostRequirements PeerToHostRequirements;
@@ -1058,16 +1143,18 @@ typedef struct XblMultiplayerSessionConstants
#define XBL_MULTIPLAYER_SESSION_NAME_MAX_LENGTH XBL_MULTIPLAYER_SESSION_TEMPLATE_NAME_MAX_LENGTH
///
-/// MPSD can create various handles which refer to a session.
-/// They are immutable and can only be created, read, and deleted.
+/// Represents a handle ID of a multiplayer session.
///
+///
///
+/// Multiplayer Session Directory (MPSD) can create various handles that refer to a session.
+/// They are immutable and can only be created, read, and deleted.
/// Note that this handle ID references to a service side object.
///
typedef struct XblMultiplayerSessionHandleId
{
///
- /// MPSD service generated ID that identifies the handle.
+ /// The ID of the handle that MSPD created.
///
_Null_terminated_ char value[XBL_GUID_LENGTH];
} XblMultiplayerSessionHandleId;
@@ -1078,7 +1165,7 @@ typedef struct XblMultiplayerSessionHandleId
typedef struct XblMultiplayerSessionReference
{
///
- /// The service configuration ID specific to the title.
+ /// The service configuration ID (SCID) specific to the title.
///
_Null_terminated_ char Scid[XBL_SCID_LENGTH];
@@ -1097,23 +1184,30 @@ typedef struct XblMultiplayerSessionReference
///
/// Represents a URI path representation of a session reference.
-/// Format is /serviceconfigs/{scid}/sessiontemplates/{session-template-name}/sessions/{session-name}.
///
+///
+/// The format of the URI path
+/// is `/serviceconfigs/{scid}/sessiontemplates/{session-template-name}/sessions/{session-name}`, where
+/// `{scid}` is the service configuration ID specific to the title.
+///
+///
typedef struct XblMultiplayerSessionReferenceUri
{
///
- /// The stored URI path.
+ /// The URI path.
///
_Null_terminated_ char value[XBL_MULTIPLAYER_SESSION_REFERENCE_URI_MAX_LENGTH];
} XblMultiplayerSessionReferenceUri;
///
-/// Creates an XblMultiplayerSessionReference from a scid, session template name, and session name.
+/// Creates an object from a service configuration ID (SCID), session
+/// template name, and session name.
///
-/// The Service Configuration ID (SCID) that the session is a part of. The SCID is considered case sensitive so paste it directly from the Partner Center
-/// The session template name.
-/// The session name.
-/// A reference to the multiplayer session that was created.
+/// The SCID that the session is a part of. The SCID is case-sensitive, so paste it directly
+/// from Partner Center.
+/// The name of the session template.
+/// The name of the session.
+/// A reference to the multiplayer session.
STDAPI_(XblMultiplayerSessionReference) XblMultiplayerSessionReferenceCreate(
_In_z_ const char* scid,
_In_z_ const char* sessionTemplateName,
@@ -1121,7 +1215,7 @@ STDAPI_(XblMultiplayerSessionReference) XblMultiplayerSessionReferenceCreate(
) XBL_NOEXCEPT;
///
-/// Returns the session reference parsed from URI.
+/// Returns the session reference parsed from a URI.
///
/// The URI path.
/// Passes back the session reference.
@@ -1132,9 +1226,9 @@ STDAPI XblMultiplayerSessionReferenceParseFromUriPath(
) XBL_NOEXCEPT;
///
-/// Returns a URI path representation of the session reference.
+/// Returns the URI path representation of a session reference.
///
-/// The session reference.
+/// A session reference.
/// Passes back the URI representation of the session reference.
/// HRESULT return code for this API operation.
STDAPI XblMultiplayerSessionReferenceToUriPath(
@@ -1143,49 +1237,52 @@ STDAPI XblMultiplayerSessionReferenceToUriPath(
) XBL_NOEXCEPT;
///
-/// Checks whether an XblMultiplayerSessionReference is well formed.
-/// It is considered well formed if none of the fields are empty strings.
+/// Verifies whether an object is well formed.
///
/// The session reference.
/// Returns true if session is well formed, false if session is not well formed.
+///
+/// An object is considered to be well formed if none
+/// of the fields are empty strings.
+///
STDAPI_(bool) XblMultiplayerSessionReferenceIsValid(
_In_ const XblMultiplayerSessionReference* sessionReference
) XBL_NOEXCEPT;
///
-/// Represents the matchmaking server supporting the multiplayer session.
+/// Represents the matchmaking server that supports a multiplayer session.
///
typedef struct XblMultiplayerMatchmakingServer
{
///
- /// The Matchmaking Status of the Multiplayer Session Server.
+ /// The status of the matchmaking server.
///
XblMatchmakingStatus Status;
///
- /// The Matchmaking Status Details of the Multiplayer Session Server.
+ /// The status details, if any, of the matchmaking server.
///
const char* StatusDetails;
///
- /// The Typical Wait of the Multiplayer Session Server.
+ /// The typical wait time, in seconds.
///
uint32_t TypicalWaitInSeconds;
///
- /// The Target Session Reference of the Multiplayer Session Server.
+ /// A reference to the target session.
///
XblMultiplayerSessionReference TargetSessionRef;
} XblMultiplayerMatchmakingServer;
///
-/// Represents the arbitration server supporting the multiplayer session.
-/// DEPRECATED. It will be removed in a future release
+/// Represents the arbitration server that supports a multiplayer session.
+/// DEPRECATED. This structure will be removed in a future release.
///
typedef struct XBL_DEPRECATED XblMultiplayerArbitrationServer
{
///
- /// The start time for the match. This is also when the arbitration time starts.
+ /// The start time of the match. This time is also when arbitration starts.
///
time_t ArbitrationStartTime;
@@ -1200,7 +1297,7 @@ typedef struct XBL_DEPRECATED XblMultiplayerArbitrationServer
XblTournamentGameResultSource ResultSource;
///
- /// A value from 0-100 that indicates the confidence level of this result.
+ /// A value from 0 through 100 that indicates the confidence level of the result.
///
uint32_t ResultConfidenceLevel;
@@ -1220,24 +1317,24 @@ typedef struct XBL_DEPRECATED XblMultiplayerArbitrationServer
///
/// Represents a team in a tournament.
-/// DEPRECATED. It will be removed in a future release
+/// DEPRECATED. This structure will be removed in a future release.
///
typedef struct XBL_DEPRECATED XblMultiplayerTournamentTeam
{
///
- /// Id of the team.
+ /// ID of the team.
///
const char* TeamId;
///
- /// Session reference for the session the team is in.
+ /// Session reference of the session the team is in.
///
XblMultiplayerSessionReference TeamSessionReference;
} XblMultiplayerTournamentTeam;
///
-/// Represents the tournament server supporting the multiplayer session.
-/// DEPRECATED. It will be removed in a future release
+/// Represents the tournament server that supports a multiplayer session.
+/// DEPRECATED. This structure will be removed in a future release.
///
typedef struct XBL_DEPRECATED XblMultiplayerTournamentsServer
{
@@ -1263,40 +1360,40 @@ typedef struct XBL_DEPRECATED XblMultiplayerTournamentsServer
size_t TeamsCount;
///
- /// The tournament registration state of the team.
+ /// The registration state of the team.
///
XblTournamentRegistrationState RegistrationState;
///
- /// The tournament registration reason for the certain state.
+ /// The reason for the registration state.
///
XblTournamentRegistrationReason RegistrationReason;
///
- /// Next game's start time for the tournament.
+ /// The start time of the next game in the tournament.
///
time_t NextGameStartTime;
///
- /// Next game session reference for the tournament.
+ /// The session reference of the next game in the tournament.
///
XblMultiplayerSessionReference NextGameSessionReference;
///
- /// The last game's end time for the tournament.
+ /// The end time of the last game in the tournament.
///
time_t LastGameEndTime;
XBL_WARNING_PUSH
XBL_WARNING_DISABLE_DEPRECATED
///
- /// The last game's state for the tournament.
+ /// The result of the last game in the tournament.
///
XblTournamentTeamResult LastTeamResult;
XBL_WARNING_POP
///
- /// The source for the last game's state of the tournament.
+ /// The source of the result of the last game in the tournament.
///
XblTournamentGameResultSource LastGameResultSource;
} XblMultiplayerTournamentsServer;
@@ -1304,6 +1401,11 @@ typedef struct XBL_DEPRECATED XblMultiplayerTournamentsServer
///
/// Represents a category of roles for a multiplayer session.
///
+///
+///
+///
+/// For more information, see Multiplayer roles.
+///
typedef struct XblMultiplayerRoleType
{
///
@@ -1317,7 +1419,7 @@ typedef struct XblMultiplayerRoleType
bool OwnerManaged;
///
- /// Which role settings for roles in this role type can be modified throughout the life of the session.
+ /// The settings (for roles in this role type) that can be modified throughout the life of the session.
/// Exclude role settings to lock them.
///
XblMutableRoleSettings MutableRoleSettings;
@@ -1328,7 +1430,7 @@ typedef struct XblMultiplayerRoleType
struct XblMultiplayerRole* Roles;
///
- /// The number of roles in the Roles array.
+ /// The number of roles in the `Roles` array.
///
size_t RoleCount;
} XblMultiplayerRoleType;
@@ -3623,17 +3725,19 @@ STDAPI XblMultiplayerSendInvitesResult(
) XBL_NOEXCEPT;
///
-/// DEPRECATED - Call XblMultiplayerGetActivitiesWithPropertiesForSocialGroupAsync which also populates CustomSessionProperties in the result.
-/// Queries for the current activity for a socialgroup of users associated with a particular "owner" user.
+/// DEPRECATED - Call , which also
+/// populates `CustomSessionProperties` in the result.
+/// Queries for the current activity for a social group of players associated with a particular "owner" player.
///
-/// Xbox live context for the local user.
-/// The Service Configuration ID (SCID) within which to query for activities. The SCID is considered case sensitive so paste it directly from the Partner Center
-/// The person whose social group will be used for the query.
-/// The social group to use in order to get the list of users. (e.g. "people" or "favorites")
-/// The AsyncBlock for this operation.
+/// {% term xbox-live %} context for the local player.
+/// The service configuration identifier (SCID) within which to query for activities.
+/// The SCID is case-sensitive, so paste it directly from Partner Center.
+/// The player whose social group will be used for the query.
+/// The social group (such as "people" or "favorites") to use to get the list of users.
+/// The `XAsyncBlock` for this operation.
/// HRESULT return code for this API operation.
///
-/// There is no paging or continuation, and the multiplayer service will limit the number of items returned to 100.
+/// No paging or continuation is available. The Multiplayer service limits the number of items returned to 100.
///
STDAPI XblMultiplayerGetActivitiesForSocialGroupAsync(
_In_ XblContextHandle xboxLiveContext,
@@ -3644,16 +3748,17 @@ STDAPI XblMultiplayerGetActivitiesForSocialGroupAsync(
) XBL_NOEXCEPT;
///
-/// Queries for the current activity for a socialgroup of users associated with a particular "owner" user.
+/// Queries for the current activity for a social group of players associated with a particular "owner" player.
///
-/// Xbox live context for the local user.
-/// The Service Configuration ID (SCID) within which to query for activities. The SCID is considered case sensitive so paste it directly from the Partner Center
-/// The person whose social group will be used for the query.
-/// The social group to use in order to get the list of users. (e.g. "people" or "favorites")
-/// The AsyncBlock for this operation.
+/// {% term xbox-live %} context for the local player.
+/// The service configuration identifier (SCID) within which to query for activities.
+/// The SCID is case-sensitive, so paste it directly from Partner Center.
+/// The player whose social group will be used for the query.
+/// The social group (such as "people" or "favorites") to use to get the list of users.
+/// The `XAsyncBlock` for this operation.
/// HRESULT return code for this API operation.
///
-/// There is no paging or continuation, and the multiplayer service will limit the number of items returned to 100.
+/// No paging or continuation is available. The Multiplayer service limits the number of items returned to 100.
///
STDAPI XblMultiplayerGetActivitiesWithPropertiesForSocialGroupAsync(
_In_ XblContextHandle xblContext,
@@ -3664,9 +3769,9 @@ STDAPI XblMultiplayerGetActivitiesWithPropertiesForSocialGroupAsync(
) XBL_NOEXCEPT;
///
-/// Gets the number of XblMultiplayerActivityDetails objects returned.
+/// Gets the number of objects returned.
///
-/// The AsyncBlock for this operation.
+/// The `XAsyncBlock` for this operation.
/// The number of activity objects returned.
/// HRESULT return code for this API operation.
STDAPI XblMultiplayerGetActivitiesForSocialGroupResultCount(
@@ -3675,11 +3780,11 @@ STDAPI XblMultiplayerGetActivitiesForSocialGroupResultCount(
) XBL_NOEXCEPT;
///
-/// Gets the result of a XblMultiplayerGetActivitiesForSocialGroupAsync call.
+/// Gets the result of a call to .
///
-/// The AsyncBlock for this operation.
+/// The `XAsyncBlock` for this operation.
/// The number of activity objects returned.
-/// A caller allocated array to pass back the activities object results.
+/// A caller-allocated array for the activity objects returned.
/// HRESULT return code for this API operation.
STDAPI XblMultiplayerGetActivitiesForSocialGroupResult(
_In_ XAsyncBlock* async,
@@ -3688,9 +3793,9 @@ STDAPI XblMultiplayerGetActivitiesForSocialGroupResult(
) XBL_NOEXCEPT;
///
-/// Gets the number of XblMultiplayerActivityDetails objects returned.
+/// Gets the size of objects returned.
///
-/// The AsyncBlock for this operation.
+/// The `XAsyncBlock` for this operation.
/// The size in bytes required to store the multiplayer activity details.
/// HRESULT return code for this API operation.
STDAPI XblMultiplayerGetActivitiesWithPropertiesForSocialGroupResultSize(
@@ -3699,15 +3804,15 @@ STDAPI XblMultiplayerGetActivitiesWithPropertiesForSocialGroupResultSize(
) XBL_NOEXCEPT;
///
-/// Gets the result of a XblMultiplayerGetActivitiesForSocialGroupAsync call.
+/// Gets the result of a call to .
///
-/// The AsyncBlock for this operation.
-/// The size of the provided buffer.
-/// A caller allocated byte buffer to write result into.
-/// Strongly typed pointer that points into buffer.
-/// Do not free this as its lifecycle is tied to buffer.
-/// Number of entries in the ptrToBufferResults array.
-/// Number of bytes written to the buffer.
+/// The `XAsyncBlock` for this operation.
+/// The size of the provided `buffer`.
+/// A caller-allocated byte buffer to write results into.
+/// Strongly typed pointer to `buffer`.
+/// Do not free; its lifecycle is tied to `buffer`.
+/// Number of entries in `buffer`.
+/// Number of bytes actually written to `buffer`.
/// HRESULT return code for this API operation.
STDAPI XblMultiplayerGetActivitiesWithPropertiesForSocialGroupResult(
_In_ XAsyncBlock* async,
@@ -3719,17 +3824,19 @@ STDAPI XblMultiplayerGetActivitiesWithPropertiesForSocialGroupResult(
) XBL_NOEXCEPT;
///
-/// DEPRECATED - Call XblMultiplayerGetActivitiesWithPropertiesForUsersAsync which also populates CustomSessionProperties in the result.
-/// Queries for the current activity for a set of users specified by xuid.
+/// DEPRECATED - Call , which also
+/// populates `CustomSessionProperties` in the result.
+/// Queries for the current activity for a set of players specified by Xbox user ID.
///
-/// Xbox live context for the local user.
-/// The Service Configuration ID (SCID) within which to query for activities. The SCID is considered case sensitive so paste it directly from the Partner Center
-/// The list of user ids to find activities for.
-/// The size of the xuids array.
-/// The AsyncBlock for this operation.
+/// {% term xbox-live %} context for the local user.
+/// The service configuration identifier (SCID) within which to query for activities.
+/// The SCID is case-sensitive, so paste it directly from Partner Center.
+/// The list of Xbox user IDs to find activities for.
+/// The size of the `xuids` array.
+/// The `XAsyncBlock` for this operation.
/// HRESULT return code for this API operation.
///
-/// There is no paging or continuation, and the multiplayer service will limit the number of items returned to 100.
+/// No paging or continuation is available. The Multiplayer service limits the number of items returned to 100.
///
STDAPI XblMultiplayerGetActivitiesForUsersAsync(
_In_ XblContextHandle xblContext,
@@ -3740,16 +3847,17 @@ STDAPI XblMultiplayerGetActivitiesForUsersAsync(
) XBL_NOEXCEPT;
///
-/// Queries for the current activity for a set of users specified by xuid.
+/// Queries for the current activity for a set of players specified by Xbox user ID.
///
-/// Xbox live context for the local user.
-/// The Service Configuration ID (SCID) within which to query for activities. The SCID is considered case sensitive so paste it directly from the Partner Center
-/// The list of user ids to find activities for.
-/// The size of the xuids array.
-/// The AsyncBlock for this operation.
+/// {% term xbox-live %} context for the local user.
+/// The service configuration identifier (SCID) within which to query for activities.
+/// The SCID is case-sensitive, so paste it directly from Partner Center.
+/// The list of Xbox user IDs to find activities for.
+/// The size of the `xuids` array.
+/// The `XAsyncBlock` for this operation.
/// HRESULT return code for this API operation.
///
-/// There is no paging or continuation, and the multiplayer service will limit the number of items returned to 100.
+/// No paging or continuation is available. The Multiplayer service limits the number of items returned to 100.
///
STDAPI XblMultiplayerGetActivitiesWithPropertiesForUsersAsync(
_In_ XblContextHandle xblContext,
@@ -3760,9 +3868,9 @@ STDAPI XblMultiplayerGetActivitiesWithPropertiesForUsersAsync(
) XBL_NOEXCEPT;
///
-/// Gets the number of XblMultiplayerActivityDetails objects returned.
+/// Gets the number of objects returned.
///
-/// The AsyncBlock for this operation.
+/// The `XAsyncBlock` for this operation.
/// The number of activity objects returned.
/// HRESULT return code for this API operation.
STDAPI XblMultiplayerGetActivitiesForUsersResultCount(
@@ -3771,11 +3879,11 @@ STDAPI XblMultiplayerGetActivitiesForUsersResultCount(
) XBL_NOEXCEPT;
///
-/// Gets the result of a XblMultiplayerGetActivitiesForUsersAsync call.
+/// Gets the result of a call to .
///
-/// The AsyncBlock for this operation.
+/// The `XAsyncBlock` for this operation.
/// The number of activity objects returned.
-/// A caller allocated array to pass back the activities object results.
+/// A caller-allocated array for the activity objects returned.
/// HRESULT return code for this API operation.
STDAPI XblMultiplayerGetActivitiesForUsersResult(
_In_ XAsyncBlock* async,
@@ -3784,10 +3892,10 @@ STDAPI XblMultiplayerGetActivitiesForUsersResult(
) XBL_NOEXCEPT;
///
-/// Gets the number of XblMultiplayerActivityDetails objects returned.
+/// Gets the size of objects returned.
///
-/// The AsyncBlock for this operation.
-/// The number of activity objects returned.
+/// The `XAsyncBlock` for this operation.
+/// Returns the size in bytes required to store the result.
/// HRESULT return code for this API operation.
STDAPI XblMultiplayerGetActivitiesWithPropertiesForUsersResultSize(
_In_ XAsyncBlock* async,
@@ -3795,15 +3903,15 @@ STDAPI XblMultiplayerGetActivitiesWithPropertiesForUsersResultSize(
) XBL_NOEXCEPT;
///
-/// Gets the result of a XblMultiplayerGetActivitiesForUsersAsync call.
+/// Gets the result of a call to .
///
-/// The AsyncBlock for this operation.
-/// The size of the provided buffer.
-/// A caller allocated byte buffer to write result into.
-/// Strongly typed pointer that points into buffer.
-/// Do not free this as its lifecycle is tied to buffer.
-/// Number of entries in the ptrToBufferResults array.
-/// Number of bytes written to the buffer.
+/// The `XAsyncBlock` for this operation.
+/// The size of the provided `buffer`.
+/// A caller-allocated byte buffer to write results into.
+/// Strongly typed pointer to `buffer`.
+/// Do not free; its lifecycle is tied to `buffer`.
+/// Number of entries in `buffer`.
+/// Number of bytes actually written to `buffer`.
/// HRESULT return code for this API operation.
STDAPI XblMultiplayerGetActivitiesWithPropertiesForUsersResult(
_In_ XAsyncBlock* async,
diff --git a/Include/xsapi-c/notification_c.h b/Include/xsapi-c/notification_c.h
index 325fdadf..8b0a951a 100644
--- a/Include/xsapi-c/notification_c.h
+++ b/Include/xsapi-c/notification_c.h
@@ -34,7 +34,6 @@ STDAPI XblNotificationSubscribeToNotificationsAsync(
) XBL_NOEXCEPT;
#endif
-#if HC_PLATFORM == HC_PLATFORM_IOS || HC_PLATFORM == HC_PLATFORM_ANDROID || HC_PLATFORM == HC_PLATFORM_UWP
///
/// Unsubscribes the title from push notifications.
///
@@ -45,6 +44,4 @@ STDAPI XblNotificationUnsubscribeFromNotificationsAsync(
_In_ XblContextHandle xboxLiveContext,
_In_ XAsyncBlock* asyncBlock
) XBL_NOEXCEPT;
-#endif
-
}
\ No newline at end of file
diff --git a/Include/xsapi-c/presence_c.h b/Include/xsapi-c/presence_c.h
index 0c835d2b..55cb1587 100644
--- a/Include/xsapi-c/presence_c.h
+++ b/Include/xsapi-c/presence_c.h
@@ -680,7 +680,7 @@ STDAPI_XBL_DEPRECATED XblPresenceSubscribeToTitlePresenceChange(
///
/// Unsubscribes a previously created title presence change subscription.
/// DEPRECATED. This API will be removed in a future release. Individual RTA subscription will be managed automatically by XSAPI as
-/// titles are untracked with .
+/// titles are untracked with .
///
/// Xbox live context for the local user.
/// Handle for the subscription created with .
@@ -812,7 +812,7 @@ STDAPI XblPresenceStopTrackingUsers(
/// Xbox live context for the local user.
/// Array of title IDs to append to the existing list of tracked titles. Note that
/// the current title will be tracked by default.
-/// Length of the titleIds array.
+/// Length of the titleIds array.
/// HRESULT return code for this API operation.
///
/// Updates will be delivered via XblPresenceTitlePresenceChangedHandlers.
@@ -830,7 +830,7 @@ STDAPI XblPresenceTrackAdditionalTitles(
///
/// Xbox live context for the local user.
/// Array of title IDs to remove from the list of tracked titles.
-/// Length of the titleIds array.
+/// Length of the titleIds array.
/// HRESULT return code for this API operation.
STDAPI XblPresenceStopTrackingAdditionalTitles(
_In_ XblContextHandle xblContextHandle,
diff --git a/Include/xsapi-c/social_c.h b/Include/xsapi-c/social_c.h
index a00d8ce0..a42315e3 100644
--- a/Include/xsapi-c/social_c.h
+++ b/Include/xsapi-c/social_c.h
@@ -422,7 +422,7 @@ STDAPI_(void) XblSocialRelationshipResultCloseHandle(
///
/// Subscribes to the social service for people changed events.
/// DEPRECATED. Calling this API is no longer required and it will be removed in a future release. RTA subscription will be managed
-/// automatically by XSAPI as are added and removed.
+/// automatically by XSAPI as `XblSocialRelationshipChangedHandler` are added and removed.
///
/// An xbox live context handle created with XblContextCreateHandle.
/// The Xbox User ID of the player requesting the subscription.
@@ -440,7 +440,7 @@ STDAPI_XBL_DEPRECATED XblSocialSubscribeToSocialRelationshipChange(
///
/// Un-subscribes a previously created social relationship change subscription.
/// DEPRECATED. Calling this API is no longer required and it will be removed in a future release. RTA subscription will be managed
-/// automatically by XSAPI as are added and removed.
+/// automatically by XSAPI as `XblSocialRelationshipChangedHandler` are added and removed.
///
/// An xbox live context handle created with XblContextCreateHandle.
/// The subscription handle to unsubscribe.
@@ -470,13 +470,16 @@ typedef void
);
///
-/// Registers an event handler for social relationship change notifications.
+/// Registers an event handler for notifications of social relationship changes caused by the registering user.
///
/// An xbox live context handle created with XblContextCreateHandle.
/// The callback function that receives notifications.
/// Client context pointer to be passed back to the handler.
/// A XblFunctionContext used to remove the handler.
///
+/// This handler triggers only if the user changes the relationship with another user.
+/// This handler does not trigger if another user changes the relationship with the user.
+///
/// Call to un-register event handler.
///
STDAPI_(XblFunctionContext) XblSocialAddSocialRelationshipChangedHandler(
diff --git a/Include/xsapi-c/xbox_live_global_c.h b/Include/xsapi-c/xbox_live_global_c.h
index 9d13b9f5..e7b36e05 100644
--- a/Include/xsapi-c/xbox_live_global_c.h
+++ b/Include/xsapi-c/xbox_live_global_c.h
@@ -11,6 +11,8 @@
#pragma warning(disable: 4062)
#endif
+#include
+
extern "C"
{
diff --git a/Include/xsapi-cpp/impl/notification.hpp b/Include/xsapi-cpp/impl/notification.hpp
index 5e47f1ee..cb464c04 100644
--- a/Include/xsapi-cpp/impl/notification.hpp
+++ b/Include/xsapi-cpp/impl/notification.hpp
@@ -191,7 +191,7 @@ pplx::task> notification_service::unsubscribe_from_notifi
return asyncWrapper->Task(hr);
}
-#elif (HC_PLATFORM == HC_PLATFORM_WIN32 || HC_PLATFORM_IS_EXTERNAL) && !XSAPI_UNIT_TESTS
+#elif HC_PLATFORM == HC_PLATFORM_WIN32 && !XSAPI_UNIT_TESTS
pplx::task> notification_service::unsubscribe_from_notifications()
{
auto xblContext = m_xblContext;
diff --git a/Include/xsapi-cpp/notification_service.h b/Include/xsapi-cpp/notification_service.h
index 19f377e7..8ab82e22 100644
--- a/Include/xsapi-cpp/notification_service.h
+++ b/Include/xsapi-cpp/notification_service.h
@@ -12,7 +12,7 @@
NAMESPACE_MICROSOFT_XBOX_SERVICES_NOTIFICATION_CPP_BEGIN
class xbox_live_context;
-#if HC_PLATFORM == HC_PLATFORM_WIN32 || HC_PLATFORM_IS_EXTERNAL
+#if HC_PLATFORM == HC_PLATFORM_WIN32
class invite_notification_event_args
{
public:
@@ -79,7 +79,7 @@ public:
inline ~notification_service();
inline pplx::task> subscribe_to_notifications(
-#if (HC_PLATFORM == HC_PLATFORM_WIN32 || HC_PLATFORM_IS_EXTERNAL) && !XSAPI_UNIT_TESTS
+#if HC_PLATFORM == HC_PLATFORM_WIN32 && !XSAPI_UNIT_TESTS
_In_ const std::function& achievementUnlockHandler,
_In_ const std::function& multiplayerInviteHandler
#elif (HC_PLATFORM == HC_PLATFORM_IOS || HC_PLATFORM == HC_PLATFORM_ANDROID)
@@ -89,7 +89,7 @@ public:
inline pplx::task> unsubscribe_from_notifications();
-#if (HC_PLATFORM == HC_PLATFORM_WIN32 || HC_PLATFORM_IS_EXTERNAL) && !XSAPI_UNIT_TESTS
+#if HC_PLATFORM == HC_PLATFORM_WIN32 && !XSAPI_UNIT_TESTS
inline std::function& game_invite_handler();
inline std::function& achievement_unlock_handler();
@@ -98,7 +98,7 @@ public:
private:
XblContextHandle m_xblContext;
-#if (HC_PLATFORM == HC_PLATFORM_WIN32 || HC_PLATFORM_IS_EXTERNAL) && !XSAPI_UNIT_TESTS
+#if HC_PLATFORM == HC_PLATFORM_WIN32 && !XSAPI_UNIT_TESTS
XblFunctionContext m_gameinviteFunctionContext;
XblFunctionContext m_achievementUnlockFunctionContext;
diff --git a/Source/Services/Notification/RTA/notification_subscription.cpp b/Source/Services/Notification/RTA/notification_subscription.cpp
index bbb3165c..62124706 100644
--- a/Source/Services/Notification/RTA/notification_subscription.cpp
+++ b/Source/Services/Notification/RTA/notification_subscription.cpp
@@ -297,8 +297,8 @@ Result MultiplayerActivityInviteData::Deserialize
AchievementUnlockEvent::AchievementUnlockEvent(AchievementUnlockEvent&& event) noexcept :
m_achievementId(std::move(event.m_achievementId)),
- m_achievementDescription(std::move(event.m_achievementDescription)),
m_achievementName(std::move(event.m_achievementName)),
+ m_achievementDescription(std::move(event.m_achievementDescription)),
m_achievementIconUri(std::move(event.m_achievementIconUri)),
m_deepLink(event.m_deepLink)
{
@@ -317,8 +317,8 @@ AchievementUnlockEvent::AchievementUnlockEvent(AchievementUnlockEvent&& event) n
AchievementUnlockEvent::AchievementUnlockEvent(const AchievementUnlockEvent& event) :
m_achievementId(event.m_achievementId),
- m_achievementDescription(event.m_achievementDescription),
m_achievementName(event.m_achievementName),
+ m_achievementDescription(event.m_achievementDescription),
m_achievementIconUri(event.m_achievementIconUri),
m_deepLink(event.m_deepLink)
{
diff --git a/Source/Shared/HookedUri/asyncrt_utils.h b/Source/Shared/HookedUri/asyncrt_utils.h
index a3089318..9a0b7552 100644
--- a/Source/Shared/HookedUri/asyncrt_utils.h
+++ b/Source/Shared/HookedUri/asyncrt_utils.h
@@ -593,7 +593,7 @@ public:
void set_length(int length) { m_length = length; }
private:
- static const utility::string_t c_allowed_chars;
+ static const utility::char_t* c_allowed_chars;
std::mt19937 m_random;
int m_length;
};
diff --git a/Source/Shared/HookedUri/details/asyncrt_utils.hpp b/Source/Shared/HookedUri/details/asyncrt_utils.hpp
index 0121d5d8..2fc728be 100644
--- a/Source/Shared/HookedUri/details/asyncrt_utils.hpp
+++ b/Source/Shared/HookedUri/details/asyncrt_utils.hpp
@@ -1120,11 +1120,11 @@ utility::seconds timespan::xml_duration_to_seconds(const utility::string_t &time
return utility::seconds(numSecs);
}
-const utility::string_t nonce_generator::c_allowed_chars(_XPLATSTR("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"));
+const utility::char_t * nonce_generator::c_allowed_chars = _XPLATSTR("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
utility::string_t nonce_generator::generate()
{
- std::uniform_int_distribution<> distr(0, static_cast(c_allowed_chars.length() - 1));
+ std::uniform_int_distribution<> distr(0, static_cast(ustrlen(c_allowed_chars) - 1));
utility::string_t result;
result.reserve(length());
std::generate_n(std::back_inserter(result), length(), [&]() { return c_allowed_chars[distr(m_random)]; } );
diff --git a/Source/Shared/HookedUri/details/basic_types.h b/Source/Shared/HookedUri/details/basic_types.h
index 4ec5bd2d..19e345a8 100644
--- a/Source/Shared/HookedUri/details/basic_types.h
+++ b/Source/Shared/HookedUri/details/basic_types.h
@@ -57,6 +57,7 @@ typedef std::wstringstream stringstream_t;
#define ucout std::wcout
#define ucin std::wcin
#define ucerr std::wcerr
+#define ustrlen wcslen
#else
//
// On POSIX platforms, all strings are narrow
@@ -74,6 +75,7 @@ typedef std::stringstream stringstream_t;
#define ucout std::cout
#define ucin std::cin
#define ucerr std::cerr
+#define ustrlen strlen
#endif // endif _UTF16_STRINGS
#ifndef _TURN_OFF_PLATFORM_STRING
diff --git a/Source/Shared/Logger/log.h b/Source/Shared/Logger/log.h
index 4f1e81c6..097b0d2b 100644
--- a/Source/Shared/Logger/log.h
+++ b/Source/Shared/Logger/log.h
@@ -2,8 +2,11 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
#pragma once
+#include "internal_mem.h"
-
+#if XSAPI_ANDROID_STUDIO
+#include "trace.h"
+#endif
#define DEFAULT_LOGGER xbox::services::logger::get_logger()
diff --git a/Source/Shared/a/android_utils.cpp b/Source/Shared/a/android_utils.cpp
index 4b80e344..e93010d7 100644
--- a/Source/Shared/a/android_utils.cpp
+++ b/Source/Shared/a/android_utils.cpp
@@ -1,4 +1,6 @@
#include "android_utils.h"
+#include
+#include "Logger/log.h"
NAMESPACE_MICROSOFT_XBOX_SERVICES_CPP_BEGIN
JString::JString(JNIEnv* env, jstring string) noexcept :
diff --git a/Source/Shared/a/android_utils.h b/Source/Shared/a/android_utils.h
index 0368d696..e1ae4b6a 100644
--- a/Source/Shared/a/android_utils.h
+++ b/Source/Shared/a/android_utils.h
@@ -2,6 +2,10 @@
#include
+#if XSAPI_ANDROID_STUDIO
+#include "types.h"
+#endif
+
NAMESPACE_MICROSOFT_XBOX_SERVICES_CPP_BEGIN
///
diff --git a/Source/Shared/a/http_call_jni.cpp b/Source/Shared/a/http_call_jni.cpp
index c0db21f4..74029ef3 100644
--- a/Source/Shared/a/http_call_jni.cpp
+++ b/Source/Shared/a/http_call_jni.cpp
@@ -4,7 +4,7 @@
#include
#include "jni_utils.h"
#include "http_call_legacy.h"
-#include "a\java_interop.h"
+#include "a/java_interop.h"
#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, "HttpCall", __VA_ARGS__))
#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, "HttpCall", __VA_ARGS__))
diff --git a/Source/Shared/a/rwlock_guard.h b/Source/Shared/a/rwlock_guard.h
index 1fa89344..c0906f3d 100644
--- a/Source/Shared/a/rwlock_guard.h
+++ b/Source/Shared/a/rwlock_guard.h
@@ -2,6 +2,10 @@
#include
+#if XSAPI_ANDROID_STUDIO
+#include "types.h"
+#endif
+
NAMESPACE_MICROSOFT_XBOX_SERVICES_CPP_BEGIN
///
diff --git a/Source/Shared/build_version.h b/Source/Shared/build_version.h
index c424f3b8..b520778c 100644
--- a/Source/Shared/build_version.h
+++ b/Source/Shared/build_version.h
@@ -9,4 +9,4 @@
//*********************************************************
#pragma once
-#define XBOX_SERVICES_API_VERSION_STRING "2021.04.20210526.2"
+#define XBOX_SERVICES_API_VERSION_STRING "2021.06.20210527.0"
diff --git a/Source/Shared/internal_mem.h b/Source/Shared/internal_mem.h
index 80147e8d..307876fb 100644
--- a/Source/Shared/internal_mem.h
+++ b/Source/Shared/internal_mem.h
@@ -1,9 +1,15 @@
// Copyright (c) Microsoft Corporation
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+#pragma once
#include "xsapi-c/xbox_live_global_c.h"
-
-#pragma once
+#include
+#include