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

# GameInputDeviceInfo (사용되지 않음)

> 입력 장치에 대한 모든 정보를 설명합니다(v4에서 제거됨).

> [!WARNING]
>
> **사용되지 않음.** 이 구조체는 GameInput v4에서 제거되었으며 현재 API에서는 사용할 수 없습니다. 대신 [IGameInputDevice](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/igameinputdevice.md)의 개별 getter 메서드를 사용하세요. 설명 섹션의 매핑 표를 참조하세요.

입력 장치에 대한 모든 정보를 설명합니다.

## 구문

```cpp theme={null}
struct GameInputDeviceInfo
{
    uint16_t               vendorId;
    uint16_t               productId;
    uint16_t               revisionNumber;
    GameInputUsage         usage;
    GameInputVersion       hardwareVersion;
    GameInputVersion       firmwareVersion;
    APP_LOCAL_DEVICE_ID    deviceId;
    APP_LOCAL_DEVICE_ID    deviceRootId;
    GameInputDeviceFamily  deviceFamily;
    GameInputKind          supportedInput;
    GameInputRumbleMotors  supportedRumbleMotors;
    GameInputSystemButtons supportedSystemButtons;
    GUID                   containerId;
    const char*            displayName;
    const char*            pnpPath;

    const GameInputKeyboardInfo* keyboardInfo;
    const GameInputMouseInfo*    mouseInfo;
    const GameInputSensorsInfo*  sensorsInfo;

    const GameInputControllerInfo*  controllerInfo;
    const GameInputArcadeStickInfo* arcadeStickInfo;
    const GameInputFlightStickInfo* flightStickInfo;
    const GameInputGamepadInfo*     gamepadInfo;
    const GameInputRacingWheelInfo* racingWheelInfo;

    uint32_t                               forceFeedbackMotorCount;
    const GameInputForceFeedbackMotorInfo* forceFeedbackMotorInfo;

    uint32_t                            inputReportCount;
    const GameInputRawDeviceReportInfo* inputReportInfo;

    uint32_t                            outputReportCount;
    const GameInputRawDeviceReportInfo* outputReportInfo;
};
```

### 멤버

*vendorId*\

형식: uint16\_t

입력 장치의 공급업체를 식별합니다.

*productId*\

형식: uint16\_t

입력 장치를 제품으로 식별합니다.

*revisionNumber*\

형식: uint16\_t

장치의 하드웨어 개정 번호(있는 경우).

*usage*\

