Compartilhar via


Objetos da Lista de Recursos

The PortCls system driver implements the IResourceList interface for the benefit of miniport drivers. 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 Como iniciar um dispositivo em um Driver de Funções.

Uma lista de recursos contém os seguintes tipos de recursos:

  • Interrupt vectors

  • DMA channels

  • Endereços de porta de E/S

  • Blocos de endereços de memória relativos ao barramento

For information about resource types, see Hardware Resources.

An IResourceList object encapsulates both the translated and untranslated (or "raw") versions of a resource list. Para obter mais informações sobre recursos traduzidos e não traduzidos, consulte Mapeamento Bus-Relative Endereços para Endereços Virtuais.

The IResourceList interface supports the following methods:

IResourceList::AddEntry

IResourceList::AddEntryFromParent

IResourceList::FindTranslatedEntry

IResourceList::FindUntranslatedEntry

IResourceList::NumberOfEntries

IResourceList::NumberOfEntriesOfType

IResourceList::TranslatedList

IResourceList::UntranslatedList

O arquivo de cabeçalho Portcls.h define o conjunto de macros para simplificar o tratamento de objetos de lista de recursos. These macros generate calls to the IResourceList methods. Para obter mais informações, consulte IResourceList.

Além disso, Portcls.h define um par de funções para criar listas de recursos:

PcNewResourceList

PcNewResourceSublist

To start up the devices on an audio adapter card, the operating system calls the adapter driver's start-device routine (see Startup Sequence) and passes in a resource list object as an input parameter. Esta lista contém todos os recursos do sistema atribuídos pelo sistema operacional 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 miniporto 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 cartão do adaptador. For this purpose, the driver typically calls PcNewResourceSublist to create a resource list object for each device. The driver then calls IResourceList::AddEntryFromParent as many times as necessary to copy selected resources from the parent list into the various child lists. Além disso, o driver do adaptador pode atribuir alguns recursos a si mesmo.

Next, the start-device routine calls each port driver's IPort::Init method and passes in the device's resource list object (containing the child list) as an input parameter. Each port driver's IPort::Init method calls the corresponding miniport driver's IMiniportXxx::Init method, which is one of the following:

IMiniportDMus::Init

IMiniportMidi::Init

IMiniportTopology::Init

IMiniportWaveCyclic::Init

IMiniportWavePci::Init

The IPort::Init method passes its resource list object to the IMiniportXxx::Init method as an input parameter. O driver de miniporto pode usar os canais de DMA, 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).