다음을 통해 공유


GameInputDeviceInfo

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

구문

typedef struct GameInputDeviceInfo {  
    uint32_t infoSize;  
    uint16_t vendorId;  
    uint16_t productId;  
    uint16_t revisionNumber;  
    uint8_t interfaceNumber;  
    uint8_t collectionNumber;  
    GameInputUsage usage;  
    GameInputVersion hardwareVersion;  
    GameInputVersion firmwareVersion;  
    APP_LOCAL_DEVICE_ID deviceId;  
    APP_LOCAL_DEVICE_ID deviceRootId;  
    GameInputDeviceFamily deviceFamily;  
    GameInputDeviceCapabilities capabilities;  
    GameInputKind supportedInput;  
    GameInputRumbleMotors supportedRumbleMotors;  
    uint32_t inputReportCount;  
    uint32_t outputReportCount;  
    uint32_t featureReportCount;  
    uint32_t controllerAxisCount;  
    uint32_t controllerButtonCount;  
    uint32_t controllerSwitchCount;  
    uint32_t touchPointCount;  
    uint32_t touchSensorCount;  
    uint32_t forceFeedbackMotorCount;  
    uint32_t hapticFeedbackMotorCount;  
    uint32_t deviceStringCount;  
    uint32_t deviceDescriptorSize;  
    GameInputRawDeviceReportInfo const * inputReportInfo;  
    GameInputRawDeviceReportInfo const * outputReportInfo;  
    GameInputRawDeviceReportInfo const * featureReportInfo;  
    GameInputControllerAxisInfo const * controllerAxisInfo;  
    GameInputControllerButtonInfo const * controllerButtonInfo;  
    GameInputControllerSwitchInfo const * controllerSwitchInfo;  
    GameInputKeyboardInfo const * keyboardInfo;  
    GameInputMouseInfo const * mouseInfo;  
    GameInputTouchSensorInfo const * touchSensorInfo;  
    GameInputMotionInfo const * motionInfo;  
    GameInputArcadeStickInfo const * arcadeStickInfo;  
    GameInputFlightStickInfo const * flightStickInfo;  
    GameInputGamepadInfo const * gamepadInfo;  
    GameInputRacingWheelInfo const * racingWheelInfo;  
    GameInputUiNavigationInfo const * uiNavigationInfo;  
    GameInputForceFeedbackMotorInfo const * forceFeedbackMotorInfo;  
    GameInputHapticFeedbackMotorInfo const * hapticFeedbackMotorInfo;  
    GameInputString const * displayName;  
    GameInputString const * deviceStrings;  
    void const * deviceDescriptorData;  
} GameInputDeviceInfo  

멤버

infoSize
형식: uint32_t

장치 정보의 크기입니다.

vendorId
형식: uint16_t

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

productId
형식: uint16_t

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

revisionNumber
형식: uint16_t

장치 수정 번호입니다.

interfaceNumber
형식: uint8_t

장치 인터페이스 번호입니다.

collectionNumber
형식: uint8_t

장치 컬렉션 번호입니다.

usage
형식: GameInputUsage

사용된 입력을 기술하는 두 파트로 나눠진 색인입니다.

hardwareVersion
형식: GameInputVersion

사용 중인 하드웨어 버전을 지정합니다.

firmwareVersion
형식: GameInputVersion

사용 중인 펌웨어 버전을 지정합니다.

deviceId
형식: APP_LOCAL_DEVICE_ID

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

deviceRootId
형식: APP_LOCAL_DEVICE_ID

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

deviceFamily
형식: GameInputDeviceFamily

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

capabilities
형식: GameInputDeviceCapabilities

게임 컨트롤러에 제공되는 기능을 기술합니다.

supportedInput
형식: GameInputKind

장치가 지원하는 입력 유형을 기술합니다.

supportedRumbleMotors
형식: GameInputRumbleMotors

장치에 있는 액세스 가능한 진동 모터(있는 경우)를 기술합니다.

inputReportCount
형식: uint32_t

장치에 대한 입력 보고서 수입니다.

outputReportCount
형식: uint32_t

장치에 대한 출력 보고서 수입니다.

featureReportCount
형식: uint32_t

장치에 대한 기능 보고서 수입니다.

controllerAxisCount
형식: uint32_t

입력 장치의 축 수입니다.

controllerButtonCount
형식: uint32_t

입력 장치의 버튼 수입니다.

controllerSwitchCount
형식: uint32_t

입력 장치의 스위치 수입니다.

touchPointCount
형식: uint32_t

장치에서 터치 입력으로 동시에 읽을 수 있는 터치 입력 수입니다.

touchSensorCount
형식: uint32_t

장치의 터치 센서 수입니다.

forceFeedbackMotorCount
형식: uint32_t

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

hapticFeedbackMotorCount
형식: uint32_t

입력 장치의 촉각 피드백 모터 수입니다.

deviceStringCount
형식: uint32_t

장치 정보에 포함된 문자열 수입니다.

deviceDescriptorSize
형식: uint32_t

장치 설명의 크기입니다.

inputReportInfo
형식: GameInputRawDeviceReportInfo const *

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

outputReportInfo
형식: GameInputRawDeviceReportInfo const *

출력 보고서입니다.

featureReportInfo
형식: GameInputRawDeviceReportInfo const *

기능 보고서입니다.

