PCI in the I/O Kit is handled by the
IOPCIFamily, which, just like the
IOUSBFamily, is implemented in its own KEXT. The
IOPCIFamily is simpler than the
IOUSBFamily in terms of the number of provided classes. This means there are fewer building blocks to help us out when implementing drivers. PCI is more low-level than USB from a driver point-of-view, and, as such, the writing of drivers for PCI devices is often more complex. Figure 9-2 shows the class hierarchy of the
IOPCIDevice object acts a nub or provider for all PCI-based devices, including PCIe, Thunderbolt, and ...