하드웨어 리소스
하드웨어 리소스는 주변 장치와 시스템 프로세서가 서로 통신할 수 있도록 하는 할당 가능한 주소 지정 가능한 버스 경로입니다. 하드웨어 리소스에는 일반적으로 I/O 포트 주소, 인터럽트 벡터 및 버스 상대 메모리 주소 블록이 포함됩니다.
시스템이 디바이스 instance 통신하기 전에 PnP 관리자는 사용 가능한 리소스와 디바이스 instance 사용할 수 있는 리소스에 대한 지식에 따라 디바이스 instance 하드웨어 리소스를 할당해야 합니다. 리소스는 디바이스 트리 의 각 디바이스 노드에 할당됩니다(표시된 디바이스에 리소스가 필요하고 해당 리소스를 사용할 수 있다고 가정). PnP 관리자는 디바이스 노드와 연결되는 목록을 사용하여 하드웨어 리소스를 추적합니다. 두 가지 유형의 목록을 사용합니다.
리소스 요구 사항 목록
디바이스는 일반적으로 리소스 할당 범위 내에서 작동하도록 설계되었습니다. instance 경우 디바이스에 인터럽트 벡터가 하나만 필요할 수 있지만 범위의 벡터 중 하나를 사용할 수 있습니다. 각 디바이스 instance 대해 PnP 관리자는 디바이스가 작동할 수 있는 모든 하드웨어 리소스 범위를 지정하는 리소스 요구 사항 목록을 유지 관리합니다. 목록의 이름은 PnP 관리자가 디바이스에 할당할 때 이 목록에서 리소스를 선택해야 한다는 사실에서 비롯됩니다.
커널 모드 코드는 IO_RESOURCE_REQUIREMENTS_LIST 구조를 사용하여 리소스 요구 사항 목록을 지정합니다(시스템 루틴에 대한 입력 또는 IRP에 대한 응답으로). 사용자 모드 코드는 PnP 구성 관리자 구조를 PnP 구성 관리자 함수에 대한 입력으로 사용하여 리소스 요구 사항 목록을 지정 합니다.
리소스 목록
PnP 관리자는 디바이스에 리소스를 할당할 때 각 디바이스 instance 할당된 리소스 목록을 만들어 이러한 할당을 추적합니다. 이러한 목록을 리소스 할당 목록이라고 할 수 있지만 해당 이름은 일반적으로 리소스 목록으로 짧아집니다. PnP 관리자는 디바이스가 시스템에 추가되거나 시스템에서 제거되고 리소스가 나중에 다시 할당될 때 리소스 목록 콘텐츠를 변경할 수 있습니다. (PnP BIOS에서 리소스를 할당할 수도 있습니다. 또한 설치 소프트웨어(INF 파일 또는 사용자 입력 사용)는 PnP 관리자가 특정 리소스를 디바이스에 할당하도록 강제할 수 있습니다.)
커널 모드 코드는 CM_RESOURCE_LIST 구조를 사용하여 리소스 목록을 지정합니다(시스템 루틴에 대한 입력 또는 IRP에 대한 응답으로). 사용자 모드 코드는 PnP 구성 관리자 구조를 PnP 구성 관리자 함수에 대한 입력으로 사용하여 리소스 목록을 지정 합니다.
PnP 관리자는 리소스 요구 사항 목록 및 리소스 목록을 레지스트리에 저장하며, 여기서 Regedit.exe 사용하여 볼 수 있습니다. 드라이버는 플러그 앤 플레이 루틴 및 플러그 앤 플레이 부 IRP를 통해 이러한 목록에 간접적으로 액세스할 수 있습니다. 사용자 모드 애플리케이션은 PnP 구성 관리자 함수를 사용할 수 있습니다. (드라이버 및 애플리케이션은 향후 릴리스에서 스토리지 형식이 변경될 수 있으므로 레지스트리 함수를 사용하여 이러한 목록에 직접 액세스해서는 안 됩니다.)
논리 구성
리소스 요구 사항 목록과 리소스 목록 모두 하나 이상의 논리적 구성을 포함합니다. 각 논리 구성은 허용되는 리소스 범위 또는 특정 디바이스 instance 대한 특정 리소스 집합을 식별합니다. 또한 디바이스 instance 대한 각 논리적 구성은 논리적 구성 유형 중 하나에 속합니다. 구성 유형은 아래에 나열되어 있습니다. 동일하거나 다른 유형의 여러 논리 구성이 각 디바이스 instance 할당될 수 있습니다.
리소스 요구 사항 목록에 대한 논리적 구성 유형
기본 구성
플러그 앤 플레이 디바이스에서 제공하는 리소스 범위를 식별하는 리소스 요구 사항 목록입니다. 드라이버는 IRP_MN_QUERY_RESOURCE_REQUIREMENTS IRP를 받으면 이 목록을 반환해야 합니다. (비 PnP 디바이스에 대한 기본 구성은 INF 파일에서 설명할 수 있습니다. 이 경우 디바이스 설치 소프트웨어는 INF 파일을 읽고 PnP 구성 관리자 함수를 호출하여 요구 사항 목록을 만듭니다.)
필터링된 구성
IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP 에 대한 응답으로 드라이버 스택에 제공된 리소스 요구 사항 목록으로, 수정된 다음 드라이버 스택에서 반환될 수 있습니다. PnP 관리자는 결과 필터링된 구성을 리소스 할당의 기준으로 사용합니다.
구성 재정의
기본 구성을 재정의하는 리소스 요구 사항 목록입니다. 일반적으로 디바이스의 INF 파일에 INF DDInstall.LogConfigOverride 섹션이 포함된 경우 디바이스 설치 관리자는 재정의 구성을 만듭니다. 재정의 구성은 디바이스가 시스템에서 물리적으로 제거된 경우 제거되지 않습니다.
리소스 목록에 대한 논리적 구성 유형
부팅 구성
시스템이 부팅될 때 디바이스에 할당된 리소스를 식별하는 리소스 목록이 instance. (PnP 디바이스의 경우 BIOS에서 제공하는 구성입니다. PnP가 아닌 디바이스의 경우 이러한 리소스는 카드 점퍼에 의해 선택될 수 있습니다.) 드라이버는 IRP_MN_QUERY_RESOURCES IRP를 받으면 이 리소스 목록을 반환해야 합니다. (BIOS가 디바이스에서 사용하는 모든 리소스를 확인할 수 없는 경우 부팅 구성은 부분적으로 비어 있을 수 있습니다.) 디바이스가 제거되거나 다시 시작되는 경우 PnP 관리자는 이 목록을 수정할 수 있습니다. PnP가 아닌 디바이스의 경우 강제 구성 대신 이 구성 유형을 사용할 수 있습니다. 이 경우 동일한 강제 구성보다 구성 우선 순위가 낮습니다. 각 디바이스 instance 부팅 구성은 하나만 존재할 수 있습니다.
강제 구성
디바이스 instance 사용해야 하는 리소스를 식별하는 리소스 목록입니다. 강제 구성을 사용하면 PnP 관리자가 디바이스 instance 다른 리소스를 할당할 수 없습니다. 디바이스 설치 관리자는 INF에 포함되거나 사용자로부터 받은 정보를 기반으로 강제 구성을 만들 수 있습니다. 강제 구성은 디바이스가 시스템에서 물리적으로 제거된 경우 제거되지 않습니다. 각 디바이스 instance 대해 하나의 강제 구성만 존재할 수 있습니다.
할당된 구성
디바이스 instance 현재 사용 중인 리소스를 식별하는 리소스 목록입니다. 각 디바이스 instance 대해 할당된 구성이 하나만 있을 수 있습니다.
디바이스 드라이버는 PnP 호환 디바이스의 기본 구성, 필터링된 구성 및 부팅 구성을 결정하고 PnP 관리자가 보낸 IRP에 대한 응답으로 해당 정보를 반환해야 합니다. (자세한 내용은 실행 중인 시스템에 PnP 디바이스 추가를 참조하세요.) 드라이버 설치 소프트웨어는 재정의 구성, 강제 구성 및 PnP가 아닌 디바이스의 경우 부팅 구성을 만들 수 있습니다. PnP 관리자는 각 디바이스 instance 할당된 구성을 유지 관리합니다.
각 구성을 만들 때 우선 순위가 할당됩니다. PnP 관리자가 디바이스 instance 동일한 유형의 여러 논리적 구성이 할당된 것을 발견하면 우선 순위가 가장 높은 디바이스를 먼저 사용하려고 시도합니다. 해당 구성으로 인해 리소스 충돌이 발생하면 다음으로 낮은 우선 순위로 구성을 시도합니다. (구성 우선 순위 목록은 CM_Add_Empty_Log_Conf 참조하세요.)