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 modelKMDF

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:
  1. Prepare your code (use role type declarations).
  2. Run Static Driver Verifier.
  3. View and analyze the results.

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:
© 2014 Microsoft. All rights reserved.