Partilhar via


Interface IResourceList (portcls.h)

A interface IResourceList fornece uma abstração de 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. Os recursos na lista podem incluir vetores de interrupção, canais de DMA, endereços de porta de E/S e blocos de endereços de memória relativos ao barramento. Para obter mais informações, consulte Iniciando um dispositivo em um driver de função.

O driver do sistema PortCls implementa a interface IResourceList e a expõe a drivers de adaptador. Quando o PortCls chama a rotina de inicialização de dispositivo de um driver de adaptador (consulte Iniciando um dispositivo), ele passa um objeto IResourceList como um dos parâmetros de chamada.

O arquivo de cabeçalho portcls.h define o conjunto de macros para simplificar o tratamento de objetos de lista de recursos. Para cada tipo de recurso, as quatro macros a seguir são definidas:

ULONG
  NumberOfpluralresourcename(
    void
 ); 

PCM_PARTIAL_RESOURCE_DESCRIPTOR
  FindTranslatedsingularresourcename(
    ULONG  Index
    );

PCM_PARTIAL_RESOURCE_DESCRIPTOR
  FindUntranslatedsingularresourcename(
    ULONG  Index
    );

NTSTATUS
  AddsingularresourcenameFromParent(
    PRESOURCELIST  Parent,
    ULONG  Index
    );

A tabela a seguir mostra os tipos de recursos para os quais essas macros são definidas.

Nome do tipo de recurso Formulário Singular Plural
CmResourceTypePort Porta Portas
CmResourceTypeInterrupt Interromper Interrompe
CmResourceTypeMemory Memória Memórias
CmResourceTypeDma DMA Dmas
CmResourceTypeDeviceSpecific DeviceSpecific DeviceSpecifics
CmResourceTypeBusNumber BusNumber Números de Ônibus
CmResourceTypePrivate Privado Privates
CmResourceTypeAssignedResource AssignedResource AssignedResources
CmResourceTypeSubAllocateFrom SubAllocateFrom SubAllocateFroms
 

Para obter os significados dos nomes de tipo de recurso na coluna à esquerda acima, consulte CM_PARTIAL_RESOURCE_DESCRIPTOR.

A tabela a seguir lista explicitamente as quatro macros que portcls.h define para cada um dos nove tipos de recursos. À direita de cada macro está a chamada equivalente a um método IResourceList.