형식: [GameInputUsage](https://docs.xbox.com/ko/reference/input/gameinput/structs/gameinputusage.md)

사용된 입력을 설명하는 두 부분으로 구성된 인덱스입니다.

*hardwareVersion*\

형식: [GameInputVersion](https://docs.xbox.com/ko/reference/input/gameinput/structs/gameinputversion.md)

장치의 하드웨어 버전(있는 경우).

*firmwareVersion*\

형식: [GameInputVersion](https://docs.xbox.com/ko/reference/input/gameinput/structs/gameinputversion.md)

장치의 펌웨어 버전(있는 경우).

*deviceId*\

형식: APP\_LOCAL\_DEVICE\_ID

입력 장치의 장치 ID입니다.

*deviceRootId*\

형식: APP\_LOCAL\_DEVICE\_ID

입력 장치의 루트 ID입니다.

*deviceFamily*\

형식: [GameInputDeviceFamily](https://docs.xbox.com/ko/reference/input/gameinput/enums/gameinputdevicefamily.md)

입력 장치가 속하는 입력 장치 계열을 지정합니다.

*supportedInput*\

형식: [GameInputKind](https://docs.xbox.com/ko/reference/input/gameinput/enums/gameinputkind.md)

장치가 지원하는 입력의 유형을 설명합니다.

*supportedRumbleMotors*\

형식: [GameInputRumbleMotors](https://docs.xbox.com/ko/reference/input/gameinput/enums/gameinputrumblemotors.md)

장치에서 사용 가능한 럼블 모터(있는 경우)를 설명합니다.

*supportedSystemButtons*\

형식: [GameInputSystemButtons](https://docs.xbox.com/ko/reference/input/gameinput/enums/gameinputsystembuttons.md)

시스템을 제어하는 데 사용할 수 있는 버튼(주로 게임 외부에서 사용)을 설명합니다.

*containerId*\

형식: GUID

입력 장치의 컨테이너 ID입니다.

*displayName*\

형식: const char\*

장치의 친숙한 이름을 설명합니다.

*pnpPath*\

형식: const char\*

장치의 플러그 앤 플레이 기능을 설명합니다. 다른 API를 통해 기본 장치를 참조하려면 이 경로를 사용하세요.

*keyboardInfo*\

형식: [GameInputKeyboardInfo](https://docs.xbox.com/ko/reference/input/gameinput/structs/gameinputkeyboardinfo.md) const \*

키보드 입력 장치에 대한 정보입니다.

*mouseInfo*\

형식: [GameInputMouseInfo](https://docs.xbox.com/ko/reference/input/gameinput/structs/gameinputmouseinfo.md) const \*

마우스 입력 장치에 대한 정보입니다.

*sensorsInfo*\

형식: [GameInputSensorsInfo](https://docs.xbox.com/ko/reference/input/gameinput/structs/gameinputsensorsinfo.md) const \*

장치의 센서에 대한 정보입니다.

*controllerInfo*\

형식: [GameInputControllerInfo](https://docs.xbox.com/ko/reference/input/gameinput/deprecated/structs/gameinputcontrollerinfo.md) const \*

일반 컨트롤러 입력 장치에 대한 정보입니다. 컨트롤러는 장치의 원시 매핑되지 않은 축, 버튼 및 스위치를 나타냅니다.

*arcadeStickInfo*\

형식: [GameInputArcadeStickInfo](https://docs.xbox.com/ko/reference/input/gameinput/structs/gameinputarcadestickinfo.md) const \*

아케이드 스틱 입력 장치에 대한 정보입니다.

*flightStickInfo*\

형식: [GameInputFlightStickInfo](https://docs.xbox.com/ko/reference/input/gameinput/structs/gameinputflightstickinfo.md) const \*

플라이트 스틱 입력 장치에 대한 정보입니다.

*gamepadInfo*\

형식: [GameInputGamepadInfo](https://docs.xbox.com/ko/reference/input/gameinput/structs/gameinputgamepadinfo.md) const \*

게임패드 입력 장치에 대한 정보입니다.

*racingWheelInfo*\

형식: [GameInputRacingWheelInfo](https://docs.xbox.com/ko/reference/input/gameinput/structs/gameinputracingwheelinfo.md) const \*

레이싱 휠 입력 장치에 대한 정보입니다.

*forceFeedbackMotorCount*\

형식: uint32\_t

입력 장치의 포스 피드백 모터 수입니다.

*forceFeedbackMotorInfo*\

형식: [GameInputForceFeedbackMotorInfo](https://docs.xbox.com/ko/reference/input/gameinput/structs/gameinputforcefeedbackmotorinfo.md) const \*

장치의 모든 포스 피드백 모터에 대한 정보입니다.

*inputReportCount*\

형식: uint32\_t

장치의 입력 보고서 수입니다.

*inputReportInfo*\

형식: [GameInputRawDeviceReportInfo](https://docs.xbox.com/ko/reference/input/gameinput/structs/gameinputrawdevicereportinfo.md) const \*

입력 보고서 정보 개체입니다.

*outputReportCount*\

형식: uint32\_t

장치의 출력 보고서 수입니다.

*outputReportInfo*\

형식: [GameInputRawDeviceReportInfo](https://docs.xbox.com/ko/reference/input/gameinput/structs/gameinputrawdevicereportinfo.md) const \*

출력 보고서입니다.

## 설명

이 구조체의 모든 문자열 멤버는 UTF-8 인코딩을 사용합니다.

`deviceId`는 애플리케이션 로컬 ID로, 장치를 고유하게 식별하는 256비트 해시 값입니다. 이 ID는 장치가 동일한 USB 포트에 연결되어 있는 한, 애플리케이션 실행이나 시스템 재부팅 간에도 특정 장치에 대해 항상 동일하게 유지됩니다. 애플리케이션 로컬 ID 해시는 호출 애플리케이션과 시스템에 특정한 정보를 부분적으로 사용하여 애플리케이션이 생성합니다.

`deviceRootId`는 또 다른 애플리케이션 로컬 ID로, 복합 장치의 루트 장치 노드를 식별합니다. 이를 통해 애플리케이션이 개별 장치 간의 관계를 파악할 수 있습니다. 예를 들어, 일부 게이밍 키보드는 여러 키보드 노드를 가진 복합 장치로 자신을 노출하여 동시 8개 키 입력이라는 레거시 USB 제한을 우회합니다. 이러한 노드는 "시스템" 키보드로 병합되므로 일반적으로 사용자에게는 투명합니다. 그러나 GameInput API를 통해 키보드별 입력을 처리할 때 이 점을 이해하면 애플리케이션이 기능을 키 입력에 매핑할 때 부적절한 가정(예: 키 입력이 항상 특정 장치에서 온다는 가정)을 피할 수 있습니다. 장치가 복합 장치의 여러 인터페이스 중 하나가 아닌 경우 `deviceId`와 `deviceRootId`는 동일합니다.

`displayName` 문자열에는 장치의 "친숙한" 이름이 포함됩니다. 이 문자열은 애플리케이션의 UI에 표시할 수 있지만 현지화된다는 보장은 없습니다. 이렇게 현지화되지 않는 이유는 GameInput API가 이 문자열을 여러 위치에서 검색하며, 최종 폴백 중 하나가 장치의 펌웨어에서 오기 때문입니다.

`GameInputDeviceInfo` 구조체의 마지막 필드는 포스 피드백 및 햅틱 피드백 지원과 같은 장치에 관한 정보의 가변 크기 배열에 대한 포인터입니다. `NULL` 포인터는 해당 기능이 장치에서 사용할 수 없거나 지원되지 않음을 나타냅니다. 각 배열의 요소 수는 SAL(Source Annotation Language) 주석에 명시된 대로 구조체의 해당 필드로 표시됩니다.

모든 속성에 대한 읽을 수 있는 값을 제공하는 입력 장치는 없습니다. 일부 장치는 관련 속성에 대한 값만 포함합니다. 시스템은 [IGameInputDevice::GetDeviceInfo](https://docs.xbox.com/ko/reference/input/gameinput/deprecated/interfaces/igameinputdevice/methods/igameinputdevice_getdeviceinfo.md)를 통해 이 정보를 반환합니다.

### GameInput v4의 대체 메서드

GameInput v4에서는 `GameInputDeviceInfo`의 각 멤버가 [IGameInputDevice](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/igameinputdevice.md)의 getter 메서드로 대체됩니다.

| v3 멤버 | v4 대체 항목 |
| - | - |
| `vendorId` | [GetVendorId](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getvendorid.md) |
| `productId` | [GetProductId](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getproductid.md) |
| `revisionNumber` | [GetRevisionNumber](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getrevisionnumber.md) |
| `usage` | [GetUsage](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getusage.md) |
| `hardwareVersion` | [GetHardwareVersion](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_gethardwareversion.md) |
| `firmwareVersion` | [GetFirmwareVersion](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getfirmwareversion.md) |
| `deviceId` | [GetDeviceId](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getdeviceid.md) |
| `deviceRootId` | [GetDeviceRootId](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getdevicerootid.md) |
| `deviceFamily` | [GetDeviceFamily](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getdevicefamily.md) |
| `supportedInput` | [GetSupportedInput](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getsupportedinput.md) |
| `supportedRumbleMotors` | [GetSupportedRumbleMotors](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getsupportedrumblemotors.md) |
| `supportedSystemButtons` | [GetSupportedSystemButtons](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getsupportedsystembuttons.md) |
| `containerId` | [GetContainerId](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getcontainerid.md) |
| `displayName` | [GetDisplayName](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getdisplayname.md) |
| `pnpPath` | [GetPnpPath](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getpnppath.md) |
| `keyboardInfo` | [GetKeyboardInfo](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getkeyboardinfo.md) |
| `mouseInfo` | [GetMouseInfo](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getmouseinfo.md) |
| `sensorsInfo` | [GetSensorsInfo](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getsensorsinfo.md) |
| `controllerInfo` | [GetControllerAxisCount](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getcontrolleraxiscount.md), [GetControllerAxisLabels](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getcontrolleraxislabels.md), [GetControllerButtonCount](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getcontrollerbuttoncount.md), [GetControllerButtonLabels](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getcontrollerbuttonlabels.md), [GetControllerSwitchCount](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getcontrollerswitchcount.md), [GetControllerSwitchInfo](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getcontrollerswitchinfo.md) |
| `arcadeStickInfo` | [GetArcadeStickInfo](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getarcadestickinfo.md) |
| `flightStickInfo` | [GetFlightStickInfo](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getflightstickinfo.md) |
| `gamepadInfo` | [GetGamepadInfo](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getgamepadinfo.md) |
| `racingWheelInfo` | [GetRacingWheelInfo](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getracingwheelinfo.md) |
| `forceFeedbackMotorCount` | [GetForceFeedbackMotorCount](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getforcefeedbackmotorcount.md) |
| `forceFeedbackMotorInfo` | [GetForceFeedbackMotorInfo](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getforcefeedbackmotorinfo.md) |
| `inputReportCount` | [GetInputReportCount](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getinputreportcount.md) |
| `inputReportInfo` | [GetInputReportInfo](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getinputreportinfo.md) |
| `outputReportCount` | [GetOutputReportCount](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getoutputreportcount.md) |
| `outputReportInfo` | [GetOutputReportInfo](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_getoutputreportinfo.md) |

`keyboardInfo` 및 `gamepadInfo`와 같은 장치별 정보에 대한 포인터 멤버는 장치에 해당 종류의 입력이 없을 때 `NULL`이었습니다. 이 경우 `GetKeyboardInfo` 및 `GetGamepadInfo`와 같은 대응하는 v4 getter는 `false`를 반환합니다.

## 개념 문서

* [GameInput의 포스 피드백](https://docs.xbox.com/ko/build/core-features/common/input/advanced/input-forcefeedback.md)
* [GameInput 장치](https://docs.xbox.com/ko/build/core-features/common/input/overviews/input-devices.md)

## 함께 보기

[사용되지 않는 GameInput API 멤버](https://docs.xbox.com/ko/reference/input/gameinput/deprecated/gameinput_deprecated_members.md)\
[IGameInputDevice](https://docs.xbox.com/ko/reference/input/gameinput/interfaces/igameinputdevice/igameinputdevice.md)\
[Input API 개요](https://docs.xbox.com/ko/build/core-features/common/input/overviews/input-overview.md)\
[GameInput](https://docs.xbox.com/ko/reference/input/gameinput/gameinput_members.md)\
[IGameInputDevice::GetDeviceInfo](https://docs.xbox.com/ko/reference/input/gameinput/deprecated/interfaces/igameinputdevice/methods/igameinputdevice_getdeviceinfo.md)

## 버전 기록

| 버전 | 변경 사항 |
| - | - |
| **v4** | 제거됨. |
| **v3** | `uiNavigationInfo`를 `controllerInfo` 포인터로 대체. 별도의 axis/button/switch count+info 필드를 `controllerInfo`로 대체. `inputReportCount`/`inputReportInfo` 및 `outputReportCount`/`outputReportInfo` 추가. `hapticFeedbackMotorInfo` 제거. |
| **v2** | `revisionNumber`, `hardwareVersion`, `firmwareVersion`, `containerId`(GUID), `sensorsInfo` 포인터 **추가**. |
| **v1** | v0에서 **대폭 단순화**: `infoSize`, `interfaceNumber`, `collectionNumber`, `capabilities`(GameInputDeviceCapabilities), touch/haptic/string/descriptor count 필드 제거; `supportedSystemButtons`, `const char*` 형식의 `displayName`, `pnpPath` 추가. |
| **v0** | 도입됨. |

## 부록: 이전 버전

### v2

```cpp theme={null}
struct GameInputDeviceInfo
{
    uint16_t               vendorId;
    uint16_t               productId;
    uint16_t               revisionNumber;
    GameInputUsage         usage;
    GameInputVersion       hardwareVersion;
    GameInputVersion       firmwareVersion;
    APP_LOCAL_DEVICE_ID    deviceId;
    APP_LOCAL_DEVICE_ID    deviceRootId;
    GameInputDeviceFamily  deviceFamily;
    GameInputKind          supportedInput;
    GameInputRumbleMotors  supportedRumbleMotors;
    GameInputSystemButtons supportedSystemButtons;
    GUID                   containerId;
    const char*            displayName;
    const char*            pnpPath;

    const GameInputKeyboardInfo* keyboardInfo;
    const GameInputMouseInfo*    mouseInfo;
    const GameInputSensorsInfo*  sensorsInfo;

    const GameInputUiNavigationInfo* uiNavigationInfo;
    const GameInputArcadeStickInfo*  arcadeStickInfo;
    const GameInputFlightStickInfo*  flightStickInfo;
    const GameInputGamepadInfo*      gamepadInfo;
    const GameInputRacingWheelInfo*  racingWheelInfo;

    uint32_t                              controllerAxisCount;
    const GameInputControllerAxisInfo*    controllerAxisInfo;
    uint32_t                              controllerButtonCount;
    const GameInputControllerButtonInfo*  controllerButtonInfo;
    uint32_t                              controllerSwitchCount;
    const GameInputControllerSwitchInfo*  controllerSwitchInfo;

    uint32_t                               forceFeedbackMotorCount;
    const GameInputForceFeedbackMotorInfo* forceFeedbackMotorInfo;

    uint32_t                                hapticFeedbackMotorCount;
    const GameInputHapticFeedbackMotorInfo* hapticFeedbackMotorInfo;
};
```

### v1

```cpp theme={null}
struct GameInputDeviceInfo
{
    uint16_t               vendorId;
    uint16_t               productId;
    GameInputUsage         usage;
    APP_LOCAL_DEVICE_ID    deviceId;
    APP_LOCAL_DEVICE_ID    deviceRootId;
    GameInputDeviceFamily  deviceFamily;
    GameInputKind          supportedInput;
    GameInputRumbleMotors  supportedRumbleMotors;
    GameInputSystemButtons supportedSystemButtons;
    const char*            displayName;
    const char*            pnpPath;

    const GameInputKeyboardInfo* keyboardInfo;
    const GameInputMouseInfo*    mouseInfo;

    const GameInputUiNavigationInfo* uiNavigationInfo;
    const GameInputArcadeStickInfo*  arcadeStickInfo;
    const GameInputFlightStickInfo*  flightStickInfo;
    const GameInputGamepadInfo*      gamepadInfo;
    const GameInputRacingWheelInfo*  racingWheelInfo;

    uint32_t                              controllerAxisCount;
    const GameInputControllerAxisInfo*    controllerAxisInfo;
    uint32_t                              controllerButtonCount;
    const GameInputControllerButtonInfo*  controllerButtonInfo;
    uint32_t                              controllerSwitchCount;
    const GameInputControllerSwitchInfo*  controllerSwitchInfo;

    uint32_t                               forceFeedbackMotorCount;
    const GameInputForceFeedbackMotorInfo* forceFeedbackMotorInfo;

    uint32_t                                hapticFeedbackMotorCount;
    const GameInputHapticFeedbackMotorInfo* hapticFeedbackMotorInfo;
};
```


## Related topics

- [GetDeviceInfo (사용되지 않음)](https://docs.xbox.com/ko/reference/input/gameinput/deprecated/interfaces/igameinputdevice/methods/igameinputdevice_getdeviceinfo.md)
- [GameInputControllerInfo (사용되지 않음)](https://docs.xbox.com/ko/reference/input/gameinput/deprecated/structs/gameinputcontrollerinfo.md)
- [GameInputMotionInfo (사용되지 않음)](https://docs.xbox.com/ko/reference/input/gameinput/deprecated/structs/gameinputmotioninfo.md)
- [GameInputString (사용되지 않음)](https://docs.xbox.com/ko/reference/input/gameinput/deprecated/structs/gameinputstring.md)
- [GameInputRawDeviceItemCollectionInfo (사용되지 않음)](https://docs.xbox.com/ko/reference/input/gameinput/deprecated/structs/gameinputrawdeviceitemcollectioninfo.md)
