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

# RegisterSystemButtonCallback (非推奨)

> Guide ボタンと Share ボタンのコールバックを登録します (v4 で削除)。

> [!WARNING]
>
> **非推奨。** このメソッドは GameInput v4 で削除され、現在の API では利用できません。代わりに、[IGameInputReading::GetSystemButtonState](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getsystembuttonstate.md) と `GameInputKindSystemButton` を使用して、入力の読み取りからシステム ボタンの状態を読み取ってください。

Guide ボタンまたは Share ボタンが押されたとき、または離されたときに呼び出されるコールバック関数を登録します。

## 構文

```cpp theme={null}
HRESULT RegisterSystemButtonCallback(
    IGameInputDevice* device,
    GameInputSystemButtons buttonFilter,
    void* context,
    GameInputSystemButtonCallback callbackFunc,
    GameInputCallbackToken* callbackToken
);
```

### パラメーター

*device*   \_In\_opt\_\
型: IGameInputDevice\*

必要に応じて、登録されたコールバックを特定のデバイスに対してのみトリガーされるように制限します。

*buttonFilter*   \_In\_\
型: GameInputSystemButtons

コールバックを受け取るボタンのセット。論理 OR で組み合わせます。

*context*   \_In\_opt\_\
型: void\*

コールバック関数に関連する情報を提供するオブジェクト。通常は呼び出し元のオブジェクト。

*callbackFunc*   \_In\_\
型: GameInputSystemButtonCallback

システム ボタンが押されたとき、または離されたときに呼び出される、タイトル定義のコールバック関数。

*callbackToken*   \_Out\_opt\_\
型: GameInputCallbackToken\*

登録されたコールバック関数を識別するトークン。このトークンは、コールバック関数をキャンセルまたは登録解除する必要があるときに、登録された関数を識別するために使用されます。

### 戻り値

型: HRESULT

関数の結果。

## 解説

このメソッドは、Guide ボタンまたは System ボタンが押されたとき、または離されたときに呼び出されるコールバック関数を登録します。コールバックがディスパッチされるかどうかは、自分のプロセスおよび他のプロセスで [IGameInput::SetFocusPolicy](https://docs.xbox.com/ja-jp/reference/input/gameinput/deprecated/interfaces/igameinput/methods/igameinput_setfocuspolicy.md) によって設定された [GameInputFocusPolicy](https://docs.xbox.com/ja-jp/reference/input/gameinput/deprecated/enums/gameinputfocuspolicy.md) によって決まります。詳細については、[GameInputFocusPolicy](https://docs.xbox.com/ja-jp/reference/input/gameinput/deprecated/enums/gameinputfocuspolicy.md) を参照してください。XBOX では、シェルが常に Guide ボタンを消費するため、これらのコールバックが XBOX でディスパッチされることはありません。

PC では、GameInput ランタイムがシステムにインストールされておらず、アプリケーションと共にサイドロードされている場合、このメソッドは `GAMEINPUT_E_FEATURE_REQUIRES_INSTALL` (0x838AD02B) で失敗します。詳細については、「[GameInput のサイドロード](https://docs.xbox.com/ja-jp/build/core-features/common/input/overviews/input-agility-redistributable.md)」を参照してください。

コールバックの受信を停止する方法については、[IGameInput::UnregisterCallback](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinput/methods/igameinput_unregistercallback.md) メソッドと [IGameInput::StopCallback](https://docs.xbox.com/ja-jp/reference/input/gameinput/deprecated/interfaces/igameinput/methods/igameinput_stopcallback.md) メソッドを参照してください。

これは Windows SDK 10.0.26031 Preview の GameInput.h で追加されたもので、今後の GDK リリースで追加される予定です。

次のコード例は、Guide ボタンの押下をリッスンする方法を示しています。

```cpp theme={null}
Microsoft::WRL::ComPtr<IGameInput> gameInput;

void CALLBACK OnGuideButton(
    _In_ GameInputCallbackToken callbackToken,
    _In_ void * context,
    _In_ IGameInputDevice * device,
    _In_ uint64_t timestamp,
    _In_ GameInputSystemButtons currentButtons,
    _In_ GameInputSystemButtons previousButtons)
{
    bool guidePressed = currentButtons & GameInputSystemButtons::GameInputSystemButtonGuide;
    bool guidePreviouslyPressed = previousButtons & GameInputSystemButtons::GameInputSystemButtonGuide;
    if (guidePressed && !guidePreviouslyPressed)
    {
        // Handle new Guide button press
    }
    else if (!guidePressed && guidePreviouslyPressed)
    {
        // Handle new Guide button release
    }
}

void RegisterForGuideButton() noexcept
{
    GameInputCallbackToken token;
    if (SUCCEEDED(gameInput->RegisterSystemButtonCallback(
        nullptr, // All devices
        GameInputSystemButtons::GameInputSystemButtonGuide, // Filter to the Guide button
        nullptr, // No context
        OnGuideButton, // Callback
        &token))) // token
    {
        // Success!
    }
}
```

## 要件

**ヘッダー:** GameInput.h

**ライブラリ:** gameinput.lib

**サポートされているプラットフォーム:** Windows、XBOX One ファミリー本体、XBOX Series 本体

## 関連項目

[非推奨の GameInput API メンバー](https://docs.xbox.com/ja-jp/reference/input/gameinput/deprecated/gameinput_deprecated_members.md)\
[IGameInputReading::GetSystemButtonState](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getsystembuttonstate.md)\
[GameInput の高度なトピック](https://docs.xbox.com/ja-jp/build/core-features/common/input/advanced/input-advanced-topics.md)\

[GameInput の概要](https://docs.xbox.com/ja-jp/build/core-features/common/input/overviews/input-overview.md)\

[IGameInput](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinput/igameinput.md)

## バージョン履歴

| バージョン | 変更内容 |
| - | - |
| **v4** | 削除されました。 |
| **v1** | 導入されました。`RegisterGuideButtonCallback` を置き換えます。 |


## Related topics

- [IGameInput::RegisterGuideButtonCallback (非推奨)](https://docs.xbox.com/ja-jp/reference/input/gameinput/deprecated/interfaces/igameinput/methods/igameinput_registerguidebuttoncallback.md)
- [GameInputGuidButtonCallback (非推奨)](https://docs.xbox.com/ja-jp/reference/input/gameinput/deprecated/functions/gameinputguidebuttoncallback.md)
- [IGameInput::RegisterKeyboardLayoutCallback (非推奨)](https://docs.xbox.com/ja-jp/reference/input/gameinput/deprecated/interfaces/igameinput/methods/igameinput_registerkeyboardlayoutcallback.md)
- [IGameInput::StopCallback (非推奨)](https://docs.xbox.com/ja-jp/reference/input/gameinput/deprecated/interfaces/igameinput/methods/igameinput_stopcallback.md)
- [非推奨の GameInput API メンバー](https://docs.xbox.com/ja-jp/reference/input/gameinput/deprecated/gameinput_deprecated_members.md)
