KmdfIrql rule (kmdf)
The KmdfIrql rule specifies that a driver calls a framework method at an IRQL that is less than or equal to the maximum IRQL for that method.
This rule is similar to the KmdfIrql2 rule; however, the KmdfIrql2 rule is performed on callback functions which have IRQL requirements dependent on their related object’s execution level specification.
Driver model | KMDF |
---|
How to test
At compile time |
---|
Run Static Driver Verifier and specify the KmdfIrql rule. Use the following steps to run an analysis of your code:
For more information, see Using Static Driver Verifier to Find Defects in Drivers. |
Applies to
- WdfChildListAddOrUpdateChildDescriptionAsPresent
- WdfChildListBeginIteration
- WdfChildListBeginScan
- WdfChildListCreate
- WdfChildListEndIteration
- WdfChildListEndScan
- WdfChildListGetDevice
- WdfChildListRequestChildEject
- WdfChildListRetrieveAddressDescription
- WdfChildListRetrieveNextDevice
- WdfChildListRetrievePdo
- WdfChildListUpdateAllChildDescriptionsAsPresent
- WdfChildListUpdateChildDescriptionAsMissing
- WdfCmResourceListAppendDescriptor
- WdfCmResourceListGetCount
- WdfCmResourceListGetDescriptor
- WdfCmResourceListInsertDescriptor
- WdfCmResourceListRemove
- WdfCmResourceListRemoveByDescriptor
- WdfCollectionAdd
- WdfCollectionCreate
- WdfCollectionGetCount
- WdfCollectionGetFirstItem
- WdfCollectionGetItem
- WdfCollectionGetLastItem
- WdfCollectionRemove
- WdfCollectionRemoveItem
- WdfCommonBufferCreate
- WdfCommonBufferCreateWithConfig
- WdfCommonBufferGetAlignedLogicalAddress
- WdfCommonBufferGetAlignedVirtualAddress
- WdfCommonBufferGetLength
- WdfControlDeviceInitAllocate
- WdfControlDeviceInitSetShutdownNotification
- WdfControlFinishInitializing
- WdfDeviceAddDependentUsageDeviceObject
- WdfDeviceAddQueryInterface
- WdfDeviceAddRemovalRelationsPhysicalDevice
- WdfDeviceAllocAndQueryProperty
- WdfDeviceAssignMofResourceName
- WdfDeviceAssignS0IdleSettings
- WdfDeviceAssignSxWakeSettings
- WdfDeviceClearRemovalRelationsDevices
- WdfDeviceConfigureRequestDispatching
- WdfDeviceCreate
- WdfDeviceCreateDeviceInterface
- WdfDeviceCreateSymbolicLink
- WdfDeviceEnqueueRequest
- WdfDeviceGetAlignmentRequirement
- WdfDeviceGetCharacteristics
- WdfDeviceGetDefaultQueue
- WdfDeviceGetDevicePnpState
- WdfDeviceGetDevicePowerPolicyState
- WdfDeviceGetDevicePowerState
- WdfDeviceGetDeviceState
- WdfDeviceGetDriver
- WdfDeviceGetFileObject
- WdfDeviceGetIoTarget
- WdfDeviceGetSystemPowerAction
- WdfDeviceIndicateWakeStatus
- WdfDeviceInitAssignName
- WdfDeviceInitAssignSDDLString
- WdfDeviceInitAssignWdmIrpPreprocessCallback
- WdfDeviceInitFree
- WdfDeviceInitRegisterPnpStateChangeCallback
- WdfDeviceInitRegisterPowerPolicyStateChangeCallback
- WdfDeviceInitRegisterPowerStateChangeCallback
- WdfDeviceInitSetCharacteristics
- WdfDeviceInitSetDeviceClass
- WdfDeviceInitSetDeviceType
- WdfDeviceInitSetExclusive
- WdfDeviceInitSetFileObjectConfig
- WdfDeviceInitSetIoInCallerContextCallback
- WdfDeviceInitSetIoType
- WdfDeviceInitSetPnpPowerEventCallbacks
- WdfDeviceInitSetPowerInrush
- WdfDeviceInitSetPowerNotPageable
- WdfDeviceInitSetPowerPageable
- WdfDeviceInitSetPowerPolicyEventCallbacks
- WdfDeviceInitSetPowerPolicyOwnership
- WdfDeviceInitSetRequestAttributes
- WdfDeviceMiniportCreate
- WdfDeviceOpenRegistryKey
- WdfDeviceQueryProperty
- WdfDeviceRemoveDependentUsageDeviceObject
- WdfDeviceRemoveRemovalRelationsPhysicalDevice
- WdfDeviceResumeIdle
- WdfDeviceRetrieveDeviceInterfaceString
- WdfDeviceRetrieveDeviceName
- WdfDeviceSetAlignmentRequirement
- WdfDeviceSetBusInformationForChildren
- WdfDeviceSetCharacteristics
- WdfDeviceSetDeviceInterfaceState
- WdfDeviceSetDeviceState
- WdfDeviceSetFailed
- WdfDeviceSetPnpCapabilities
- WdfDeviceSetPowerCapabilities
- WdfDeviceSetSpecialFileSupport
- WdfDeviceSetStaticStopRemove
- WdfDeviceStopIdle
- WdfDeviceWdmDispatchPreprocessedIrp
- WdfDeviceWdmGetAttachedDevice
- WdfDeviceWdmGetDeviceObject
- WdfDeviceWdmGetPhysicalDevice
- WdfDmaEnablerCreate
- WdfDmaEnablerGetFragmentLength
- WdfDmaEnablerGetMaximumLength
- WdfDmaEnablerGetMaximumScatterGatherElements
- WdfDmaEnablerSetMaximumScatterGatherElements
- WdfDmaEnablerWdmGetDmaAdapter
- WdfDmaTransactionCreate
- WdfDmaTransactionDmaCompleted
- WdfDmaTransactionDmaCompletedFinal
- WdfDmaTransactionDmaCompletedWithLength
- WdfDmaTransactionExecute
- WdfDmaTransactionGetBytesTransferred
- WdfDmaTransactionGetCurrentDmaTransferLength
- WdfDmaTransactionGetDevice
- WdfDmaTransactionGetRequest
- WdfDmaTransactionInitialize
- WdfDmaTransactionInitializeUsingRequest
- WdfDmaTransactionRelease
- WdfDpcCancel
- WdfDpcCreate
- WdfDpcEnqueue
- WdfDpcGetParentObject
- WdfDpcWdmGetDpc
- WdfDriverCreate
- WdfDriverGetRegistryPath
- WdfDriverIsVersionAvailable
- WdfDriverOpenParametersRegistryKey
- WdfDriverRetrieveVersionString
- WdfFdoAddStaticChild
- WdfFdoGetDefaultChildList
- WdfFdoInitAllocAndQueryProperty
- WdfFdoInitOpenRegistryKey
- WdfFdoInitQueryProperty
- WdfFdoInitSetDefaultChildListConfig
- WdfFdoInitSetEventCallbacks
- WdfFdoInitSetFilter
- WdfFdoInitWdmGetPhysicalDevice
- WdfFdoLockStaticChildListForIteration
- WdfFdoQueryForInterface
- WdfFdoRetrieveNextStaticChild
- WdfFdoUnlockStaticChildListFromIteration
- WdfFileObjectGetDevice
- WdfFileObjectGetFileName
- WdfFileObjectGetFlags
- WdfFileObjectWdmGetFileObject
- WdfInterruptAcquireLock
- WdfInterruptCreate
- WdfInterruptDisable
- WdfInterruptEnable
- WdfInterruptReleaseLock
- WdfInterruptSynchronize
- WdfIoQueueCreate
- WdfIoQueueDrain
- WdfIoQueueDrainSynchronously
- WdfIoQueueFindRequest
- WdfIoQueueGetDevice
- WdfIoQueueGetState
- WdfIoQueuePurge
- WdfIoQueuePurgeSynchronously
- WdfIoQueueReadyNotify
- WdfIoQueueRetrieveFoundRequest
- WdfIoQueueRetrieveNextRequest
- WdfIoQueueRetrieveRequestByFileObject
- WdfIoQueueStart
- WdfIoQueueStop
- WdfIoQueueStopSynchronously
- WdfIoResourceListAppendDescriptor
- WdfIoResourceListCreate
- WdfIoResourceListGetCount
- WdfIoResourceListGetDescriptor
- WdfIoResourceListInsertDescriptor
- WdfIoResourceListRemove
- WdfIoResourceListRemoveByDescriptor
- WdfIoResourceListUpdateDescriptor
- WdfIoResourceRequirementsListAppendIoResList
- WdfIoResourceRequirementsListGetCount
- WdfIoResourceRequirementsListGetIoResList
- WdfIoResourceRequirementsListInsertIoResList
- WdfIoResourceRequirementsListRemove
- WdfIoResourceRequirementsListRemoveByIoResList
- WdfIoResourceRequirementsListSetInterfaceType
- WdfIoResourceRequirementsListSetSlotNumber
- WdfIoTargetAllocAndQueryTargetProperty
- WdfIoTargetClose
- WdfIoTargetCloseForQueryRemove
- WdfIoTargetCreate
- WdfIoTargetFormatRequestForInternalIoctl
- WdfIoTargetFormatRequestForInternalIoctlOthers
- WdfIoTargetFormatRequestForIoctl
- WdfIoTargetFormatRequestForRead
- WdfIoTargetFormatRequestForWrite
- WdfIoTargetGetDevice
- WdfIoTargetGetState
- WdfIoTargetOpen
- WdfIoTargetQueryForInterface
- WdfIoTargetQueryTargetProperty
- WdfIoTargetSendInternalIoctlOthersSynchronously
- WdfIoTargetSendInternalIoctlSynchronously
- WdfIoTargetSendIoctlSynchronously
- WdfIoTargetSendReadSynchronously
- WdfIoTargetSendWriteSynchronously
- WdfIoTargetStart
- WdfIoTargetStop
- WdfIoTargetWdmGetTargetDeviceObject
- WdfIoTargetWdmGetTargetFileHandle
- WdfIoTargetWdmGetTargetFileObject
- WdfIoTargetWdmGetTargetPhysicalDevice
- WdfLookasideListCreate
- WdfMemoryCreate
- WdfMemoryCreatePreallocated
- WdfObjectAcquireLock
- WdfObjectCreate
- WdfObjectDelete
- WdfObjectReleaseLock
- WdfPdoAddEjectionRelationsPhysicalDevice
- WdfPdoClearEjectionRelationsDevices
- WdfPdoGetParent
- WdfPdoInitAddCompatibleID
- WdfPdoInitAddDeviceText
- WdfPdoInitAddHardwareID
- WdfPdoInitAllocate
- WdfPdoInitAssignDeviceID
- WdfPdoInitAssignInstanceID
- WdfPdoInitAssignRawDevice
- WdfPdoInitSetDefaultLocale
- WdfPdoInitSetEventCallbacks
- WdfPdoMarkMissing
- WdfPdoRemoveEjectionRelationsPhysicalDevice
- WdfPdoRequestEject
- WdfPdoRetrieveAddressDescription
- WdfPdoRetrieveIdentificationDescription
- WdfPdoUpdateAddressDescription
- WdfRegistryAssignMemory
- WdfRegistryAssignMultiString
- WdfRegistryAssignString
- WdfRegistryAssignULong
- WdfRegistryAssignUnicodeString
- WdfRegistryAssignValue
- WdfRegistryClose
- WdfRegistryCreateKey
- WdfRegistryOpenKey
- WdfRegistryQueryMemory
- WdfRegistryQueryMultiString
- WdfRegistryQueryString
- WdfRegistryQueryULong
- WdfRegistryQueryUnicodeString
- WdfRegistryQueryValue
- WdfRegistryRemoveKey
- WdfRegistryRemoveValue
- WdfRequestAllocateTimer
- WdfRequestCancelSentRequest
- WdfRequestChangeTarget
- WdfRequestComplete
- WdfRequestCompleteWithInformation
- WdfRequestCompleteWithPriorityBoost
- WdfRequestCreate
- WdfRequestCreateFromIrp
- WdfRequestFormatRequestUsingCurrentType
- WdfRequestForwardToIoQueue
- WdfRequestGetCompletionParams
- WdfRequestGetFileObject
- WdfRequestGetInformation
- WdfRequestGetIoQueue
- WdfRequestGetParameters
- WdfRequestGetRequestorMode
- WdfRequestGetStatus
- WdfRequestIsCanceled
- WdfRequestIsFrom32BitProcess
- WdfRequestMarkCancelableEx
- WdfRequestProbeAndLockUserBufferForRead
- WdfRequestProbeAndLockUserBufferForWrite
- WdfRequestRequeue
- WdfRequestRetrieveInputBuffer
- WdfRequestRetrieveInputMemory
- WdfRequestRetrieveInputWdmMdl
- WdfRequestRetrieveOutputBuffer
- WdfRequestRetrieveOutputMemory
- WdfRequestRetrieveOutputWdmMdl
- WdfRequestRetrieveUnsafeUserInputBuffer
- WdfRequestRetrieveUnsafeUserOutputBuffer
- WdfRequestReuse
- WdfRequestSend
- WdfRequestSetCompletionRoutine
- WdfRequestSetInformation
- WdfRequestStopAcknowledge
- WdfRequestUnmarkCancelable
- WdfRequestWdmFormatUsingStackLocation
- WdfRequestWdmGetIrp
- WdfSpinLockAcquire
- WdfSpinLockCreate
- WdfSpinLockRelease
- WdfStringCreate
- WdfStringGetUnicodeString
- WdfTimerCreate
- WdfTimerStart
- WdfTimerStop
- WdfUsbInterfaceGetConfiguredPipe
- WdfUsbInterfaceGetConfiguredSettingIndex
- WdfUsbInterfaceGetDescriptor
- WdfUsbInterfaceGetEndpointInformation
- WdfUsbInterfaceGetInterfaceNumber
- WdfUsbInterfaceGetNumConfiguredPipes
- WdfUsbInterfaceGetNumEndpoints
- WdfUsbInterfaceGetNumSettings
- WdfUsbInterfaceSelectSetting
- WdfUsbTargetDeviceAllocAndQueryString
- WdfUsbTargetDeviceCreate
- WdfUsbTargetDeviceCyclePortSynchronously
- WdfUsbTargetDeviceFormatRequestForControlTransfer
- WdfUsbTargetDeviceFormatRequestForCyclePort
- WdfUsbTargetDeviceFormatRequestForString
- WdfUsbTargetDeviceFormatRequestForUrb
- WdfUsbTargetDeviceGetDeviceDescriptor
- WdfUsbTargetDeviceGetInterface
- WdfUsbTargetDeviceGetNumInterfaces
- WdfUsbTargetDeviceIsConnectedSynchronous
- WdfUsbTargetDeviceQueryString
- WdfUsbTargetDeviceResetPortSynchronously
- WdfUsbTargetDeviceRetrieveConfigDescriptor
- WdfUsbTargetDeviceRetrieveCurrentFrameNumber
- WdfUsbTargetDeviceRetrieveInformation
- WdfUsbTargetDeviceSelectConfig
- WdfUsbTargetDeviceSendControlTransferSynchronously
- WdfUsbTargetDeviceSendUrbSynchronously
- WdfUsbTargetDeviceWdmGetConfigurationHandle
- WdfUsbTargetPipeAbortSynchronously
- WdfUsbTargetPipeConfigContinuousReader
- WdfUsbTargetPipeFormatRequestForAbort
- WdfUsbTargetPipeFormatRequestForRead
- WdfUsbTargetPipeFormatRequestForReset
- WdfUsbTargetPipeFormatRequestForUrb
- WdfUsbTargetPipeFormatRequestForWrite
- WdfUsbTargetPipeGetInformation
- WdfUsbTargetPipeGetType
- WdfUsbTargetPipeIsInEndpoint
- WdfUsbTargetPipeIsOutEndpoint
- WdfUsbTargetPipeReadSynchronously
- WdfUsbTargetPipeResetSynchronously
- WdfUsbTargetPipeSendUrbSynchronously
- WdfUsbTargetPipeSetNoMaximumPacketSizeCheck
- WdfUsbTargetPipeWdmGetPipeHandle
- WdfUsbTargetPipeWriteSynchronously
- WdfWaitLockAcquire
- WdfWaitLockCreate
- WdfWaitLockRelease
- WdfWdmDeviceGetWdfDeviceHandle
- WdfWmiInstanceCreate
- WdfWmiInstanceDeregister
- WdfWmiInstanceFireEvent
- WdfWmiInstanceGetDevice
- WdfWmiInstanceGetProvider
- WdfWmiInstanceRegister
- WdfWmiProviderCreate
- WdfWmiProviderGetDevice
- WdfWmiProviderGetTracingHandle
- WdfWmiProviderIsEnabled
- WdfWorkItemCreate
- WdfWorkItemEnqueue
- WdfWorkItemFlush
- WdfWorkItemGetParentObject
- PAGED_CODE
Send comments about this topic to Microsoft
Build date: 2/13/2014
Show: