---
title: maxCapabilityForDomainState
framework: kernel
role: pseudoSymbol
path: kernel/ioservice/1810302-maxcapabilityfordomainstate
---

# maxCapabilityForDomainState

Determines a driver's highest power state possible for a given power domain state.

## Declaration

```occ
virtual unsigned long maxCapabilityForDomainState(
 IOPMPowerFlagsdomainState ); 
```

## Parameters

- `domainState`: Flags that describe the character of "domain power"; they represent the outputPowerCharacter field of a state in the power domain's power state array.

## Return Value

Return Value A state number.

## Overview

Overview This happens when the power domain is changing state and power management needs to determine which state the device is capable of in the new domain state. Most drivers do not need to implement this method, and can rely upon the default IOService implementation. The IOService implementation scans the power state array looking for the highest state whose inputPowerRequirement field exactly matches the value of the domainState parameter. If more intelligent determination is required, the driver itself should implement the method and override the superclass's implementation.

## See Also

### Miscellaneous

- [acknowledgePowerChange](kernel/ioservice/1809710-acknowledgepowerchange.md)
- [acknowledgeSetPowerState](kernel/ioservice/1532596-acknowledgesetpowerstate.md)
- [activityTickle](kernel/ioservice/1809731-activitytickle.md)
- [addLocation](kernel/ioservice/1809740-addlocation.md)
- [addMatchingNotification](kernel/ioservice/1809749-addmatchingnotification.md)
- [addNotification](kernel/ioservice/1809760-addnotification.md)
- [addPowerChild](kernel/ioservice/1809766-addpowerchild.md)
- [adjustBusy](kernel/ioservice/1809776-adjustbusy.md)
- [attach](kernel/ioservice/1809786-attach.md)
- [callPlatformFunction](kernel/ioservice/1809795-callplatformfunction.md)
- [causeInterrupt](kernel/ioservice/1809803-causeinterrupt.md)
- [changePowerStateTo](kernel/ioservice/1809809-changepowerstateto.md)
- [changePowerStateToPriv](kernel/ioservice/1809819-changepowerstatetopriv.md)
- [clampPowerOn](kernel/ioservice/1809824-clamppoweron.md)
- [close](kernel/ioservice/1809831-close.md)
- [command_received](kernel/ioservice/1809840-command_received.md)
- [compareProperties](kernel/ioservice/1809848-compareproperties.md)
- [compareProperty(OSDictionary *, const char *)](kernel/ioservice/1809855-compareproperty.md)
- [compareProperty(OSDictionary *, const OSString *)](kernel/ioservice/1809861-compareproperty.md)
- [configureReport](kernel/ioservice/1809870-configurereport.md)
- [copyClientWithCategory](kernel/ioservice/1809878-copyclientwithcategory.md)
- [copyMatchingService](kernel/ioservice/1809887-copymatchingservice.md)
- [currentCapability](kernel/ioservice/1809891-currentcapability.md)
- [currentPowerConsumption](kernel/ioservice/1809899-currentpowerconsumption.md)
- [deRegisterInterestedDriver](kernel/ioservice/1809905-deregisterinteresteddriver.md)
- [detach](kernel/ioservice/1809913-detach.md)
- [didTerminate](kernel/ioservice/1809918-didterminate.md)
- [didYouWakeSystem](kernel/ioservice/1809924-didyouwakesystem.md)
- [disableInterrupt](kernel/ioservice/1809929-disableinterrupt.md)
- [enableInterrupt](kernel/ioservice/1809937-enableinterrupt.md)
- [errnoFromReturn](kernel/ioservice/1809942-errnofromreturn.md)
- [finalize](kernel/ioservice/1809948-finalize.md)
- [free](kernel/ioservice/1809960-free.md)
- [getAggressiveness](kernel/ioservice/1809962-getaggressiveness.md)
- [getBusyState](kernel/ioservice/1809968-getbusystate.md)
- [getClient](kernel/ioservice/1809973-getclient.md)
- [getClientIterator](kernel/ioservice/1809979-getclientiterator.md)
- [getDeviceMemory](kernel/ioservice/1809984-getdevicememory.md)
- [getDeviceMemoryCount](kernel/ioservice/1809990-getdevicememorycount.md)
- [getDeviceMemoryWithIndex](kernel/ioservice/1809999-getdevicememorywithindex.md)
- [getInterruptType](kernel/ioservice/1810004-getinterrupttype.md)
- [getMatchingServices](kernel/ioservice/1810011-getmatchingservices.md)
- [getOpenClientIterator](kernel/ioservice/1810018-getopenclientiterator.md)
- [getOpenProviderIterator](kernel/ioservice/1810027-getopenprovideriterator.md)
- [getPlatform](kernel/ioservice/1810033-getplatform.md)
- [getPMRootDomain](kernel/ioservice/1810046-getpmrootdomain.md)
- [getPMworkloop](kernel/ioservice/1810059-getpmworkloop.md)
- [getPowerState](kernel/ioservice/1810074-getpowerstate.md)
- [getProvider](kernel/ioservice/1810088-getprovider.md)
- [getProviderIterator](kernel/ioservice/1810097-getprovideriterator.md)
- [getResources](kernel/ioservice/1810107-getresources.md)
- [getResourceService](kernel/ioservice/1810116-getresourceservice.md)
- [getServiceRoot](kernel/ioservice/1810122-getserviceroot.md)
- [getState](kernel/ioservice/1810137-getstate.md)
- [getWorkLoop](kernel/ioservice/1810145-getworkloop.md)
- [handleClose](kernel/ioservice/1810153-handleclose.md)
- [handleIsOpen](kernel/ioservice/1810164-handleisopen.md)
- [handleOpen](kernel/ioservice/1810174-handleopen.md)
- [initialPowerStateForDomainState](kernel/ioservice/1810182-initialpowerstatefordomainstate.md)
- [isInactive](kernel/ioservice/1810198-isinactive.md)
- [isOpen](kernel/ioservice/1810209-isopen.md)
- [joinPMtree](kernel/ioservice/1810216-joinpmtree.md)
- [lockForArbitration](kernel/ioservice/1810228-lockforarbitration.md)
- [makeUsable](kernel/ioservice/1810246-makeusable.md)
- [mapDeviceMemoryWithIndex](kernel/ioservice/1810261-mapdevicememorywithindex.md)
- [matchLocation](kernel/ioservice/1810275-matchlocation.md)
- [matchPropertyTable](kernel/ioservice/1810286-matchpropertytable.md)
- [message](kernel/ioservice/1810323-message.md)
- [messageClient](kernel/ioservice/1810334-messageclient.md)
- [messageClients](kernel/ioservice/1810353-messageclients.md)
- [nameMatching(const char *, OSDictionary *)](kernel/ioservice/1810365-namematching.md)
- [nameMatching(const OSString *, OSDictionary *)](kernel/ioservice/1810383-namematching.md)
- [newTemperature](kernel/ioservice/1810402-newtemperature.md)
- [newUserClient](kernel/ioservice/1810417-newuserclient.md)
- [nextIdleTimeout](kernel/ioservice/1810435-nextidletimeout.md)
- [open](kernel/ioservice/1810450-open.md)
- [PM_Clamp_Timer_Expired](kernel/ioservice/1810463-pm_clamp_timer_expired.md)
- [PM_idle_timer_expiration](kernel/ioservice/1810474-pm_idle_timer_expiration.md)
- [PMinit](kernel/ioservice/1810486-pminit.md)
- [PMstop](kernel/ioservice/1810502-pmstop.md)
- [powerChangeDone](kernel/ioservice/1810518-powerchangedone.md)
- [powerOverrideOffPriv](kernel/ioservice/1810533-poweroverrideoffpriv.md)
- [powerOverrideOnPriv](kernel/ioservice/1810549-poweroverrideonpriv.md)
- [powerStateDidChangeTo](kernel/ioservice/1810564-powerstatedidchangeto.md)
- [powerStateForDomainState](kernel/ioservice/1810576-powerstatefordomainstate.md)
- [powerStateWillChangeTo](kernel/ioservice/1810597-powerstatewillchangeto.md)
- [probe](kernel/ioservice/1810605-probe.md)
- [propertyMatching](kernel/ioservice/1810622-propertymatching.md)
- [publishResource(const char *, OSObject *)](kernel/ioservice/1810642-publishresource.md)
- [publishResource(const OSSymbol *, OSObject *)](kernel/ioservice/1810661-publishresource.md)
- [registerInterestedDriver](kernel/ioservice/1810675-registerinteresteddriver.md)
- [registerInterrupt](kernel/ioservice/1810691-registerinterrupt.md)
- [registerPowerDriver](kernel/ioservice/1810706-registerpowerdriver.md)
- [registerService](kernel/ioservice/1810726-registerservice.md)
- [registryEntryIDMatching](kernel/ioservice/1810750-registryentryidmatching.md)
- [removePowerChild](kernel/ioservice/1810770-removepowerchild.md)
- [requestPowerDomainState](kernel/ioservice/1810786-requestpowerdomainstate.md)
- [requestProbe](kernel/ioservice/1810804-requestprobe.md)
- [requestTerminate](kernel/ioservice/1810819-requestterminate.md)
- [resourceMatching(const char *, OSDictionary *)](kernel/ioservice/1810840-resourcematching.md)
- [resourceMatching(const OSString *, OSDictionary *)](kernel/ioservice/1810857-resourcematching.md)
- [serviceMatching(const char *, OSDictionary *)](kernel/ioservice/1810880-servicematching.md)
- [serviceMatching(const OSString *, OSDictionary *)](kernel/ioservice/1810901-servicematching.md)
- [setAggressiveness](kernel/ioservice/1810925-setaggressiveness.md)
- [setDeviceMemory](kernel/ioservice/1810946-setdevicememory.md)
- [setIdleTimerPeriod](kernel/ioservice/1810962-setidletimerperiod.md)
- [setPowerParent](kernel/ioservice/1810987-setpowerparent.md)
- [setPowerState](kernel/ioservice/1532866-setpowerstate.md)
- [start](kernel/ioservice/1811009-start.md)
- [start_PM_idle_timer](kernel/ioservice/1811024-start_pm_idle_timer.md)
- [stop](kernel/ioservice/1811034-stop.md)
- [stringFromReturn](kernel/ioservice/1811046-stringfromreturn.md)
- [systemWake](kernel/ioservice/1811056-systemwake.md)
- [systemWillShutdown](kernel/ioservice/1811071-systemwillshutdown.md)
- [temperatureCriticalForZone](kernel/ioservice/1811087-temperaturecriticalforzone.md)
- [temporaryPowerClampOn](kernel/ioservice/1811099-temporarypowerclampon.md)
- [terminate](kernel/ioservice/1811110-terminate.md)
- [terminateClient](kernel/ioservice/1811121-terminateclient.md)
- [unlockForArbitration](kernel/ioservice/1811130-unlockforarbitration.md)
- [unregisterInterrupt](kernel/ioservice/1811142-unregisterinterrupt.md)
- [updateReport](kernel/ioservice/1811152-updatereport.md)
- [waitForMatchingService](kernel/ioservice/1811164-waitformatchingservice.md)
- [waitForService](kernel/ioservice/1811172-waitforservice.md)
- [waitQuiet](kernel/ioservice/1811184-waitquiet.md)
- [willTerminate](kernel/ioservice/1811202-willterminate.md)
- [youAreRoot](kernel/ioservice/1811214-youareroot.md)
