> ## 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::GetCurrentReading

> IGameInput::GetCurrentReading

# IGameInput::GetCurrentReading

호출자가 제공한 필터와 일치하는, 입력 스트림에서 가장 최근의 판독 값을 검색합니다.

## 구문

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

### 매개변수

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

컨트롤러, 키보드, 마우스 또는 게임패드와 같이 사용 중인 입력 장치의 유형을 지정하는 열거형 값 중 하나입니다. 열거형 값을 결합하여 여러 유형의 입력을 지정할 수 있습니다. 여러 입력 종류가 지정된 경우, 지정된 입력 종류 중 적어도 하나를 포함하는 판독 값이 일치하여 반환됩니다.

*device*   \_In\_opt\_\
형식: IGameInputDevice\*

특정 장치에서 판독 값을 반환하는 선택적 필터입니다.

*reading*   \_COM\_Outptr\_\
형식: IGameInputReading\*\*

반환될 입력 판독 값입니다. 실패 시 `NULL`을 반환합니다.

### 반환값

형식: HRESULT

함수 결과.

## 설명

이 함수는 처음 입력 스트림에 접근하는 데 사용됩니다. 이 함수를 `GetNextReading` 및 `GetPreviousReading` 메서드와 함께 사용하여 입력을 놓치지 않고 입력 스트림을 순회할 수 있습니다. 또는, 게임이 일부 입력 누락을 허용할 수 있는 경우 `GetCurrentReading`을 계속 호출하여 가장 최근의 판독 값을 계속 가져올 수 있습니다.

다음 코드 예제는 현재 게임패드 상태를 폴링하는 방법을 보여줍니다.

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

void PollGamepadInput() noexcept
{
    Microsoft::WRL::ComPtr<IGameInputReading> reading;

    if (SUCCEEDED(gameInput->GetCurrentReading(
        GameInputKindGamepad,
        nullptr,
        &reading)))
    {
        // Application-specific code to process the reading.
    }
}
```

다음 코드 예제는 특정 장치로부터 현재 게임패드 상태를 폴링하는 방법을 보여줍니다.

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

void PollGamepadInput() noexcept
{
    Microsoft::WRL::ComPtr<IGameInputReading> reading;

    if (SUCCEEDED(gameInput->GetCurrentReading(
        GameInputKindGamepad,
        gamepad.Get(),
        &reading)))
    {
        // Lock onto the first device we find input from, since this
        // must be the one the player is using (if it's generating input).
        if (!gamepad)
        {
            reading->GetDevice(&gamepad);
        }

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

    else
    {
        // Go back to looking for a device to lock onto, if the previous one is gone.
        gamepad = nullptr;
    }
}
```

다음 코드 예제는 특정 장치로부터 모든 게임패드 상태를 폴링하는 방법을 보여줍니다.

```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)))
        {
            gamepad.Attach(prevReading->GetDevice());

            // 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;
        }
    }
}
```

## 요구 사항

[Input API 개요](/build/core-features/common/input/overviews/input-overview)\
[IGameInput\_GetNextReading](/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getnextreading)\
[IGameInput\_GetPreviousReading](/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getpreviousreading)\
[IGameInput](/reference/input/gameinput/interfaces/igameinput/igameinput)

## 버전 기록

| 버전     | 변경 사항 |
| ------ | ----- |
| **v0** | 도입됨.  |


## Related topics

- [IGameInput::GetTemporalReading](/ko/reference/input/gameinput/deprecated/interfaces/igameinput/methods/igameinput_gettemporalreading.md)
- [IGameInput::GetPreviousReading](/ko/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getpreviousreading.md)
- [IGameInput::GetNextReading](/ko/reference/input/gameinput/interfaces/igameinput/methods/igameinput_getnextreading.md)
- [IGameInput::FindDeviceFromId](/ko/reference/input/gameinput/interfaces/igameinput/methods/igameinput_finddevicefromid.md)
- [GameInputKind](/ko/reference/input/gameinput/enums/gameinputkind.md)
