다음을 통해 공유


SPI를 통해 HID에 대한 플러그 앤 플레이 지원

이 문서에서는 SPI 전송을 통해 HID를 지원하는 디바이스에 대한 플러그 앤 플레이 지원에 대해 설명합니다.

드라이버 로드

Windows는 하드웨어 식별자와 INF 간의 호환 가능한 식별자 일치를 기반으로 HID SPI 클래스 드라이버를 로드합니다. 식별자는 ACPI(고급 구성 및 전원 인터페이스)에 의해 생성됩니다. 하드웨어 식별자는 ACPI의 SPI 디바이스 노드에 대해 생성됩니다. 모든 HID SPI 호환 디바이스는 고유한 하드웨어 식별자 외에도 호환성 식별자를 노출해야 합니다.

ACPI 5.0 사양에는 HID 클래스 디바이스에 대한 지원이 포함됩니다. HID SPI에 대한 ACPI 정의는 다음과 같습니다.

필드 ACPI 개체 형식 의견
하드웨어 ID 공급업체별 _Hid VVVVdddd 형식의 문자열(예: MSFT0011) VendorID + DeviceID
호환 가능한 ID PNP0C51 _Cid ACPIxxxx 또는 PNPxxxx 형식의 문자열 CompatibleID
하위 시스템 공급업체별 _하위 VVVVs 형식의 문자열(예: MSFQ1234) SubVendorID + SubSystemID
하드웨어 수정 버전 공급업체별 _Hrv 0xRRRR(2바이트 수정) 하드웨어 수정 번호
현재 리소스 설정 공급업체별 _Crs 바이트 스트림 - 디바이스에 액세스하기 위한 SpiSerialBus입니다.
- 인터럽트용 GpioInt입니다.
디바이스별 메서드 GUID {6e2ac436-0fcf-41af-a265-b32a220dcfab} _DSM 패키지 디바이스별 정보를 포함하는 구조를 정의합니다.
디바이스 재설정 방법   _RST   호스트 OS에서 ACPI FLDR로 호출할 ACPI 6.0 7.3.25 규격 디바이스 재설정 방법입니다.

모든 HID SPI 디바이스는 다음 필수 필드를 제공해야 합니다.

  • 하드웨어 ID
  • 호환 가능한 ID
  • 하드웨어 수정 버전
  • 현재 리소스 설정
  • 디바이스별 메서드
  • 디바이스 재설정 방법

추가 정보는 ACPI(고급 구성 및 전원 인터페이스) 6.0 사양을 참조하세요.

다음은 임의 HID SPI 디바이스에 대한 하드웨어 ID 및 호환 ID의 예를 제공합니다. 이러한 세부 정보는 "공급업체별" 클래스의 최상위 컬렉션이 하나 있는 HID로 자신을 보고하는 샘플 디바이스를 기반으로 합니다.

ACPI(고급 구성 및 전원 인터페이스)는 HID SPI 전송 드라이버를 로드하기 위해 다음과 같은 하드웨어 ID 및 호환 ID를 생성합니다.

하드웨어 식별자: 호환 식별자

ACPI\Vid_xxxx&Pid_yyyy&Rev_zzzz;: ACPI\PNP0C51

ACPI\Vid_xxxxPid_yyyy;:

ACPI\xxxxyyyy;:

이전 예제에서 하드웨어 ID는 샘플 디바이스에 대한 _HID ACPI 메서드에서 추출된 값을 사용하여 생성되었습니다. 호환 ID는 샘플 디바이스에 대한 _CID ACPI 메서드에서 추출된 값을 사용하여 생성됩니다. HID over SPI의 호환 ID는 항상 버전 1.0에 대해 PNP0C51 합니다.

참고

INF를 제공하는 경우 이전 테이블의 왼쪽 열에 있는 하드웨어 식별자만 사용해야 합니다. (오른쪽 열에서 호환되는 식별자를 사용하지 마세요.)

HIDClass.sys 구성 요소에서 생성된 HID 클라이언트 디바이스 노드의 하드웨어 ID는 다음과 같습니다.

하드웨어 식별자: 호환 식별자

HID\VEN_MSFT&DEV_0010&REV_0002&Col01;: 해당 내용

-HID\VEN_MSFT&DEV_0010&Col01 HID\MSFT0010&Col01;: 해당 사항

-HID\*MSFT0010Col01: 해당 내용

-HID_DEVICE_UP:FF00_U:0001;: 해당 내용

-HID_DEVICE: 해당 사항

하드웨어 ID는 HIDClass.sys 의해 생성되며 모든 전송에 대해 동일합니다. 이 식별자는 ACPI에서 추출된 HIDSPI.SYS HIDClass.sys 전달된 값을 기반으로 합니다.

디바이스 열거형 시퀀스

HID SPI 디바이스 드라이버(HIDSPI.SYS)가 로드되면 SPI 버스를 통해 디바이스와 통신하기 시작합니다. 드라이버가 수행하는 첫 번째 작업은 디바이스 열거형 시퀀스입니다.

다음 목록에서는 열거형 시퀀스를 제공합니다. 이 목록의 순서는 이후 버전의 Windows에서 변경될 수 있습니다.

  1. 시스템 BIOS에서 HID SPI 디바이스에 대한 ASL(ACPI 원본 언어) 코드를 검색합니다.

  2. 디바이스에 호스트 시작 초기화 실행

    • ACPI _RST 메서드 호출
    • 디바이스가 GPIO 인터럽트 어설션
    • 호스트가 디바이스에서 다시 설정 응답을 읽습니다.
  3. 디바이스에서 HID 설명자 검색

    • 호스트가 HID 설명자 요청을 씁니다.
    • 디바이스가 GPIO 인터럽트 어설션
    • 호스트가 HID 설명자 응답을 읽습니다.
  4. 보고서 설명자 검색

    • 호스트는 보고서 설명자 요청을 씁니다.
    • 디바이스가 GPIO 인터럽트 어설션
    • 호스트가 보고서 설명자 응답을 읽습니다.

호스트가 디바이스를 사용하여 단계를 성공적으로 완료하지 못하면 HIDSPI 드라이버가 코드 10의 오류 값으로 로드될 수 있습니다. 응답이 수신되지 않은 경우 호스트가 디바이스를 다시 설정하기 위해 다시 시도할 수 있지만 재시도 논리는 보장되지 않습니다.

HID 보고서 작업

아래 표에서는 HID SPI 프로토콜에서 지원하는 HID 보고서 작업과 작업을 수행하는 데 사용되는 입력 및 출력 보고서에 대한 개요를 제공합니다.

HID 보고서 유형 작업 출력 보고서 유형 입력 보고서 유형
입력 보고서 GET 0x06
(요청 - 빈 콘텐츠)
0x0B
(응답)
입력 보고서 SET
(지원되지 않음)
해당 없음 해당 없음
입력 보고서 인터럽트 IN 해당 없음 - 요청 없음 0x01
기능 보고서 GET 0x04
(요청 - 빈 콘텐츠)
0x05
(응답)
기능 보고서 SET 0x03 0x09
(승인 - 빈 콘텐츠)
출력 보고서 GET
(지원되지 않음)
해당 없음 해당 없음
출력 보고서 SET 0x05 0x0A
(승인 - 빈 콘텐츠)

프로토콜 작업

작업 요청 보고서 유형 응답 보고서 유형
디바이스 설명자 요청 0x01 0x7
보고서 설명자 요청 0x02 0x8
명령 요청 0x07 0x4
응답 다시 설정 해당 없음 0x3

추가 정보

ACPI 원본 언어(ASL)