POFXCALLBACKPLATFORMIDLEVETO callback function (pepfx.h)

The PlatformIdleVeto routine increments or decrements the veto count for a veto code for a platform idle state.

Syntax

POFXCALLBACKPLATFORMIDLEVETO Pofxcallbackplatformidleveto;

NTSTATUS Pofxcallbackplatformidleveto(
  [in] POHANDLE ProcessorHandle,
  [in] ULONG PlatformState,
  [in] ULONG VetoReason,
  [in] BOOLEAN Increment
)
{...}

Parameters

[in] ProcessorHandle

A POHANDLE value that represents the registration of the processor (as a device) with power management framework (PoFx). The platform extension plug-in (PEP) previously received this handle from PoFx during the PEP_DPM_REGISTER_DEVICE notification that informed the PEP that the processor had been registered with PoFx.

[in] PlatformState

The index of the platform idle state whose veto count is being incremented or decremented. The PEP previously specified the supported platform idle states in response to a PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES notification. If the PEP specified N platform idle states, valid platform idle state indexes range from 0 to N–1.

[in] VetoReason

A PEP-defined veto code that indicates why the platform idle state cannot be entered. The PEP previously specified the number of supported veto reasons in response to a PEP_NOTIFY_PPM_QUERY_VETO_REASONS notification. If the PEP specified M veto reasons, valid veto codes range from 1 to M.

[in] Increment

Whether to increment or decrement the veto count. Set to TRUE to increment the veto count for this veto reason, or to FALSE to decrement the count.

Return value

PlatformIdleVeto returns STATUS_SUCCESS if the call successfully increments or decrements the veto count. Possible error return values include the following status code.

Return value Description
STATUS_NOT_IMPLEMENTED
Indicates that the PlatformIdleVeto routine is not implemented for this processor.

Remarks

This routine is implemented by the PoFx and is called by the PEP. The PlatformIdleVeto member of the PEP_KERNEL_INFORMATION_STRUCT_V3 structure is a pointer to a PlatformIdleVeto routine.

After the PEP handles the PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES notification, each platform idle state starts with a veto count of zero for all veto codes. The PEP can increment the veto count of a veto code to prevent the operating system from transitioning the platform to this idle state. The PEP decrements the veto count when the veto reason that caused the count to be incremented is no longer in effect. Only after the count for all veto codes has decremented to zero is the operating system allowed to transition the platform to this idle state.

This routine must be called at IRQL = PASSIVE_LEVEL.

Requirements

Requirement Value
Minimum supported client Supported starting with Windows 10.
Target Platform Windows
Header pepfx.h (include Pep_x.h)
IRQL PASSIVE_LEVEL

See also

PEP_KERNEL_INFORMATION_STRUCT_V3

PEP_NOTIFY_PPM_QUERY_PLATFORM_STATES

PEP_NOTIFY_PPM_QUERY_VETO_REASONS