리소스 목록 개체
PortCls 시스템 드라이버는 미니포트 드라이버의 이점을 위해 IResourceList 인터페이스를 구현합니다. IResourceList 개체는 플러그 앤 플레이 관리자가 디바이스 시작 시 디바이스에 할당하는 시스템 하드웨어 리소스 목록인 구성 리소스 목록을 나타냅니다. 시작 시 리소스 할당에 대한 자세한 내용은 함수 드라이버에서 디바이스 시작을 참조하세요.
리소스 목록에는 다음과 같은 유형의 리소스가 포함됩니다.
인터럽트 벡터
DMA 채널
I/O 포트 주소
버스 상대 메모리 주소 블록
리소스 종류에 대한 자세한 내용은 하드웨어 리소스를 참조하세요.
IResourceList 개체는 리소스 목록의 번역된 버전과 변환되지 않은(또는 "원시") 버전을 모두 캡슐화합니다. 번역 및 번역되지 않은 리소스에 대한 자세한 내용은 Bus-Relative 주소 매핑을 참조하세요.
IResourceList 인터페이스는 다음 메서드를 지원합니다.
IResourceList::AddEntryFromParent
IResourceList::FindTranslatedEntry
IResourceList::FindUntranslatedEntry
IResourceList::NumberOfEntries
IResourceList::NumberOfEntriesOfType
IResourceList::UntranslatedList
헤더 파일 Portcls.h는 리소스 목록 개체의 처리를 간소화하기 위해 매크로 집합을 정의합니다. 이러한 매크로는 IResourceList 메서드에 대한 호출을 생성합니다. 자세한 내용은 IResourceList를 참조하세요.
또한 Portcls.h는 리소스 목록을 만들기 위한 함수 쌍을 정의합니다.
오디오 어댑터 카드 디바이스를 시작하려면 운영 체제에서 어댑터 드라이버의 시작 디바이스 루틴(시작 시퀀스 참조)을 호출하고 리소스 목록 개체를 입력 매개 변수로 전달합니다. 이 목록에는 운영 체제가 어댑터 드라이버에 할당한 모든 시스템 리소스가 포함되어 있습니다.
시작 디바이스 루틴에서 어댑터 드라이버는 모든 어댑터 드라이버의 디바이스(웨이브 디바이스, MIDI 디바이스 등)를 시작합니다. 각 디바이스를 관리하기 위해 어댑터 드라이버는 미니포트 드라이버 개체와 연결된 포트 드라이버 개체를 만듭니다. 어댑터 드라이버는 리소스 목록의 리소스를 어댑터 카드 다양한 디바이스로 나눕니다. 이를 위해 드라이버는 일반적으로 PcNewResourceSublist 를 호출하여 각 디바이스에 대한 리소스 목록 개체를 만듭니다. 그런 다음 드라이버는 부모 목록에서 선택한 리소스를 다양한 자식 목록으로 복사하는 데 필요한 만큼 IResourceList::AddEntryFromParent 를 호출합니다. 또한 어댑터 드라이버는 일부 리소스를 자체에 할당할 수 있습니다.
다음으로, start-device 루틴은 각 포트 드라이버의 IPort::Init 메서드를 호출하고 디바이스의 리소스 목록 개체(자식 목록 포함)를 입력 매개 변수로 전달합니다. 각 포트 드라이버의 IPort::Init 메서드는 다음 중 하나인 해당 미니포트 드라이버의 IMiniportXxx::Init 메서드를 호출합니다.
IPort::Init 메서드는 해당 리소스 목록 개체를 입력 매개 변수로 IMiniportXxx::Init 메서드에 전달합니다. 그런 다음 미니포트 드라이버는 리소스 목록의 DMA 채널, 인터럽트 및 기타 시스템 리소스를 사용할 수 있습니다.
코드 예제는 Microsoft WDK(Windows 드라이버 키트)의 Sb16 샘플 오디오 드라이버를 참조하세요.