controllerAxisInfo
형식: GameInputControllerAxisInfo const *

입력 장치의 모든 축에 대한 정보입니다.

controllerButtonInfo
형식: GameInputControllerButtonInfo const *

입력 장치의 모든 버튼에 대한 정보입니다.

controllerSwitchInfo
형식: GameInputControllerSwitchInfo const *

입력 장치의 모든 스위치에 대한 정보입니다.

keyboardInfo
형식: GameInputKeyboardInfo const *

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

mouseInfo
형식: GameInputMouseInfo const *

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

touchSensorInfo
형식: GameInputTouchSensorInfo const *

입력 장치의 모든 터치 센서에 대한 정보입니다.

motionInfo
형식: GameInputMotionInfo const *

동작에 대한 정보입니다.

arcadeStickInfo
형식: GameInputArcadeStickInfo const *

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

flightStickInfo
형식: GameInputFlightStickInfo const *

비행 스틱 입력 장치에 대한 정보입니다.

gamepadInfo
형식: GameInputGamepadInfo const *

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

racingWheelInfo
형식: GameInputRacingWheelInfo const *

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

uiNavigationInfo
형식: GameInputUiNavigationInfo const *

입력 장치의 탐색 매핑에 대한 정보입니다.

forceFeedbackMotorInfo
형식: GameInputForceFeedbackMotorInfo const *

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

hapticFeedbackMotorInfo
형식: GameInputHapticFeedbackMotorInfo const *

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

displayName
형식: GameInputString const *
장치의 표시 이름입니다.
deviceStrings
형식: GameInputString const *

장치에 대한 게임 입력 문자열 목록입니다.
deviceDescriptorData
형식: void const *

장치를 기술하는 개체입니다.

비고

deviceId는 장치를 고유하게 식별하는 256비트 해시 값으로 구성된, 응용 프로그램 로컬 ID입니다. 이 ID는 지정된 장치에 대해 항상 동일하며, 동일한 USB 포트에 연결되어 있는 한, 시스템을 재부팅하거나 응용 프로그램을 다시 실행해도 동일하게 유지됩니다. 응용 프로그램 로컬 ID 해시는 부분적으로 호출을 수행하는 응용 프로그램 및 시스템 측의 정보를 사용해서 생성됩니다. 따라서 지정된 응용 프로그램이 실행될 때는 항상 응용 프로그램 로컬 ID가 동일하지만, 응용 프로그램이 달라지거나, 같은 응용 프로그램이라도 시스템이 달라지면 ID가 달라집니다. 이 기능은 사용자의 개인 정보 보호를 위한 것입니다. 즉, 사용자 장치를 통해 응용 프로그램/시스템 간에 사용자를 추적할 수 없도록 하기 위한 것입니다. 응용 프로그램 로컬 ID는 시스템에 동일한 장치가 여러 개 연결되어 있을 때 응용 프로그램이 입력 매핑을 안정적으로 생성하기 위해 사용됩니다.

deviceRootId는 복합 장치에 대해 루트 장치 노드를 식별하는 또 다른 응용 프로그램 로컬 ID입니다. 이 ID를 통해 응용 프로그램은 개별 장치들의 관계를 파악할 수 있습니다. 예를 들어 일부 게이밍 키보드는 자기 자신을 여러 키보드 노드가 포함된 복합 장치로 표시함으로써 동시 키입력 8개라는 기존 USB의 한계를 해결합니다. 이것들은 모두 "시스템" 키보드로 병합되므로, 사용자에게 투명한 방식으로 진행됩니다. 하지만 GameInput API를 통해 키보드별 입력을 처리할 때는 이러한 방식을 이해함으로써, 키눌림에 함수를 매핑할 때 잘못된(즉, 키눌림이 항상 특정 장치로부터 시작될 것이라는) 가정을 피할 수 있습니다. 해당 장치가 복합 장치의 여러 인터페이스 중 하나가 아니면 deviceId 및 deviceRootId가 동일합니다.

displayName 문자열에는 해당 장치에 대해 “친숙한” 이름이 포함됩니다. 이 문자열은 응용 프로그램의 UI에 표시하기에 적합하지만, 지역화 여부를 보장할 수 없습니다. 그 이유는 GameInput API가 이 문자열을 여러 위치에서 검색하고, 최종 대안 중 하나가 장치의 펌웨어로부터 오기 때문입니다.

GameInputDeviceInfo 구조에서 최종 필드는 개별 컨트롤러 버튼에 대한 세부 속성 또는 힘 피드백 및 촉각 피드백 지원 관련 정보와 같이, 장치에 대해 다양한 크기로 구성된 정보 배열의 포인터입니다. NULL 포인터는 장치에서 해당 기능이 제공 또는 지원되지 않음을 나타냅니다. 각 배열의 요소 수는 이 구조에 있는 해당 필드로 표시됩니다(SAL 주석 참조).

어떤 입력 장치라도 모든 속성에 대해 읽기 가능한 값을 가질 수는 없습니다. 일부 입력 장치에는 관련 속성에 대한 값만 포함됩니다.
IGameInputDevice::GetDeviceInfo에서 반환됩니다.

요건

헤더: GameInput.h

지원되는 플랫폼: Windows, Xbox One 패밀리 콘솔 및 Xbox Series 콘솔

참고 항목

입력 API 개요
GameInput
IGameInputDevice::GetDeviceInfo