> ## 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](/zh-TW/reference/input/gameinput/interfaces/igameinputreading/igameinputreading) 介面。

## 語法

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

### 參數

*referenceReading*   \_In\_\
類型：IGameInputReading\*

目前的 [IGameInputReading](/zh-TW/reference/input/gameinput/interfaces/igameinputreading/igameinputreading)。傳回的 `IGameInputReading` 介面是此參考讀數之後的下一個讀數。

*inputKind*   \_In\_\
類型：[GameInputKind](/zh-TW/reference/input/gameinput/enums/gameinputkind)

要從中提取下一個讀數的輸入類型篩選條件。`GameInputKind` 介面是旗標變數。您可以合併多個值，以根據多個 `GameInputKind` 常數進行篩選。指定多種輸入種類時，任何包含至少一種輸入種類的讀數都會被比對並傳回。

*device*   \_In\_opt\_\
類型：IGameInputDevice\*

要從中提取下一個讀數的特定裝置篩選條件。

*reading*   \_COM\_Outptr\_\
類型：IGameInputReading\*\*

傳回的 `IGameInputReading` 介面，依序位於 `referenceReading` 輸入之後。

### 傳回值

類型：HRESULT

函式結果。

## 備註

`GetNextReading` 和 `GetPreviousReading` 方法可讓應用程式逐一讀數地瀏覽輸入歷程記錄。

如果 `referenceReading` 之後沒有讀數、為已中斷連線的裝置提供裝置篩選條件，或經過太多時間導致參考讀數和傳回的讀數已離開輸入串流歷程記錄緩衝區，則會傳回 `NULL` 值和失敗 `HRESULT`。對於持續處理輸入的應用程式而言，經過時間錯誤很少見，因為輸入串流會在其歷程記錄緩衝區中保留每個裝置半秒的讀數。

下列程式碼範例示範如何從特定裝置輪詢所有遊戲台狀態。

```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 概觀](/zh-TW/build/core-features/common/input/overviews/input-overview)\
[IGameInput\_GetCurrentReading](/zh-TW/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getcurrentreading)\
[IGameInput\_GetPreviousReading](/zh-TW/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getpreviousreading)\
[IGameInput](/zh-TW/reference/input/gameinput/interfaces/igameinput/igameinput)

## 版本歷程記錄

| 版本 | 變更 |
| - | - |
| **v0** | 已推出。 |


## Related topics

- [IGameInput::GetNextReading](/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getnextreading.md)
- [IGameInput::GetCurrentReading](/ko/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getcurrentreading.md)
- [IGameInput::GetPreviousReading](/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getpreviousreading.md)
