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

# IGameInput::GetNextReading

> IGameInput::GetNextReading

# IGameInput::GetNextReading

オプションでフィルターされた入力ストリームからの参照読み取り値に基づいて、次に利用可能な [IGameInputReading](/reference/input/gameinput/interfaces/igameinputreading/igameinputreading) インターフェイスを取得します。

## 構文

```cpp theme={null}
HRESULT GetNextReading(
    IGameInputReading* referenceReading,
    GameInputKind inputKind,
    IGameInputDevice* device,
    IGameInputReading** reading
);
```

### パラメーター

*referenceReading*   \_In\_\
型: IGameInputReading\*

現在の [IGameInputReading](/reference/input/gameinput/interfaces/igameinputreading/igameinputreading)。返される `IGameInputReading` インターフェイスは、この参照読み取り値の次の読み取り値です。

*inputKind*   \_In\_\
型: [GameInputKind](/reference/input/gameinput/enums/gameinputkind)

次の読み取り値を取得する入力の種類のフィルター。`GameInputKind` インターフェイスはフラグ変数です。複数の値を組み合わせて複数の `GameInputKind` 定数でフィルターできます。複数の入力種別が指定されている場合、それらの入力種別の少なくとも 1 つを含む読み取り値が一致し、返されます。

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

次の読み取り値を取得する特定のデバイスのフィルター。

*reading*   \_COM\_Outptr\_\
型: IGameInputReading\*\*

`referenceReading` 入力の後に順番に続く、返される `IGameInputReading` インターフェイス。

### 戻り値

型: HRESULT

関数の結果。

## 解説

`GetNextReading` および `GetPreviousReading` メソッドは、アプリが入力履歴を読み取り単位で移動できるようにします。

`referenceReading` の後に読み取り値がない場合、切断されたデバイスに対してデバイス フィルターが提供された場合、または時間が経ちすぎて参照読み取り値と返される読み取り値が入力ストリームの履歴バッファーから外れた場合、`NULL` 値と失敗の `HRESULT` を返します。入力ストリームは履歴バッファーに各デバイスから 0.5 秒間の読み取り値を保持するため、入力を継続的に処理するアプリでは経過時間エラーはまれです。

次のコード例は、特定のデバイスからすべてのゲームパッドの状態をポーリングする方法を示します。

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

void PollGamepadInput() noexcept
{
    if (!prevReading)
    {
        if (SUCCEEDED(gameInput->GetCurrentReading(
            GameInputKindGamepad,
            nullptr,
            &prevReading)))
        {
            prevReading->GetDevice(&gamepad);

            // Application-specific code to process the initial reading.
        }
    }

    else
    {
        Microsoft::WRL::ComPtr<IGameInputReading> nextReading;
        HRESULT hr = gameInput->GetNextReading(
            prevReading.Get(),
            GameInputKindGamepad,
            gamepad.Get(),
            &nextReading);

        if (SUCCEEDED(hr))
        {
            // Application-specific code to process the next reading.

            prevReading = nextReading;
        }

        else if (hr != GAMEINPUT_E_READING_NOT_FOUND)
        {
            gamepad = nullptr;
            prevReading = nullptr;
        }
    }
}
```

## 要件

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

[GameInput の概要](/build/core-features/common/input/overviews/input-overview)\
[IGameInput\_GetCurrentReading](/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getcurrentreading)\
[IGameInput\_GetPreviousReading](/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getpreviousreading)\
[IGameInput](/reference/input/gameinput/interfaces/igameinput/igameinput)

## バージョン履歴

| バージョン  | 変更内容     |
| ------ | -------- |
| **v0** | 導入されました。 |


## Related topics

- [IGameInput::GetCurrentReading](/ja-jp/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getcurrentreading.md)
- [IGameInput::GetPreviousReading](/ja-jp/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getpreviousreading.md)
- [IGameInput::GetTemporalReading](/ja-jp/reference/input/gameinput/deprecated/interfaces/igameinput/methods/igameinput_gettemporalreading.md)
- [IGameInputReading::GetInputKind](/ja-jp/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getinputkind.md)
- [IGameInputReading::GetDevice](/ja-jp/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getdevice.md)
