PowerIrpDDIs rule (wdm)

The PowerIrpDDIs rule specifies that when a driver is processing a system or a device IRP_MJ_POWER with IRP_MN_SET_POWER, it should not call DDIs that can only be call at PASSIVE_LEVEL.

Driver model WDM

How to test

At compile time

Run Static Driver Verifier and specify the PowerIrpDDIs 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

ExIsProcessorFeaturePresent ExRaiseAccessViolation ExRaiseDatatypeMisalignment ExUuidCreate HalExamineMBR HalGetInterruptVector IoBuildDeviceIoControlRequest IoBuildSynchronousFsdRequest IoCheckShareAccess IoConnectInterrupt IoCreateController IoCreateFile IoCreateSymbolicLink IoCreateSynchronizationEvent IoCreateUnprotectedSymbolicLink IoDeleteController IoDeleteSymbolicLink IoDetachDevice IoDisconnectInterrupt IoGetConfigurationInformation IoGetDeviceInterfaceAlias IoGetDeviceInterfaces IoGetDeviceNumaNode IoGetDeviceObjectPointer IoGetDeviceProperty IoGetDevicePropertyData IoGetDmaAdapter IoGetFileObjectGenericMapping IoInitializeTimer IoIsWdmVersionAvailable IoOpenDeviceInterfaceRegistryKey IoOpenDeviceRegistryKey IoRegisterBootDriverReinitialization IoRegisterDeviceInterface IoRegisterDriverReinitialization IoRegisterLastChanceShutdownNotification IoRegisterPlugPlayNotification IoRegisterShutdownNotification IoRemoveShareAccess IoReportDetectedDevice IoReportTargetDeviceChange IoSetDeviceInterfaceState IoSetDevicePropertyData IoUnregisterPlugPlayNotification IoUnregisterPlugPlayNotificationEx IoUnregisterShutdownNotification IoUpdateShareAccess IoWMIAllocateInstanceIds IoWMIRegistrationControl KeDelayExecutionThread KeInitializeSemaphore KeQueryPriorityThread KeQueryRuntimeThread KeRevertToUserAffinityThreadEx KeSetSystemAffinityThread KeSetSystemGroupAffinityThread MmGetSystemRoutineAddress PsGetVersion PsRemoveLoadImageNotifyRoutine PsSetCreateProcessNotifyRoutine PsSetCreateProcessNotifyRoutineEx PsSetCreateThreadNotifyRoutine PsSetLoadImageNotifyRoutine PsTerminateSystemThread SeAccessCheck SeAssignSecurity SeDeassignSecurity SeSinglePrivilegeCheck SeValidSecurityDescriptor ZwAllocateLocallyUniqueId ZwAllocateVirtualMemory ZwClose ZwCommitComplete ZwCommitEnlistment ZwCommitTransaction ZwCreateDirectoryObject ZwCreateEnlistment ZwCreateEvent ZwCreateFile ZwCreateKey ZwCreateKeyTransacted ZwCreateResourceManager ZwCreateTransaction ZwCreateTransactionManager ZwDeleteFile ZwDeleteKey ZwDeleteValueKey ZwDeviceIoControlFile ZwDuplicateToken ZwEnumerateKey ZwEnumerateTransactionObject ZwEnumerateValueKey ZwFlushBuffersFile ZwFreeVirtualMemory ZwFsControlFile ZwGetNotificationResourceManager ZwLoadDriver ZwLockFile ZwMakeTemporaryObject ZwMapViewOfSection ZwNotifyChangeKey ZwOpenDirectoryObject ZwOpenEnlistment ZwOpenEvent ZwOpenFile ZwOpenKey ZwOpenKeyEx ZwOpenKeyTransacted ZwOpenKeyTransactedEx ZwOpenProcess ZwOpenProcessTokenEx ZwOpenResourceManager ZwOpenSection ZwOpenSymbolicLinkObject ZwOpenThreadTokenEx ZwOpenTransaction ZwOpenTransactionManager ZwPowerInformation ZwPrepareComplete ZwPrepareEnlistment ZwPrePrepareComplete ZwPrePrepareEnlistment ZwQueryDirectoryFile ZwQueryEaFile ZwQueryFullAttributesFile ZwQueryInformationEnlistment ZwQueryInformationFile ZwQueryInformationResourceManager ZwQueryInformationToken ZwQueryInformationTransaction ZwQueryInformationTransactionManager ZwQueryKey ZwQueryObject ZwQueryQuotaInformationFile ZwQuerySecurityObject ZwQuerySymbolicLinkObject ZwQueryValueKey ZwQueryVolumeInformationFile ZwReadFile ZwReadOnlyEnlistment ZwRecoverEnlistment ZwRecoverTransactionManager ZwRollbackComplete ZwRollbackEnlistment ZwRollbackTransaction ZwRollforwardTransactionManager ZwSetEaFile ZwSetInformationEnlistment ZwSetInformationFile ZwSetInformationThread ZwSetInformationToken ZwSetInformationTransaction ZwSetQuotaInformationFile ZwSetSecurityObject ZwSetValueKey ZwSetVolumeInformationFile ZwSinglePhaseReject ZwTerminateProcess ZwUnloadDriver ZwUnlockFile ZwUnmapViewOfSection ZwWriteFile

Send comments about this topic to Microsoft