---
title: IOPCIDevice
framework: kernel
role: symbol
role_heading: Class
path: kernel/iopcidevice
---

# IOPCIDevice

An IOService class representing a PCI device.

## Declaration

```occ
class IOPCIDevice : IOService
```

## Overview

Overview The discovery of a PCI device by the PCI bus family results in an instance of the IOPCIDevice being created and published. It provides services for looking up and mapping memory mapped hardware, and access to the PCI configuration and I/O spaces. Matching Supported by IOPCIDevice

Two types of matching are available, OpenFirmware name matching and PCI register matching. Currently, only one of these two matching schemes can be used in the same property table. OpenFirmware Name Matching

IOService performs matching based on the IONameMatch property (see IOService). IOPCIDevices created with OpenFirmware device tree entries will name match based on the standard OpenFirmware name matching properties. PCI Register Matching

A PCI device driver can also match on the values of certain config space registers. In each case, several matching values can be specified, and an optional mask for the value of the config space register may follow the value, preceded by an '&' character. kIOPCIMatchKey, "IOPCIMatch" The kIOPCIMatchKey property matches the vendor and device ID (0x00) register, or the subsystem register (0x2c). kIOPCIPrimaryMatchKey, "IOPCIPrimaryMatch" The kIOPCIPrimaryMatchKey property matches the vendor and device ID (0x00) register. kIOPCISecondaryMatchKey, "IOPCISecondaryMatch" The kIOPCISecondaryMatchKey property matches the subsystem register (0x2c). kIOPCIClassMatchKey, "IOPCIClassMatch" The kIOPCIClassMatchKey property matches the class code register (0x08). The default mask for this register is 0xffffff00. Examples: &ltkey&gtIOPCIMatch&lt/key&gt &ltstring&gt0x00261011&lt/string&gt Matches a device whose vendor ID is 0x1011, and device ID is 0x0026, including subsystem IDs. &ltkey&gtIOPCIMatch&lt/key&gt &ltstring&gt0x00789004&0x00ffffff 0x78009004&0x0xff00ffff&lt/string&gt Matches with any device with a vendor ID of 0x9004, and a device ID of 0xzz78 or 0x78zz, where 'z' is don't care. &ltkey&gtIOPCIClassMatch&lt/key&gt &ltstring&gt0x02000000&0xffff0000&lt/string&gt Matches a device whose class code is 0x0200zz, an ethernet device.

## Topics

### Miscellaneous

- [configRead16](kernel/iopcidevice/1810221-configread16.md)
- [configRead32](kernel/iopcidevice/1810249-configread32.md)
- [configRead8](kernel/iopcidevice/1810282-configread8.md)
- [configWrite16](kernel/iopcidevice/1810325-configwrite16.md)
- [configWrite32](kernel/iopcidevice/1810356-configwrite32.md)
- [configWrite8](kernel/iopcidevice/1810381-configwrite8.md)
- [enablePCIPowerManagement](kernel/iopcidevice/1810420-enablepcipowermanagement.md)
- [extendedConfigRead16](kernel/iopcidevice/1810448-extendedconfigread16.md)
- [extendedConfigRead32](kernel/iopcidevice/1810495-extendedconfigread32.md)
- [extendedConfigRead8](kernel/iopcidevice/1810539-extendedconfigread8.md)
- [extendedConfigWrite16](kernel/iopcidevice/1810577-extendedconfigwrite16.md)
- [extendedConfigWrite32](kernel/iopcidevice/1810617-extendedconfigwrite32.md)
- [extendedConfigWrite8](kernel/iopcidevice/1810659-extendedconfigwrite8.md)
- [extendedFindPCICapability](kernel/iopcidevice/1810707-extendedfindpcicapability.md)
- [findPCICapability](kernel/iopcidevice/1810749-findpcicapability.md)
- [getBusNumber](kernel/iopcidevice/1810790-getbusnumber.md)
- [getDeviceMemoryWithRegister](kernel/iopcidevice/1810831-getdevicememorywithregister.md)
- [getDeviceNumber](kernel/iopcidevice/1810861-getdevicenumber.md)
- [getFunctionNumber](kernel/iopcidevice/1810892-getfunctionnumber.md)
- [hasPCIPowerManagement](kernel/iopcidevice/1810931-haspcipowermanagement.md)
- [ioDeviceMemory](kernel/iopcidevice/1810959-iodevicememory.md)
- [ioRead16](kernel/iopcidevice/1810986-ioread16.md)
- [ioRead32](kernel/iopcidevice/1811005-ioread32.md)
- [ioRead8](kernel/iopcidevice/1811039-ioread8.md)
- [ioWrite16](kernel/iopcidevice/1811083-iowrite16.md)
- [ioWrite32](kernel/iopcidevice/1811113-iowrite32.md)
- [ioWrite8](kernel/iopcidevice/1811151-iowrite8.md)
- [mapDeviceMemoryWithRegister](kernel/iopcidevice/1811470-mapdevicememorywithregister.md)
- [setBusMasterEnable](kernel/iopcidevice/1811490-setbusmasterenable.md)
- [setConfigBits](kernel/iopcidevice/1811511-setconfigbits.md)
- [setIOEnable](kernel/iopcidevice/1811528-setioenable.md)
- [setMemoryEnable](kernel/iopcidevice/1811543-setmemoryenable.md)

### Instance Variables

- [reserved](kernel/iopcidevice/reserved.md)

### Instance Methods

- [ClientCrashed_Impl](kernel/iopcidevice/3736273-clientcrashed_impl.md)
- [Close](pcidriverkit/iopcidevice/close.md)
- [ConfigurationRead16](pcidriverkit/iopcidevice/configurationread16.md)
- [ConfigurationRead32](pcidriverkit/iopcidevice/configurationread32.md)
- [ConfigurationRead8](pcidriverkit/iopcidevice/configurationread8.md)
- [ConfigurationWrite16](pcidriverkit/iopcidevice/configurationwrite16.md)
- [ConfigurationWrite32](pcidriverkit/iopcidevice/configurationwrite32.md)
- [ConfigurationWrite8](pcidriverkit/iopcidevice/configurationwrite8.md)
- [ConfigureInterrupts](kernel/iopcidevice/3919729-configureinterrupts.md)
- [ConfigureInterrupts_Impl](kernel/iopcidevice/3919730-configureinterrupts_impl.md)
- [Dispatch](kernel/iopcidevice/3180683-dispatch.md)
- [EnablePCIPowerManagement](kernel/iopcidevice/3516629-enablepcipowermanagement.md)
- [EnablePCIPowerManagement_Impl](kernel/iopcidevice/3516630-enablepcipowermanagement_impl.md)
- [FindPCICapability](kernel/iopcidevice/3516632-findpcicapability.md)
- [FindPCICapability_Impl](kernel/iopcidevice/3516633-findpcicapability_impl.md)
- [GetBARInfo](kernel/iopcidevice/3861819-getbarinfo.md)
- [GetBARInfo_Impl](kernel/iopcidevice/3861820-getbarinfo_impl.md)
- [GetBusDeviceFunction](kernel/iopcidevice/3516635-getbusdevicefunction.md)
- [GetBusDeviceFunction_Impl](kernel/iopcidevice/3516636-getbusdevicefunction_impl.md)
- [GetLinkSpeed](kernel/iopcidevice/3943407-getlinkspeed.md)
- [GetLinkSpeed_Impl](kernel/iopcidevice/3943408-getlinkspeed_impl.md)
- [HasPCIPowerManagement](kernel/iopcidevice/3516638-haspcipowermanagement.md)
- [HasPCIPowerManagement_Impl](kernel/iopcidevice/3516639-haspcipowermanagement_impl.md)
- [MemoryRead16](pcidriverkit/iopcidevice/memoryread16-9qkdh.md)
- [MemoryRead16](pcidriverkit/iopcidevice/memoryread16-50bq8.md)
- [MemoryRead32](pcidriverkit/iopcidevice/memoryread32-60hg9.md)
- [MemoryRead32](pcidriverkit/iopcidevice/memoryread32-84jap.md)
- [MemoryRead64](pcidriverkit/iopcidevice/memoryread64-9ntrf.md)
- [MemoryRead64](pcidriverkit/iopcidevice/memoryread64-37uob.md)
- [MemoryRead8](pcidriverkit/iopcidevice/memoryread8-1edw0.md)
- [MemoryRead8](pcidriverkit/iopcidevice/memoryread8-7b2zp.md)
- [MemoryWrite16](pcidriverkit/iopcidevice/memorywrite16-8k6ch.md)
- [MemoryWrite16](pcidriverkit/iopcidevice/memorywrite16-534yk.md)
- [MemoryWrite32](pcidriverkit/iopcidevice/memorywrite32-ow7r.md)
- [MemoryWrite32](pcidriverkit/iopcidevice/memorywrite32-4pmh.md)
- [MemoryWrite64](pcidriverkit/iopcidevice/memorywrite64-8qyob.md)
- [MemoryWrite64](pcidriverkit/iopcidevice/memorywrite64-nvpu.md)
- [MemoryWrite8](pcidriverkit/iopcidevice/memorywrite8-fzh6.md)
- [MemoryWrite8](pcidriverkit/iopcidevice/memorywrite8-1uey6.md)
- [Open](pcidriverkit/iopcidevice/open.md)
- [Reset](kernel/iopcidevice/3943410-reset.md)
- [Reset_Impl](kernel/iopcidevice/3943411-reset_impl.md)
- [RestoreDeviceState](kernel/iopcidevice/3857680-restoredevicestate.md)
- [RestoreDeviceState_Impl](kernel/iopcidevice/3857681-restoredevicestate_impl.md)
- [SaveDeviceState](kernel/iopcidevice/3857683-savedevicestate.md)
- [SaveDeviceState_Impl](kernel/iopcidevice/3857684-savedevicestate_impl.md)
- [SetASPMState](kernel/iopcidevice/3986557-setaspmstate.md)
- [SetASPMState_Impl](kernel/iopcidevice/3986558-setaspmstate_impl.md)
- [SetLinkSpeed](kernel/iopcidevice/3943413-setlinkspeed.md)
- [SetLinkSpeed_Impl](kernel/iopcidevice/3943414-setlinkspeed_impl.md)
- [SetProperties_Impl](kernel/iopcidevice/3738458-setproperties_impl.md)
- [addPowerChild](kernel/iopcidevice/3928138-addpowerchild.md)
- [attach](kernel/iopcidevice/1398479-attach.md)
- [callPlatformFunction](kernel/iopcidevice/1398982-callplatformfunction.md)
- [callPlatformFunction](kernel/iopcidevice/3516649-callplatformfunction.md)
- [checkLink](kernel/iopcidevice/1398893-checklink.md)
- [compareName](kernel/iopcidevice/1398837-comparename.md)
- [completeFLR](kernel/iopcidevice/4359881-completeflr.md)
- [configAccess](kernel/iopcidevice/1398500-configaccess.md)
- [configRead16](kernel/iopcidevice/1398671-configread16.md)
- [configRead16](kernel/iopcidevice/3516650-configread16.md)
- [configRead32](kernel/iopcidevice/1398925-configread32.md)
- [configRead32](kernel/iopcidevice/3516651-configread32.md)
- [configRead8](kernel/iopcidevice/1398814-configread8.md)
- [configRead8](kernel/iopcidevice/3516652-configread8.md)
- [configWrite16](kernel/iopcidevice/1398984-configwrite16.md)
- [configWrite16](kernel/iopcidevice/3516653-configwrite16.md)
- [configWrite16Filter](kernel/iopcidevice/4116459-configwrite16filter.md)
- [configWrite32](kernel/iopcidevice/1398497-configwrite32.md)
- [configWrite32](kernel/iopcidevice/3516654-configwrite32.md)
- [configWrite32Filter](kernel/iopcidevice/4116460-configwrite32filter.md)
- [configWrite8](kernel/iopcidevice/1398899-configwrite8.md)
- [configWrite8](kernel/iopcidevice/3516655-configwrite8.md)
- [configWrite8Filter](kernel/iopcidevice/4116461-configwrite8filter.md)
- [configureInterrupts](kernel/iopcidevice/3919732-configureinterrupts.md)
- [copyAERErrorDescriptionForBit](kernel/iopcidevice/1398866-copyaererrordescriptionforbit.md)
- [createEventSource](kernel/iopcidevice/1398504-createeventsource.md)
- [detach](kernel/iopcidevice/1398677-detach.md)
- [detachAbove](kernel/iopcidevice/1398929-detachabove.md)
- [detachFromChild](kernel/iopcidevice/4359882-detachfromchild.md)
- [deviceMemoryRead](kernel/iopcidevice/4359883-devicememoryread.md)
- [deviceMemoryRead16](kernel/iopcidevice/3684899-devicememoryread16.md)
- [deviceMemoryRead16](kernel/iopcidevice/4446109-devicememoryread16.md)
- [deviceMemoryRead32](kernel/iopcidevice/3684900-devicememoryread32.md)
- [deviceMemoryRead32](kernel/iopcidevice/4446110-devicememoryread32.md)
- [deviceMemoryRead64](kernel/iopcidevice/3684901-devicememoryread64.md)
- [deviceMemoryRead64](kernel/iopcidevice/4446111-devicememoryread64.md)
- [deviceMemoryRead8](kernel/iopcidevice/3684902-devicememoryread8.md)
- [deviceMemoryRead8](kernel/iopcidevice/4446112-devicememoryread8.md)
- [deviceMemoryWrite](kernel/iopcidevice/4359884-devicememorywrite.md)
- [deviceMemoryWrite16](kernel/iopcidevice/3684903-devicememorywrite16.md)
- [deviceMemoryWrite16](kernel/iopcidevice/4446113-devicememorywrite16.md)
- [deviceMemoryWrite32](kernel/iopcidevice/3684904-devicememorywrite32.md)
- [deviceMemoryWrite32](kernel/iopcidevice/4446114-devicememorywrite32.md)
- [deviceMemoryWrite64](kernel/iopcidevice/3684905-devicememorywrite64.md)
- [deviceMemoryWrite64](kernel/iopcidevice/4446115-devicememorywrite64.md)
- [deviceMemoryWrite8](kernel/iopcidevice/3684906-devicememorywrite8.md)
- [deviceMemoryWrite8](kernel/iopcidevice/4446116-devicememorywrite8.md)
- [enableACS](kernel/iopcidevice/3172732-enableacs.md)
- [enableLTR](kernel/iopcidevice/1398617-enableltr.md)
- [enablePCIPowerManagement](kernel/iopcidevice/1398619-enablepcipowermanagement.md)
- [extendedConfigRead16](kernel/iopcidevice/1398591-extendedconfigread16.md)
- [extendedConfigRead32](kernel/iopcidevice/1398613-extendedconfigread32.md)
- [extendedConfigRead8](kernel/iopcidevice/1398935-extendedconfigread8.md)
- [extendedConfigWrite16](kernel/iopcidevice/1398741-extendedconfigwrite16.md)
- [extendedConfigWrite32](kernel/iopcidevice/1398816-extendedconfigwrite32.md)
- [extendedConfigWrite8](kernel/iopcidevice/1398879-extendedconfigwrite8.md)
- [extendedFindPCICapability](kernel/iopcidevice/1398481-extendedfindpcicapability.md)
- [findPCICapability](kernel/iopcidevice/1398485-findpcicapability.md)
- [flr](kernel/iopcidevice/4359885-flr.md)
- [free](kernel/iopcidevice/1398909-free.md)
- [getBusNumber](kernel/iopcidevice/1398476-getbusnumber.md)
- [getDeviceMemoryWithIndex](kernel/iopcidevice/1398913-getdevicememorywithindex.md)
- [getDeviceMemoryWithRegister](kernel/iopcidevice/1398763-getdevicememorywithregister.md)
- [getDeviceNumber](kernel/iopcidevice/1398803-getdevicenumber.md)
- [getFunctionNumber](kernel/iopcidevice/1398549-getfunctionnumber.md)
- [getLinkSpeed](kernel/iopcidevice/3943417-getlinkspeed.md)
- [getMetaClass](kernel/iopcidevice/1398771-getmetaclass.md)
- [getProperty](kernel/iopcidevice/3753534-getproperty.md)
- [getResources](kernel/iopcidevice/1398852-getresources.md)
- [handleClose](kernel/iopcidevice/3543394-handleclose.md)
- [handleOpen](kernel/iopcidevice/3543395-handleopen.md)
- [hasPCIPowerManagement](kernel/iopcidevice/1398543-haspcipowermanagement.md)
- [init](kernel/iopcidevice/1398907-init.md)
- [init](kernel/iopcidevice/3516656-init.md)
- [initReserved](kernel/iopcidevice/1398669-initreserved.md)
- [initialPowerStateForDomainState](kernel/iopcidevice/1398555-initialpowerstatefordomainstate.md)
- [ioDeviceMemory](kernel/iopcidevice/1398727-iodevicememory.md)
- [ioRead16](kernel/iopcidevice/1398512-ioread16.md)
- [ioRead32](kernel/iopcidevice/1398717-ioread32.md)
- [ioRead8](kernel/iopcidevice/1398588-ioread8.md)
- [ioWrite16](kernel/iopcidevice/1398705-iowrite16.md)
- [ioWrite32](kernel/iopcidevice/1398775-iowrite32.md)
- [ioWrite8](kernel/iopcidevice/1398855-iowrite8.md)
- [isDownstreamFacing](kernel/iopcidevice/4359886-isdownstreamfacing.md)
- [kernelRequestProbe](kernel/iopcidevice/1398761-kernelrequestprobe.md)
- [launchReprobeThread](kernel/iopcidevice/4359887-launchreprobethread.md)
- [mapDeviceMemoryWithRegister](kernel/iopcidevice/1398789-mapdevicememorywithregister.md)
- [matchLocation](kernel/iopcidevice/1398961-matchlocation.md)
- [matchPropertyTable](kernel/iopcidevice/1398666-matchpropertytable.md)
- [matchPropertyTable](kernel/iopcidevice/3538575-matchpropertytable.md)
- [maxCapabilityForDomainState](kernel/iopcidevice/1399002-maxcapabilityfordomainstate.md)
- [newUserClient](kernel/iopcidevice/1398840-newuserclient.md)
- [powerStateForDomainState](kernel/iopcidevice/1398921-powerstatefordomainstate.md)
- [powerStateWillChangeTo](kernel/iopcidevice/1398799-powerstatewillchangeto.md)
- [powerStateWillChangeToGated](kernel/iopcidevice/4359888-powerstatewillchangetogated.md)
- [prepareFLR](kernel/iopcidevice/4359889-prepareflr.md)
- [protectDevice](kernel/iopcidevice/1398709-protectdevice.md)
- [registerCrashNotification](kernel/iopcidevice/3943418-registercrashnotification.md)
- [relocate](kernel/iopcidevice/1398535-relocate.md)
- [removePowerChild](kernel/iopcidevice/3928139-removepowerchild.md)
- [reprobeThreadCall](kernel/iopcidevice/4359890-reprobethreadcall.md)
- [requestProbe](kernel/iopcidevice/1398685-requestprobe.md)
- [reset](kernel/iopcidevice/3943419-reset.md)
- [resetFunction](kernel/iopcidevice/4359891-resetfunction.md)
- [resetNubState](kernel/iopcidevice/4359892-resetnubstate.md)
- [restoreDeviceState](kernel/iopcidevice/1398874-restoredevicestate.md)
- [saveDeviceState](kernel/iopcidevice/1398493-savedevicestate.md)
- [setASPMState](kernel/iopcidevice/1398736-setaspmstate.md)
- [setBusLeadEnable](kernel/iopcidevice/3917649-setbusleadenable.md)
- [setBusMasterEnable](kernel/iopcidevice/1398970-setbusmasterenable.md)
- [setConfigBits](kernel/iopcidevice/1398640-setconfigbits.md)
- [setConfigHandler](kernel/iopcidevice/1398553-setconfighandler.md)
- [setIOEnable](kernel/iopcidevice/1398888-setioenable.md)
- [setLatencyTolerance](kernel/iopcidevice/1398903-setlatencytolerance.md)
- [setLinkSpeed](kernel/iopcidevice/3943420-setlinkspeed.md)
- [setMemoryEnable](kernel/iopcidevice/1398630-setmemoryenable.md)
- [setPCIPowerState](kernel/iopcidevice/1398828-setpcipowerstate.md)
- [setPowerState](kernel/iopcidevice/1398729-setpowerstate.md)
- [setPowerStateGated](kernel/iopcidevice/4359893-setpowerstategated.md)
- [setProperties](kernel/iopcidevice/1398957-setproperties.md)
- [setProperty](kernel/iopcidevice/4097725-setproperty.md)
- [setProperty](kernel/iopcidevice/4097726-setproperty.md)
- [setProperty](kernel/iopcidevice/4097727-setproperty.md)
- [setProperty](kernel/iopcidevice/4097728-setproperty.md)
- [setProperty](kernel/iopcidevice/4097729-setproperty.md)
- [setProperty](kernel/iopcidevice/4097730-setproperty.md)
- [setProperty](kernel/iopcidevice/4097731-setproperty.md)
- [setTunnelL1Enable](kernel/iopcidevice/1398498-settunnell1enable.md)
- [shouldSkipReset](kernel/iopcidevice/4395252-shouldskipreset.md)
- [supportsFLR](kernel/iopcidevice/4359894-supportsflr.md)
- [unregisterCrashNotification](kernel/iopcidevice/3943421-unregistercrashnotification.md)
- [updateWakeReason](kernel/iopcidevice/1398863-updatewakereason.md)

### Type Methods

- [ConfigureInterrupts_Invoke](kernel/iopcidevice/3919731-configureinterrupts_invoke.md)
- [EnablePCIPowerManagement_Invoke](kernel/iopcidevice/3516631-enablepcipowermanagement_invoke.md)
- [FindPCICapability_Invoke](kernel/iopcidevice/3516634-findpcicapability_invoke.md)
- [GetBARInfo_Invoke](kernel/iopcidevice/3861821-getbarinfo_invoke.md)
- [GetBusDeviceFunction_Invoke](kernel/iopcidevice/3516637-getbusdevicefunction_invoke.md)
- [GetLinkSpeed_Invoke](kernel/iopcidevice/3943409-getlinkspeed_invoke.md)
- [HasPCIPowerManagement_Invoke](kernel/iopcidevice/3516640-haspcipowermanagement_invoke.md)
- [Reset_Invoke](kernel/iopcidevice/3943412-reset_invoke.md)
- [RestoreDeviceState_Invoke](kernel/iopcidevice/3857682-restoredevicestate_invoke.md)
- [SaveDeviceState_Invoke](kernel/iopcidevice/3857685-savedevicestate_invoke.md)
- [SetASPMState_Invoke](kernel/iopcidevice/3986559-setaspmstate_invoke.md)
- [SetLinkSpeed_Invoke](kernel/iopcidevice/3943415-setlinkspeed_invoke.md)
- [getCloseCommandMask](kernel/iopcidevice/3943416-getclosecommandmask.md)
- [hasL1Errata](kernel/iopcidevice/4480432-hasl1errata.md)

## Relationships

### Inherits From

- [IOService](kernel/ioservice.md)

## See Also

### Devices

- [Implementing a PCIe Kext for a Thunderbolt Device](kernel/hardware_families/pci/implementing_a_pcie_kext_for_a_thunderbolt_device.md)
- [IOAGPDevice](kernel/ioagpdevice.md)
