디바이스 트리
PnP 관리자는 시스템의 디바이스를 추적하는 디바이스 트리를 유지 관리합니다. 다음 그림은 샘플 시스템 구성에 대한 디바이스 트리를 보여줍니다.
디바이스 트리에는 시스템에 있는 디바이스에 대한 정보가 포함됩니다. PnP 관리자는 드라이버 및 기타 구성 요소의 정보를 사용하여 머신이 부팅될 때 이 트리를 빌드하고 디바이스가 추가되거나 제거될 때 트리를 업데이트합니다.
디바이스 트리의 각 노드를 디바이스 노드 또는 devnode라고 합니다. devnode는 디바이스 드라이버에 대한 디바이스 개체 와 시스템에서 유지 관리하는 내부 정보로 구성됩니다. 따라서 각 디바이스 스택에 대한 devnode가 있습니다.
PnP 관리자는 버스 드라이버에 IRP_MN_QUERY_DEVICE_RELATIONS 요청을 사용하여 자식 디바이스 목록을 요청합니다. 버스 드라이버는 버스 프로토콜에 따라 자식 목록을 결정합니다. 예를 들어 Windows ACPI 드라이버 Acpi.sys ACPI 네임스페이스를 찾고, PCI 드라이버가 PCI 구성 공간을 쿼리하고, USB 허브 드라이버가 USB 버스 프로토콜을 따릅니다.
디바이스 트리는 계층 구조이며 버스의 디바이스는 버스 어댑터, 컨트롤러 또는 기타 버스 디바이스의 "자식"으로 표시됩니다. (버스 디바이스는 다른 물리적, 논리적 또는 가상 디바이스를 연결할 수 있는 모든 디바이스입니다.) 장치 관리자 사용하여 디바이스 트리에서 디바이스의 계층 구조를 볼 수 있으며 연결로 디바이스를 볼 수 있는 보기 옵션을 선택할 수 있습니다.
디바이스 트리의 계층 구조는 디바이스가 컴퓨터에 연결된 구조를 반영합니다. PnP 관리자는 디바이스를 관리할 때 이 계층 구조를 사용합니다. 예를 들어 사용자가 이전 그림이 나타내는 컴퓨터에서 USB 컨트롤러를 분리하도록 요청하는 경우 PnP 관리자는 디바이스 트리에서 이 작업으로 인해 다른 세 디바이스(USB 허브, 조이스틱 및 카메라)도 분리될 것이라고 결정합니다. PnP 관리자가 USB 컨트롤러에 대한 드라이버를 쿼리하여 컨트롤러를 제거하는 것이 안전한지 확인하면 컨트롤러의 하위 항목(허브, 조이스틱 및 카메라)의 드라이버도 쿼리합니다.
디바이스 트리가 동적입니다. 디바이스가 컴퓨터에 추가되고 컴퓨터에서 제거되면 PnP 관리자(드라이버와 함께)는 시스템의 디바이스에 대한 현재 그림을 유지 관리합니다.
디바이스 트리에 표시되는 계층 관계 외에 컴퓨터의 디바이스 간에는 다른 관계가 있습니다. 여기에는 제거 관계 및 배출 관계가 포함되며, 자세한 내용은 IRP_MN_QUERY_DEVICE_RELATIONS 참조 페이지를 참조하세요.
버스 디바이스가 자식 디바이스 앞에 구성되어 있다는 점을 제외하고는 디바이스 트리가 빌드되는 순서를 가정할 수 없습니다. 예를 들어 버스의 한 디바이스가 버스의 다른 디바이스 앞에 구성되어 있다고 가정해서는 안 됩니다.