IResourceList 接口 (portcls.h)
IResourceList
介面提供組態資源清單的抽象概念,這是隨插即用管理員在啟動時指派給裝置的系統硬體資源清單。 清單中的資源可以包含插斷向量、DMA 通道、I/O 埠位址,以及總線相對記憶體位址區塊。 如需詳細資訊,請參閱 在函式驅動程式中啟動裝置。
PortCls 系統驅動程式會實作 IResourceList
介面,並將其公開給配接器驅動程式。 當 PortCls 呼叫配接器驅動程式的裝置啟動例程時(請參閱 啟動裝置),它會傳遞 IResourceList
對象作為其中一個呼叫參數。
標頭檔 portcls.h 會定義一組巨集,以簡化資源清單對象的處理。 針對每種資源類型,會定義下列四個巨集:
ULONG
NumberOfpluralresourcename(
void
);
PCM_PARTIAL_RESOURCE_DESCRIPTOR
FindTranslatedsingularresourcename(
ULONG Index
);
PCM_PARTIAL_RESOURCE_DESCRIPTOR
FindUntranslatedsingularresourcename(
ULONG Index
);
NTSTATUS
AddsingularresourcenameFromParent(
PRESOURCELIST Parent,
ULONG Index
);
下表顯示定義這些巨集的資源類型。
資源類型名稱 | 單一窗體 | 複數表單 |
---|---|---|
CmResourceTypePort | 港口 | 港口 |
CmResourceTypeInterrupt | 中斷 | 中斷 |
CmResourceTypeMemory | 記憶 | 記憶 |
CmResourceTypeDma | Dma | Dmas |
CmResourceTypeDeviceSpecific | DeviceSpecific | DeviceSpecifics |
CmResourceTypeBusNumber | BusNumber | BusNumbers |
CmResourceTypePrivate | 私人 | 士卒 |
CmResourceTypeAssignedResource | AssignedResource | AssignedResources |
CmResourceTypeSubAllocateFrom | SubAllocateFrom | SubAllocateFroms |
如需上述左欄中資源類型名稱的意義,請參閱 CM_PARTIAL_RESOURCE_DESCRIPTOR。
下表明確列出 portcls.h 為每個九個資源類型定義的四個巨集。 每個巨集右邊都是對 IResourceList
方法的對等呼叫。
巨集 | 對等的 IResourceList 呼叫 |
---|---|
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)) |
遺產
IResourceList 介面繼承自 IUnknown 介面。
方法
IResourceList 介面具有這些方法。
IResourceList::AddEntry AddEntry 方法會將專案新增至資源清單。 |
IResourceList::AddEntryFromParent AddEntryFromParent 方法會將專案新增至資源清單的父清單中找到的專案。 |
IResourceList::FindTranslatedEntry FindTranslatedEntry 方法會傳回指定類型之翻譯專案的指標,如果沒有找到這類專案,則傳回 NULL。 |
IResourceList::FindUntranslatedEntry FindUntranslatedEntry 方法會傳回指定型別之未轉譯專案的指標,如果沒有找到這類指標,則傳回 NULL。 |
IResourceList::NumberOfEntries NumberOfEntries 方法會傳回資源清單中的資源項目數目。 |
IResourceList::NumberOfEntriesOfType NumberOfEntriesOfType 方法會傳回資源清單中指定類型的資源項目數目。 針對每個資源類型,會定義巨集來呼叫此方法,如先前所述。 |
IResourceList::TranslatedList TranslatedList 方法會傳回翻譯的資源清單。 |
IResourceList::UntranslatedList UntranslatedList 方法會傳回未傳輸的資源清單。 |
要求
要求 | 價值 |
---|---|
目標平臺 | 窗戶 |
標頭 | portcls.h |