Condividi tramite


Interfaccia IResourceList (portcls.h)

L'interfaccia IResourceList fornisce un'astrazione di un elenco di risorse di configurazione, ovvero un elenco delle risorse hardware di sistema assegnate dal gestore Plug and Play a un dispositivo in fase di avvio. Le risorse nell'elenco possono includere vettori di interrupt, canali DMA, indirizzi di porta I/O e blocchi di indirizzi di memoria relativi al bus. Per altre informazioni, vedere Avvio di un dispositivo in un driver di funzione.

Il driver di sistema PortCls implementa l'interfaccia IResourceList e la espone ai driver dell'adattatore. Quando PortCls chiama la routine di avvio del dispositivo di un driver di adattatore (vedere Avvio di un dispositivo), passa un oggetto IResourceList come uno dei parametri di chiamata.

Il file di intestazione portcls.h definisce il set di macro per semplificare la gestione degli oggetti elenco di risorse. Per ogni tipo di risorsa vengono definite le quattro macro seguenti:

ULONG
  NumberOfpluralresourcename(
    void
 ); 

PCM_PARTIAL_RESOURCE_DESCRIPTOR
  FindTranslatedsingularresourcename(
    ULONG  Index
    );

PCM_PARTIAL_RESOURCE_DESCRIPTOR
  FindUntranslatedsingularresourcename(
    ULONG  Index
    );

NTSTATUS
  AddsingularresourcenameFromParent(
    PRESOURCELIST  Parent,
    ULONG  Index
    );

Nella tabella seguente vengono illustrati i tipi di risorsa per i quali sono definite queste macro.

Nome tipo di risorsa Forma singolare Plurale
CmResourceTypePort Porto Porte
CmResourceTypeInterrupt Interrompere Interrompe
CmResourceTypeMemory Memoria Ricordi
CmResourceTypeDma Dma Dmas
CmResourceTypeDeviceSpecific DeviceSpecific DeviceSpecifics
CmResourceTypeBusNumber BusNumber BusNumbers
CmResourceTypePrivate Privato Parti intime
CmResourceTypeAssignedResource AssignedResource AssignedResources
CmResourceTypeSubAllocateFrom SubAllocateFrom SubAllocateFroms
 

Per i significati dei nomi dei tipi di risorsa nella colonna sinistra precedente, vedere CM_PARTIAL_RESOURCE_DESCRIPTOR.

Nella tabella seguente sono elencate in modo esplicito le quattro macro definite da portcls.h per ognuno dei nove tipi di risorse. A destra di ogni macro è la chiamata equivalente a un metodo IResourceList.

Macro Chiamata 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))

Eredità

L'interfaccia IResourceList eredita dall'interfaccia IUnknown.

Metodi

L'interfaccia IResourceList dispone di questi metodi.

 
IResourceList::AddEntry

Il metodo AddEntry aggiunge una voce a un elenco di risorse.
IResourceList::AddEntryFromParent

Il metodo AddEntryFromParent aggiunge a un elenco di risorse una voce presente nell'elenco padre dell'elenco di risorse.
IResourceList::FindTranslatedEntry

Il metodo FindTranslatedEntry restituisce un puntatore a una voce tradotta del tipo specificato oppure NULL se non viene trovata alcuna voce di questo tipo.
IResourceList::FindUntranslatedEntry

Il metodo FindUntranslatedEntry restituisce un puntatore a una voce non tradotta del tipo specificato oppure NULL se non viene trovato alcun puntatore di questo tipo.
IResourceList::NumberOfEntries

Il metodo NumberOfEntries restituisce il numero di elementi di risorsa nell'elenco di risorse.
IResourceList::NumberOfEntriesOfType

Il metodo NumberOfEntriesOfType restituisce il numero di elementi di risorsa di un determinato tipo nell'elenco di risorse. Per ogni tipo di risorsa, viene definita una macro per chiamare questo metodo come descritto in precedenza.
IResourceList::TranslatedList

Il metodo TranslatedList restituisce l'elenco delle risorse tradotte.
IResourceList::UntranslatedList

Il metodo UntranslatedList restituisce l'elenco di risorse non tradotte.

Fabbisogno

Requisito Valore
piattaforma di destinazione Finestre
intestazione portcls.h