Rules for Audio Drivers

The DDI compliance rules for audio (PortCls) miniport drivers verify the DDI interface between PortCls.sys and its miniport drivers.

In this section

Topic Description

PcAddAdapterDevice

The PcAddAdapterDevice rule specifies that a PortCls miniport driver correctly uses the PcAddAdapterDevice function, specifically that the DeviceExtensionSize should be either zero (0) or no less than PORT_CLASS_DEVICE_EXTENSION_SIZE.

PcAllocateAndMapPages

The PcAllocateAndMapPages rule specifies that a PortCls miniport driver calls the following interfaces, using the correct parameters:

  • IPortWaveRTStream::AllocatePagesForMdl
  • IPortWaveRTStream::AllocateContiguousPagesForMdl
  • IPortWaveRTStream::MapAllocatedPages

PcAllocatedPages

The PcAllocatedPages rule specifies that a PortCls miniport driver frees previous allocated pages by calling AllocatePagesForMdl or AllocateContiguousPagesForMdl methods.

PcIrqlDDIs

The PcIrqlDDIs rule specifies that a PortCls miniport driver must call PortCls DDIs at the correct IRQL level.

PcIrqlIport

The PcIrqlIport rule specifies that a PortCls miniport driver must call PortCls IPort interfaces at the correct IRQL level.

PcPoRequestPowerIrp

This rule verifies that a PortCls miniport driver should not call PoRequestPowerIrp with IRP_MN_SET_POWER.

PcPropertyRequest

The PcPropertyRequest rule specifies that a PortCls miniport driver should never call the PcCompletePendingPropertyRequest with an NtStatus value of STATUS_PENDING.

PcRegisterAdapterPower

The PcRegisterAdapterPower rule specifies that a PortCls miniport driver should not:

PcTimedWaveRtStreamSetState

The PcTimedWaveRtStreamSetState rule specifies that a ProtCls miniport driver makes state transitions through IMiniportWaveRTStream::SetState within the required time.

PcUnmapAllocatedPages

The PcUnmapAllocatedPages rule specifies that:

  • A PortCls miniport driver doesn't map an MDL that is currently mapped without first unmapping it.
  • A PortCls miniport driver unmaps the memory prior to freeing it using the IMiniportWaveRTStream interface.