Objetos de lista de recursos
O driver do sistema PortCls implementa a interface IResourceList em benefício de drivers de miniport. Um objeto IResourceList representa uma lista de recursos de configuração, que é uma lista dos recursos de hardware do sistema que o gerenciador de Plug and Play atribui a um dispositivo no momento da inicialização do dispositivo. Para obter mais informações sobre a atribuição de recursos no momento da inicialização, consulte Iniciando um dispositivo em um driver de função.
Uma lista de recursos contém os seguintes tipos de recursos:
Interromper vetores
Canais de DMA
Endereços de porta de E/S
Blocos de endereços de memória relativos ao barramento
Para obter informações sobre tipos de recursos, consulte Recursos de hardware.
Um objeto IResourceList encapsula as versões traduzidas e não traduzidas (ou "brutas") de uma lista de recursos. Para obter mais informações sobre recursos traduzidos e não traduzidos, consulte Mapeamento Bus-Relative endereços para endereços virtuais.
A interface IResourceList dá suporte aos seguintes métodos:
IResourceList::AddEntryFromParent
IResourceList::FindTranslatedEntry
IResourceList::FindUntranslatedEntry
IResourceList::NumberOfEntries
IResourceList::NumberOfEntriesOfType
IResourceList::UntranslatedList
O arquivo de cabeçalho Portcls.h define o conjunto de macros para simplificar o tratamento de objetos de lista de recursos. Essas macros geram chamadas para os métodos IResourceList . Para obter mais informações, consulte IResourceList.
Além disso, Portcls.h define um par de funções para criar listas de recursos:
Para iniciar os dispositivos em um adaptador de áudio cartão, o sistema operacional chama a rotina do dispositivo inicial do driver do adaptador (consulte Sequência de Inicialização) e passa um objeto de lista de recursos como um parâmetro de entrada. Essa lista contém todos os recursos do sistema que o sistema operacional atribuiu ao driver do adaptador.
Na rotina do dispositivo inicial, o driver do adaptador inicia todos os dispositivos do driver do adaptador (dispositivo de onda, dispositivo MIDI e assim por diante). Para gerenciar cada dispositivo, o driver do adaptador cria um objeto de driver de miniporte e seu objeto de driver de porta associado. O driver do adaptador divide os recursos na lista de recursos entre os vários dispositivos no adaptador cartão. Para essa finalidade, o driver normalmente chama PcNewResourceSublist para criar um objeto de lista de recursos para cada dispositivo. Em seguida, o driver chama IResourceList::AddEntryFromParent quantas vezes forem necessárias para copiar os recursos selecionados da lista pai para as várias listas filho. Além disso, o driver do adaptador pode atribuir alguns recursos a si mesmo.
Em seguida, a rotina start-device chama o método IPort::Init de cada driver de porta e passa o objeto de lista de recursos do dispositivo (que contém a lista filho) como um parâmetro de entrada. O método IPort::Init de cada driver de porta chama o método IMiniportXxx::Init do driver de miniport correspondente, que é um dos seguintes:
O método IPort::Init passa seu objeto de lista de recursos para o método IMiniportXxx::Init como um parâmetro de entrada. O driver de miniporta pode usar os canais de AMD, interrupções e outros recursos do sistema na lista de recursos.
Para obter um exemplo de código, consulte o driver de áudio de exemplo Sb16 no WDK (Microsoft Windows Driver Kit).