> ## 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.

# 处理设备 Presence 更改

> 订阅 XBOX Live 设备 Presence 更改事件以及在用户登录或注销设备时添加或删除处理程序的示例代码。

本主题提供处理设备 Presence 更改的示例代码。

本主题涵盖以下内容：

* [订阅设备 Presence 更改​](#stadpc)
* [取消订阅设备 Presence 更改​](#ufadpc)
* [添加设备 Presence 更改处理程序​](#aadpch)
* [删除设备 Presence 更改处理程序](#radpch)

<a id="stadpc" />

## 订阅设备 Presence 更改​

#### Flat C API

```cpp theme={null}
uint64_t xuid{ 123 };

HRESULT hr = XblPresenceSubscribeToDevicePresenceChange(
    xboxLiveContext,
    xuid,
    &state.devicePresenceChangeSubscription
);
```

<a id="ufadpc" />

## 取消订阅设备 Presence 更改​

#### Flat C API

```cpp theme={null}
HRESULT hr = XblPresenceUnsubscribeFromDevicePresenceChange(
    xboxLiveContext,
    state.devicePresenceChangeSubscription
);

state.devicePresenceChangeSubscription = nullptr;
```

<a id="aadpch" />

## 添加设备 Presence 更改处理程序​

#### Flat C API

```cpp theme={null}
state.devicePresenceChangedHandlerToken = XblPresenceAddDevicePresenceChangedHandler(
    xboxLiveContext,
    [](void* context, uint64_t xuid, XblPresenceDeviceType deviceType, bool isUserLoggedOnDevice)
    {
        UNREFERENCED_PARAMETER(context);
        LogToFile("Device presence change notification received:");
        LogToFile("Xuid = %u, deviceType = %u, isUserLoggedOnDevice = %u", xuid, deviceType, isUserLoggedOnDevice);
    },
    nullptr
);
```

有关详细信息，请参阅
[XblPresenceDeviceType](/reference/live/xsapi-c/presence_c/enums/xblpresencedevicetype)。

<a id="radpch" />

## 删除设备 Presence 更改处理程序

#### Flat C API

```cpp theme={null}
HRESULT hr = XblPresenceRemoveDevicePresenceChangedHandler(
    xboxLiveContext,
    state.devicePresenceChangedHandlerToken
);

state.devicePresenceChangedHandlerToken = 0;
```


## Related topics

- [Rich Presence 示例代码](/zh-CN/services/xbox-services/community/presence/how-to/live-presence-howto-nav.md)
- [处理游戏 Presence 更改](/zh-CN/services/xbox-services/community/presence/how-to/live-handling-a-title-presence-change.md)
- [操作指南](/zh-CN/services/xbox-services/community/presence/how-to/index.md)
- [XblPresenceDevicePresenceChangedHandler](/zh-CN/reference/live/xsapi-c/presence_c/functions/xblpresencedevicepresencechangedhandler.md)
- [XblPresenceRemoveDevicePresenceChangedHandler](/zh-CN/reference/live/xsapi-c/presence_c/functions/xblpresenceremovedevicepresencechangedhandler.md)
