다음을 통해 공유


이동식 디바이스 기능에서 컨테이너 ID를 생성하는 방법

버스 드라이버 열거 중인 디바이스 노드(devnode)에 대한 컨테이너 ID를 제공할 수 없는 경우 PnP(플러그 앤 플레이) 관리자는 이동식 디바이스 기능을 사용하여 디바이스에 열거된 모든 devnode에 대한 컨테이너 ID를 생성합니다. 이동식 디바이스 기능에 대한 자세한 내용은 이동식 디바이스 기능개요를 참조하세요.

다음 추론에서는 이동식 디바이스 기능에서 컨테이너 ID를 생성하는 방법을 설명합니다.

  1. devnode에 이동식 디바이스 기능이 TRUE설정된 경우 devnode에 대한 새 컨테이너 ID를 생성합니다.

  2. devnode에 이동식 디바이스 기능이 FALSE로 설정된 경우, 부모 devnode에서 컨테이너 ID를 상속합니다.

devnode는 초기화되고 드라이버 스택이 시작될 때까지 하위 devnode를 열거할 수 없습니다. 초기화 중 컨테이너 ID가 할당되면, devnode는 분리 불가능한 자식 노드가 열거될 때 그들에게 컨테이너 ID를 전파할 준비가 됩니다.

이동식 디바이스 기능이 TRUE 설정된 devnode는 디바이스의 최상위(부모) devnode로 간주되며 이 devnode에 대한 컨테이너 ID가 생성됩니다.

이동식 디바이스 기능이 true 설정되지 않은 한 이 부모 devnode의 모든 자식은 동일한 컨테이너 ID를 상속합니다. 이 경우 이동식 자식 devnode에 다른 컨테이너 ID가 할당되고 이 이동식 디바이스의 부모 devnode가 됩니다. 해당 devnode의 모든 자식은 동일한 컨테이너 ID를 상속합니다.

예를 들어 단일 함수 마우스가 USB를 통해 컴퓨터에 연결되어 있다고 가정합니다. 이 경우 USB 버스 드라이버는 새 디바이스를 감지하고 HID(USB 휴먼 인터페이스 디바이스)인 것을 감지합니다. 그런 다음 USB 버스 드라이버는 디바이스에 대한 USB HID devnode를 만듭니다. HID devnode는 HID 장치가 마우스임을 감지하고, HID 호환 마우스를 위한 자식 devnode를 생성합니다.

이 추론을 이 예제에 적용하면 다음 작업이 수행됩니다.

  1. USB HID 디바이스 노드가 생성됩니다. 이동식 장치 기능이 부모 USB 허브 devnode가 외부 연결 USB 포트에 연결되었음을 인식했기 때문에 이 devnode에서 TRUE로 설정됩니다.

  2. 이 디바이스 노드에 대한 컨테이너 ID는 이 노드가 이동식 디바이스의 최상위 디바이스 노드이기 때문에 생성됩니다. 결과적으로 이 devnode는 이동식 디바이스에 대한 부모 devnode로 간주됩니다.

  3. HID 규격 마우스 디바이스 노드가 생성됩니다. 이동식 디바이스 기능은 부모 USB HID 디바이스 노드가 모든 하위 노드를 이동 불가로 보고하기 때문에 이 디바이스 노드에서 FALSE로 설정됩니다. 이 경우 HID 규격 마우스 devnode는 부모 devnode의 컨테이너 ID를 상속합니다.

이 추론을 통해 마우스에 속하는 각 devnode에 동일한 컨테이너 ID가 할당됩니다. PnP 관리자는 디바이스에 대한 고유 식별자가 없는 경우에도 devnodes를 논리 디바이스로 그룹화했습니다.

비고

이 추론의 성공은 열거하는 각 devnode에 대한 이동식 디바이스 기능을 올바르게 보고하는 특정 버스 드라이버에 의존합니다. 버스 드라이버는 디바이스의 부모 디브노드를 이동식으로 설정해야 하며, 자식 디브노드는 이동식으로 설정해서는 안 됩니다.