다음을 통해 공유


DCH 디자인 원칙 및 모범 사례

이 문서에서는 DCH 규격 드라이버 패키지에 대한 디자인 원칙 및 모범 사례를 설명합니다. DCH는 선언적 (D), 구성 요소화 (C)H(하드웨어 지원 앱)를 의미합니다.

DCH 디자인 원칙

드라이버 패키지가 DCH 규격이 되도록 고려해야 할 세 가지 디자인 원칙이 있습니다.

  • 선언적: 선언적 INF 지시문만 사용하여 드라이버 패키지를 설치합니다. coinstallers 또는 RegisterDll 함수를 포함하지 마세요.

  • 구성 요소화: 드라이버 패키지에 대한 버전별, OEM별 및 선택적 사용자 지정은 기본 드라이버 패키지와 별개입니다. 따라서 핵심 디바이스 기능만 제공하는 기본 드라이버 패키지는 사용자 지정과 독립적으로 대상 지정, 플라이트 및 서비스를 제공할 수 있습니다.

  • HSA(하드웨어 지원 앱): 드라이버 패키지와 연결된 모든 UI(사용자 인터페이스) 구성 요소는 HSA로 패키지되거나 OEM 디바이스에 미리 설치되어야 합니다. HSA는 드라이버 패키지와 쌍을 이루는 선택적 디바이스별 앱입니다. 애플리케이션은 코드에서 MSIX 패키지로 빌드된UWP(유니버설 Windows 플랫폼) 또는 데스크톱 브리지 앱일 수 있습니다. Microsoft Store를 통해 HSA를 배포하고 업데이트해야 합니다. 자세한 내용은 HSA: 드라이버 개발자를 위한 단계HSA: 앱 개발자를 위한 단계를 참조하세요.

드라이버 샘플이 DCH 디자인 원칙을 적용하는 방법을 보려면 DCH 규격 드라이버 패키지 예제를 참조하세요.

DCH 개요

DCH 규격인 드라이버 패키지에는 UWP 기반 버전의 Windows에서 설치 및 실행되는 INF 파일 및 이진 파일이 포함되어 있습니다. 또한 일반적인 인터페이스 집합을 공유하는 Windows 10 및 11의 다른 버전에서도 설치하고 실행합니다.

DCH 규격 드라이버 이진 파일은 KMDF(Kernel-Mode Driver Framework) User-Mode UMDF(드라이버 프레임워크 2) 또는 WDM(Windows 드라이버 모델)을 사용할 수 있습니다.

DCH 규격 드라이버 패키지는 다음 부분으로 구성됩니다.

  • 기본 드라이버 패키지
  • 선택적 구성 요소 패키지
  • 선택적 하드웨어 지원 앱

기본 드라이버 패키지에는 모든 핵심 기능 및 공유 코드가 포함되어 있습니다. 선택적 구성 요소 패키지에는 사용자 지정 및 기타 설정이 포함될 수 있습니다.

일반적으로 디바이스 제조업체 또는 IHV(독립 하드웨어 공급업체)는 기본 드라이버 패키지를 씁니다. 그런 다음 시스템 작성기 또는 OEM(원래 장비 제조업체)에서 선택적 구성 요소 패키지를 제공합니다.

IHV가 기본 드라이버 패키지를 인증한 후에는 모든 OEM 시스템에 배포할 수 있습니다. 기본 드라이버 패키지는 하드웨어 파트를 공유하는 모든 시스템에서 사용할 수 있으므로 Microsoft는 기본 드라이버 패키지를 광범위하게 테스트할 수 있습니다. Microsoft는 배포를 특정 컴퓨터로 제한하는 대신 Windows 인사이더 플라이트를 사용할 수 있습니다.

OEM은 OEM 시스템에 제공하는 선택적 사용자 지정만 유효성을 검사합니다.

DCH 요구 사항

DCH 디자인 원칙을 따르는 드라이버 패키지를 만들려면 다음 단계를 수행합니다.

  1. 드라이버 패키지에 대한 INF 파일을 만듭니다.

    1. 유니버설 드라이버 패키지에서 유효한 INF 섹션 및 지시문 목록을 검토합니다.

    2. InfVerif 도구를 사용하여 드라이버 패키지의 INF 파일이 선언적(D) 요구 사항을 따르는지 확인합니다. 패키지는 infverif /k 명령어의 검사를 통과해야 합니다.

  2. 핵심 드라이버 기능을 포함하지 않는 선택적 구성 요소 패키지가 기본 드라이버 패키지와 분리되어 있는지 확인합니다.

  3. 드라이버 패키지와 연결된 하드웨어 지원 앱은 Microsoft Store를 통해 배포해야 합니다.

DCH 모범 사례

DCH 규정 준수를 위해 개발하는 경우 다음 모범 사례를 따릅니다.

  • 최신 버전의 Visual Studio에서 WDK(Windows 드라이버 키트)를 사용하는 경우 드라이버 프로젝트 속성의 대상 플랫폼 값을 Universal로 설정합니다. 이 설정은 올바른 라이브러리를 자동으로 추가하고 빌드의 일부로 적절한 INF 유효성 검사 및 ApiValidator를 실행합니다. 이 작업을 완료하려면 다음 단계를 수행합니다.

    1. 드라이버 프로젝트 속성을 엽니다.
    2. 드라이버 설정을 선택합니다.
    3. 드롭다운 메뉴를 사용하여 대상 플랫폼 값을 Universal.로 설정합니다.
  • INF가 대상 플랫폼에 의존하는 사용자 지정 설정 작업을 수행하는 경우 작업을 확장 INF로 분리하는 것이 좋습니다. 확장 INF를 기본 드라이버 패키지와 독립적으로 업데이트하여 더 강력하고 서비스 가능하게 만들 수 있습니다. 자세한 내용은 확장 INF 파일 사용을 참조하세요.

  • 디바이스에서 작동하는 애플리케이션을 제공하려면 HSA를 포함합니다. 자세한 내용은 HSA: 드라이버 개발자를 위한 단계를 참조하세요. OEM은 DISM(배포 이미지 서비스 및 관리)을 사용하여 HSA 앱을 미리 로드하거나 사용자가 Microsoft Store에서 앱을 수동으로 다운로드할 수 있습니다.