Архитектура семьи PCI

Семья PCI определяет классы драйвера для контроллеров моста PCI и классы куска, используемые драйверами устройств, присоединенных к шине PCI. Как провайдер служб PCI, драйвер контроллера моста PCI сканирует шину PCI и создает кусок для каждого найденного устройства. Каждый кусок тогда запускает соответствие и процесс загрузки для нахождения драйвера для его устройства PCI, и драйвер использует кусок для выполнения коммуникации по шине PCI.

Драйверы для контроллеров моста PCI являются элементами семьи PCI, наследовавшейся от суперкласса в семье. Драйверы отдельных устройств PCI являются клиентами семьи PCI, но обычно являются элементами другой семьи. Драйвер для контроллера Ethernet PCI, например, наследовался от семьи Network IOEthernetController класс, но использование экземпляр семьи PCI IOPCIDevice класс куска для соединения с шиной PCI. Если Вы пишете драйвер для устройства PCI, необходимо считать и этот документ и документ для семьи, от которой фактически наследуется драйвер.

Семья PCI является довольно малочисленной, включая только четыре класса. Figure 2-1 показывает иерархию наследования для семьи PCI. Два класса моста, IOPCIBridge и IOPCI2PCIBridge, управляйте контроллерами моста узла PCI и контроллерами моста от PCI к PCI, соответственно. IOPCIBridge абстрактный суперкласс, объявляющий общий механизм для контроллера моста PCI; специфичные для аппаратных средств подклассы реализуют этот механизм. IOPCI2PCIBridge реальный класс, подключающий два специфичных для аппаратных средств драйвера контроллера моста.

  Иерархия наследования семьи PCI рисунка 2-1
PCI family inheritance hierarchy

Эти два класса устройства, IOPCIDevice и IOAGPDevice, представляйте точки доступа для драйверов PCI и устройств AGP. IOPCIDevice основной класс куска для семьи PCI, представляя любое устройство PCI в разъеме PCI. Для устройств AGP класс куска IOAGPDevice. Объект драйвера для устройства PCI соответствует против куска, с помощью него, чтобы установить соединение с шиной PCI и получить доступ к аппаратным регистрам на устройстве. Поскольку IOAGPDevice подкласс IOPCIDevice, весь из IOPCIDevice методы могут также использоваться на IOAGPDevice.

Figure 2-2 показывает, что типичное расположение объектов основывалось на шине PCI. Запускаясь с нижней части, IOPlatformDevice кусок представляет некоторый контроллер, встроенный логической плате компьютера. В этом случае это - контроллер моста узла PCI. Надлежащий экземпляр IOPCIBridge подкласс служит драйвером для контроллера моста PCI. IOPCIBridge драйвер сканирует шину PCI и создает IOPCIDevice или IOAGPDevice для каждого устройства это находит; в этом случае это создает два регулярных куска устройства PCI и кусок устройства AGP. Эти куски тогда инициировали соответствие драйвера и загрузку для их устройств. Одно из устройств PCI, оказывается, плата Ethernet и другой видеокарта AGP. Поскольку остальному устройству не устанавливали драйвер, это остается несопоставленным.

  Семья PCI рисунка 2-2 возражает в Реестре I/O
PCI family objects in the I/O Registry