다음을 통해 공유


기본이 아닌 USB 구성을 선택하도록 Usbccgp.sys 구성

이 문서에서는 Usbccgp.sys USB 구성을 선택하는 방법을 구성하는 레지스트리 설정에 대한 정보를 제공합니다. 또한 이 항목에서는 Usbccgp.sys 복합 디바이스의 함수 중 하나를 제어하는 클라이언트 드라이버에서 보낸 선택 구성 요청을 처리하는 방법에 대해서도 설명합니다.

USB 복합 디바이스는 단일 USB 디바이스 내의 여러 함수(기능 디바이스)로 구성됩니다. Windows에서 복합 디바이스에 대해 Microsoft에서 제공하는 USB Usbccgp.sys( 일반 부모 드라이버 )를 로드하는 경우 해당 시점부터 Usbccgp.sys 디바이스 구성을 선택해야 합니다. 복합 디바이스의 각 인터페이스 또는 인터페이스 컬렉션은 여러 면에서 자체 PDO(물리적 디바이스 개체)가 있는 별도의 디바이스와 같습니다. 디바이스 구성을 다시 설정하면 클라이언트 드라이버가 제어하는 인터페이스뿐만 아니라 디바이스의 모든 인터페이스에 대한 구성이 변경됩니다. 운영 체제에서 이를 허용하지 않습니다. 따라서 복합 디바이스의 인터페이스 집합 또는 인터페이스 컬렉션을 제어하는 클라이언트 드라이버는 Usbccgp.sys 처음에 설정된 구성을 변경할 수 없습니다.

그러나 Windows Vista 이상 버전의 Windows에서는 다음 레지스트리 값을 추가하여 선택할 구성을 지정할 수 있습니다.

레지스트리 키 형식 기본값
OriginalConfigurationValue REG_DWORD USB 구성 인덱스입니다. Usbccgp.sys Select-configuration 요청에 OriginalConfigurationValue를 먼저 사용합니다. 0
AltConfigurationValue REG_DWORD OriginalConfigurationValue를 사용한 select-configuration 요청이 실패하는 경우 사용할 구성 인덱스입니다. 0

참고

위의 레지스트리 설정은 기본적으로 존재하지 않습니다. USB 디바이스의 하드웨어(즉, "디바이스") 키 아래에 추가해야 합니다.

레지스트리 설정을 사용하면 CCGP 드라이버가 대체 구성을 선택할 수 있습니다.

앞의 표에 설명된 레지스트리 값은 디바이스의 구성 설명자에 보고된 bConfigurationNum 값이 아니라 구성 설명자(USB_CONFIGURATION_DESCRIPTOR)의 bConfigurationValue 멤버로 표시된 USB 정의 구성 인덱스와 일치합니다. 먼저 Usbccgp.sys OriginalConfigurationValue로 지정된 USB 구성 인덱스를 사용하여 부모 USB 버스 드라이버(Usbhub.sys)에 선택 구성 요청을 보냅니다. 해당 요청이 실패하면 Usbccgp.sys AlternateConfigurationValue에 지정된 값을 사용하려고 시도합니다. Usbccgp.sys AlternateConfigurationValue 또는 OriginalConfigurationValue가 잘못된 경우 기본값을 사용합니다.

선택 구성 요청은 여러 가지 이유로 실패할 수 있습니다. 가장 일반적인 오류는 디바이스가 요청에 제대로 응답하지 않거나 bMaxPower 값(요청된 구성에 필요한 전원)이 허브 포트에서 지원하는 전원 값을 초과할 때 발생합니다. 예를 들어 특정 구성에 대한 bMaxPower (OriginalConfigurationValue로 지정됨)는 100밀리암페어이지만 허브 포트는 50밀리암페어만 제공할 수 있습니다. Usbccgp.sys 해당 구성에 대한 선택 구성 요청을 보내면 USB 드라이버 스택(특히 USB 포트 드라이버)이 요청에 실패합니다. 그런 다음 Usbccgp.sys AltConfigurationValue로 표시된 구성을 지정하여 다른 선택 구성 요청을 보냅니다. 대체 구성에 50밀리암페어 이하가 필요하고 다른 문제가 발생하지 않으면 select-configuration 요청이 성공적으로 완료됩니다.

호환성 기능

복합 디바이스의 함수에 대한 클라이언트 드라이버가 복합 디바이스의 구성을 선택할 수 없더라도 클라이언트 드라이버는 여전히 select-configuration 요청을 Usbccgp.sys 보낼 수 있습니다. 해당 요청을 빌드하는 방법에 대한 자세한 내용은 USB 디바이스에 대한 구성을 선택하는 방법을 참조하세요. Usbccgp.sys 클라이언트 드라이버에서 선택 구성 요청을 받은 후 다음 작업을 수행합니다.

  1. USB 포트 드라이버에서 선택한 구성 요청의 유효성을 검사하는 데 사용하는 것과 동일한 조건을 사용하여 수신된 요청의 유효성을 검사합니다.
  2. 요청이 현재 설정과 다른 인터페이스 또는 파이프 설정을 지정하는 경우 Usbccgp.sys URB_FUNCTION_SELECT_INTERFACE 형식의 URB를 보내 기존 설정을 새 인터페이스 및 파이프 설정으로 변경하여 선택 인터페이스 요청을 실행합니다.
  3. USBD_INTERFACE_INFORMATION 및 USBD_PIPE_INFORMATION 구조체의 캐시된 내용을 URB에 복사 합니다.
  4. URB를 완료합니다.