> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XblAchievementsManagerAddLocalUser

> XblAchievementsManagerAddLocalUser

# XblAchievementsManagerAddLocalUser

Initialize the Achievements Manager and generate a local cache of achievements for a user.

## Syntax

```cpp theme={null}
HRESULT XblAchievementsManagerAddLocalUser(  
         XblUserHandle user,  
         XTaskQueueHandle queue  
)  
```

### Parameters

*user*   \_In\_\
Type: XblUserHandle

XBOX Live User to fetch achievements for.

*queue*   \_In\_opt\_\
Type: XTaskQueueHandle

Queue to be used for background operation for this user (Optional).

### Return value

Type: HRESULT

HRESULT return code for this API operation.

## Remarks

Because `XblAchievementsManagerAddLocalUser` requires an internet connection to correctly track user info, it should only be called while connected to the internet. Using [XNetworkingRegisterConnectivityHintChanged](/reference/networking/xnetworking/functions/xnetworkingregisterconnectivityhintchanged) is a good way to check for a connection.

If the Achievements Manager is not initialized, calls to [XblAchievementsManagerUpdateAchievement](/reference/live/xsapi-c/achievements_manager_c/functions/xblachievementsmanagerupdateachievement) will fail. In this case, calls to [XblAchievementsUpdateAchievementAsync](/reference/live/xsapi-c/achievements_c/functions/xblachievementsupdateachievementasync) should be made instead as achievement conditions are met to ensure that progression is still tracked. Here is an example of how this can be implemented:

```cpp theme={null}
HRESULT hr = XblAchievementsManagerUpdateAchievement(xuid, "2", 3);
if (FAILED(hr))
{
    XAsyncBlock async{};
    hr = XblAchievementsUpdateAchievementAsync(m_xblContext, xuid, "2", 3, &async);
    if (SUCCEEDED(hr))
    {
        // this simple example is thread blocking. 
        // replace with whatever async pattern used by other XAsync calls in title
        XAsyncGetStatus(&async, true); 
    }
}
```

## Requirements

**Header:** achievements\_manager\_c.h

**Library:** Microsoft.Xbox.Services.14x.GDK.C.lib

## See also

[achievements\_manager\_c](/reference/live/xsapi-c/achievements_manager_c/achievements_manager_c_members)


## Related topics

- [Overview of the XBOX Achievements Manager API](/services/xbox-services/player-data/achievements/achievements-manager/live-achievements-manager-overview.md)
- [XblAchievementsManagerUpdateAchievement](/reference/live/xsapi-c/achievements_manager_c/functions/xblachievementsmanagerupdateachievement.md)
- [XblAchievementsManagerRemoveLocalUser](/reference/live/xsapi-c/achievements_manager_c/functions/xblachievementsmanagerremovelocaluser.md)
- [XblSocialManagerAddLocalUser](/reference/live/xsapi-c/social_manager_c/functions/xblsocialmanageraddlocaluser.md)
- [XblMultiplayerManagerLobbySessionAddLocalUser](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerlobbysessionaddlocaluser.md)
