다음을 통해 공유


USB 디바이스에 컨테이너 ID가 할당되는 방법

USB(유니버설 직렬 버스)를 통해 컴퓨터에 연결된 디바이스의 경우 다음 순서도는 컨테이너 ID를 USB 디바이스 노드(devnode)에 할당하는 데 사용되는 추론을 보여 줍니다.

usb devnodes에 대한 컨테이너 ID 추론을 보여 주는 순서도입니다.

이 추론은 여러 원본의 정보를 사용하여 다음 중 하나가 USB devnode에 대한 사실인지 여부를 확인합니다.

  • devnode가 USB 버스의 새 디바이스를 나타내나요? 이 경우 devnode는 새 컨테이너 ID를 받습니다.

  • devnode가 기존 디바이스의 자식 devnode인가요? 이 경우 devnode는 부모 devnode의 컨테이너 ID를 상속합니다.

USB 디바이스에 대한 컨테이너 ID는 여러 가지 방법으로 생성됩니다. 이 결정은 디바이스에 포함된 정보를 기반으로 합니다. 이 정보는 ACPI 설정, USB 버스 드라이버 및 USB 허브에서 검색됩니다.

이 추론은 PnP(플러그 앤 플레이) 관리자가 USB 버스에 열거하는 각 devnode에 대해 이러한 단계를 따릅니다.

  1. USB 버스 드라이버에서 쿼리하는 경우 USB 디바이스는 Microsoft OS(운영 체제) ContainerID 설명자를 통해 컨테이너 ID를 보고할 수 있습니다.

    Windows 7부터 운영 체제는 Microsoft OS ContainerID 설명자를 지원합니다. 이 설명자를 통해 IHV(독립 하드웨어 공급업체)는 디바이스의 컨테이너 ID를 정확하게 지정할 수 있습니다. 따라서 디바이스의 컨테이너 ID는 고유하며 디바이스가 설치된 모든 컴퓨터에서 변경되지 않습니다. 또한 Microsoft OS ContainerID 설명자를 보고하는 경우 디바이스는 열거된 모든 devnode가 동일한 물리적 디바이스의 일부임을 운영 체제에 나타냅니다.

    Microsoft OS ContainerID 설명자는 여러 시스템 버스를 통해 디바이스의 동시 연결을 지원하는 디바이스에서 사용됩니다. 예를 들어 프린터는 플러그 앤 플레이 확장(PnP-X)을 사용하여 동시 USB 및 IP 네트워크 연결을 지원할 수 있습니다. 단일 Microsoft OS ContainerID 설명자를 사용하면 두 전송 모두에서 동일한 컨테이너 ID가 보고됩니다. 따라서 PnP 관리자는 각 버스에 의해 열거된 devnode가 동일한 물리적 디바이스의 일부임을 확인합니다.

    Microsoft OS ContainerID 설명자에 대한 자세한 내용은 Microsoft OS 설명자를 참조하세요.

  2. USB 디바이스가 Microsoft OS ContainerID 설명자를 보고하지 않는 경우 USB 허브 드라이버는 ACPI를 쿼리하여 디바이스가 외부 연결 포트에 연결되어 있는지 여부를 확인합니다.

    운영 체제는 디바이스가 연결된 USB 포트의 주소와 일치하는 ACPI 주소(_ADR) 개체를 찾으려고 합니다. 일치하는 주소 개체가 발견되면 운영 체제는 다음 단계를 수행합니다.

    • usb 포트 기능(_UPC) 개체가 쿼리되고 PortIsConnectable 값이 선택됩니다. PortIsConnectable의 0이 아닌 값이 0xFF 경우 포트를 사용하여 외부 디바이스를 연결할 수 있습니다. 따라서 이 포트에 연결된 모든 디바이스는 컴퓨터 외부에 있어야 합니다.

    • 컴퓨터가 ACPI 3.0을 구현하고 PortIsConnectable 바이트가 0이 아닌 경우 운영 체제는 _PLD(물리적 위치 설명) 개체를 추가로 쿼리합니다. 운영 체제는 UserVisible 비트(비트 64)가 _PLD 개체에 설정되어 있는지 확인합니다. 이 작업은 포트가 연결 가능하고 사용자에게 외부적으로 표시되도록 하기 위한 추가 검사 수행합니다.

    ACPI에서 수집된 정보가 디바이스가 외부임을 나타내는 경우 PnP 관리자는 디바이스에 대한 컨테이너 ID를 생성합니다. ContainedID 값은 디바이스의 USB 일련 번호 해시 또는 임의로 생성된 값입니다. devnode에 이 컨테이너 ID가 할당됩니다.

    참고 운영 체제에서 디바이스가 컴퓨터 내부임을 확인하는 경우 devnode는 부모 devnode의 컨테이너 ID를 상속합니다. 이 경우 컴퓨터 자체의 컨테이너 ID입니다.

  3. ACPI가 디바이스가 연결된 USB 포트 주소와 일치하는 _ADR 개체를 반환하지 않으면 PnP 관리자는 devnode의 이동식 상태 기반으로 컨테이너 ID를 생성합니다.

    USB 허브 드라이버는 허브에서 USB RemoveAndPowerMask 설명자를 쿼리하고 디바이스가 연결된 포트에 대해 DeviceRemovable 비트가 설정되어 있는지 확인합니다. DeviceRemovable 비트가 설정된 경우 포트에 연결된 디바이스는 허브에서 이동식으로 사용할 수 있습니다. DeviceRemovable 비트가 설정되지 않은 경우 포트에 연결된 디바이스는 허브에서 제거할 수 없습니다.

    USB 버스 드라이버는 다음 단계를 통해 devnode에 대한 ContainerId를 생성하는 PnP 관리자에 이동식/이동식이 아닌 포트 상태 보고합니다.

    • 허브가 지정된 포트에 연결된 디바이스를 허브에서 이동식으로 표시하면 PnP 관리자는 이 포트에 연결된 디바이스가 컴퓨터 외부에 있음을 확인합니다. devnode에 대해 생성하는 컨테이너 ID는 디바이스의 USB 일련 번호 해시이거나 임의로 생성된 값입니다.

    • 허브가 지정된 포트에 연결된 디바이스가 허브에서 이동식이 아님을 나타내는 경우 PnP 관리자는 이 포트에 연결된 디바이스가 다기능 디바이스의 하위 기능임을 확인합니다. 이 경우 devnode는 부모 devnode의 컨테이너 ID를 상속합니다.

ACPI 3.0 인터페이스에 대한 자세한 내용은 고급 구성 및 전원 인터페이스 사양 수정 버전 3.0b를 참조하세요.