Macro Chamada IResourceList equivalente
NumberOfPorts() NumberOfEntriesOfType(CmResourceTypePort)
FindTranslatedPort(n) FindTranslatedEntry(CmResourceTypePort,(n))
FindUntranslatedPort(n) FindUntranslatedEntry(CmResourceTypePort,(n))
AddPortFromParent(p,n) AddEntryFromParent((p),CmResourceTypePort,(n))
NumberOfInterrupts() NumberOfEntriesOfType(CmResourceTypeInterrupt)
FindTranslatedInterrupt(n) FindTranslatedEntry(CmResourceTypeInterrupt,(n))
FindUntranslatedInterrupt(n) FindUntranslatedEntry(CmResourceTypeInterrupt,(n))
AddInterruptFromParent(p,n) AddEntryFromParent((p),CmResourceTypeInterrupt,(n))
NumberOfMemories() NumberOfEntriesOfType(CmResourceTypeMemory)
FindTranslatedMemory(n) FindTranslatedEntry(CmResourceTypeMemory,(n))
FindUntranslatedMemory(n) FindUntranslatedEntry(CmResourceTypeMemory,(n))
AddMemoryFromParent(p,n) AddEntryFromParent((p),CmResourceTypeMemory,(n))
NumberOfDmas() NumberOfEntriesOfType(CmResourceTypeDma)
FindTranslatedDma(n) FindTranslatedEntry(CmResourceTypeDma,(n))
FindUntranslatedDma(n) FindUntranslatedEntry(CmResourceTypeDma,(n))
AddDmaFromParent(p,n) AddEntryFromParent((p),CmResourceTypeDma,(n))
NumberOfDeviceSpecifics() NumberOfEntriesOfType(CmResourceTypeDeviceSpecific)
FindTranslatedDeviceSpecific(n) FindTranslatedEntry(CmResourceTypeDeviceSpecific,(n))
FindUntranslatedDeviceSpecific(n) FindUntranslatedEntry(CmResourceTypeDeviceSpecific,(n))
AddDeviceSpecificFromParent(p,n) AddEntryFromParent((p),CmResourceTypeDeviceSpecific,(n))
NumberOfBusNumbers() NumberOfEntriesOfType(CmResourceTypeBusNumber)
FindTranslatedBusNumber(n) FindTranslatedEntry(CmResourceTypeBusNumber,(n))
FindUntranslatedBusNumber(n) FindUntranslatedEntry(CmResourceTypeBusNumber,(n))
AddBusNumberFromParent(p,n) AddEntryFromParent((p),CmResourceTypeBusNumber,(n))
NumberOfDevicePrivates() NumberOfEntriesOfType(CmResourceTypeDevicePrivate)
FindTranslatedDevicePrivate(n) FindTranslatedEntry(CmResourceTypeDevicePrivate,(n))
FindUntranslatedDevicePrivate(n) FindUntranslatedEntry(CmResourceTypeDevicePrivate,(n))
AddDevicePrivateFromParent(p,n) AddEntryFromParent((p),CmResourceTypeDevicePrivate,(n))
NumberOfAssignedResources() NumberOfEntriesOfType(CmResourceTypeAssignedResource)
FindTranslatedAssignedResource(n) FindTranslatedEntry(CmResourceTypeAssignedResource,(n))
FindUntranslatedAssignedResource(n) FindUntranslatedEntry(CmResourceTypeAssignedResource,(n))
AddAssignedResourceFromParent(p,n) AddEntryFromParent((p),CmResourceTypeAssignedResource,(n))
NumberOfSubAllocateFroms() NumberOfEntriesOfType(CmResourceTypeSubAllocateFrom)
FindTranslatedSubAllocateFrom(n) FindTranslatedEntry(CmResourceTypeSubAllocateFrom,(n))
FindUntranslatedSubAllocateFrom(n) FindUntranslatedEntry(CmResourceTypeSubAllocateFrom,(n))
AddSubAllocateFromFromParent(p,n) AddEntryFromParent((p),CmResourceTypeSubAllocateFrom,(n))

Herança

A interface IResourceList herda da interface IUnknown.

Métodos

A interface IResourceList tem esses métodos.

 
IResourceList::AddEntry

O método AddEntry adiciona uma entrada a uma lista de recursos.
IResourceList::AddEntryFromParent

O método AddEntryFromParent adiciona a uma lista de recursos uma entrada encontrada na lista pai da lista de recursos.
IResourceList::FindTranslatedEntry

O método FindTranslatedEntry retorna um ponteiro para uma entrada traduzida do tipo especificado ou NULL se nenhuma entrada desse tipo for encontrada.
IResourceList::FindUntranslatedEntry

O método FindUntranslatedEntry retorna um ponteiro para uma entrada não traduzida do tipo especificado ou NULL se nenhum ponteiro desse tipo for encontrado.
IResourceList::NumberOfEntries

O método NumberOfEntries retorna o número de itens de recurso na lista de recursos.
IResourceList::NumberOfEntriesOfType

O método NumberOfEntriesOfType retorna o número de itens de recurso de um determinado tipo na lista de recursos. Para cada tipo de recurso, uma macro é definida para chamar esse método, conforme descrito anteriormente.
IResourceList::TranslatedList

O método TranslatedList retorna a lista de recursos traduzidos.
IResourceList::UntranslatedList

O método UntranslatedList retorna a lista de recursos não traduzidos.

Requisitos

Requisito Valor
da Plataforma de Destino Windows
cabeçalho portcls.h