Expand Minimize

EvtDeviceWdmPostPoFxRegisterDevice function

[Applies to KMDF only]

The EvtDeviceWdmPostPoFxRegisterDevice callback function performs device-specific operations after the framework has registered with the power framework.

Syntax


EVT_WDFDEVICE_WDM_POST_PO_FX_REGISTER_DEVICE EvtDeviceWdmPostPoFxRegisterDevice;

NTSTATUS EvtDeviceWdmPostPoFxRegisterDevice(
  _In_  WDFDEVICE Device,
  _In_  POHANDLE PoHandle
)
{ ... }

Parameters

Device [in]

A handle to a framework device object.

PoHandle [in]

A handle that represents the device’s registration with the power framework.

Return value

An NTSTATUS value indicating success or failure of the operations performed in this callback. If failure is returned, the framework in turn will fail IRP_MN_START_DEVICE.

Remarks

If you are writing a KMDF driver for a single-component device that defines multiple functional power states, you can register an EvtDeviceWdmPostPoFxRegisterDevice callback function to receive notification after the framework registers with the power management framework (PoFx).

To register EvtDeviceWdmPostPoFxRegisterDevice, a driver must call WdfDeviceWdmAssignPowerFrameworkSettings.

The POHANDLE received in EvtDeviceWdmPostPoFxRegisterDevice remains valid until the driver returns from EvtDeviceWdmPrePoFxUnregisterDevice.

Your driver can use the POHANDLE to call PoFxSetComponentLatency, PoFxSetComponentResidency, and PoFxSetComponentWake to specify latency, residency, and wake hints to the power framework.

Your driver can also use the POHANDLE to call PoFxPowerControl to send a power control request to PoFx.

A KMDF driver for a multiple component device does not provide EvtDeviceWdmPostPoFxRegisterDevice. Instead, such a driver receives the POHANDLE when it calls PoFxRegisterDevice. For more information, see Supporting Multiple Functional Power States for Multiple-Component Devices.

Examples

To define an EvtDeviceWdmPostPoFxRegisterDevice callback function, you must first provide a function declaration that identifies the type of callback function you’re defining. Windows provides a set of callback function types for drivers. Declaring a function using the callback function types helps Code Analysis for Drivers, Static Driver Verifier (SDV), and other verification tools find errors, and it’s a requirement for writing drivers for the Windows operating system.

For example, to define an EvtDeviceWdmPostPoFxRegisterDevice callback function that is named MyDeviceWdmPostPoFxRegisterDevice, use the EVT_WDFDEVICE_WDM_POST_PO_FX_REGISTER_DEVICE type as shown in this code example:


EVT_WDFDEVICE_WDM_POST_PO_FX_REGISTER_DEVICE  MyDeviceWdmPostPoFxRegisterDevice;

Then, implement your callback function as follows.


_Use_decl_annotations_
VOID
 MyDeviceWdmPostPoFxRegisterDevice (
   WDFDEVICE Device,
   POHANDLE PoHandle
   );
  {...}

The EVT_WDFDEVICE_WDM_POST_PO_FX_REGISTER_DEVICE function type is defined in the Wdfdevice.h header file. To more accurately identify errors when you run the code analysis tools, be sure to add the _Use_decl_annotations_ annotation to your function definition. The _Use_decl_annotations_ annotation ensures that the annotations that are applied to the EVT_WDFDEVICE_WDM_POST_PO_FX_REGISTER_DEVICE function type in the header file are used. For more information about the requirements for function declarations, see Declaring Functions by Using Function Role Types for KMDF Drivers. For information about _Use_decl_annotations_, see Annotating Function Behavior.

Requirements

Minimum KMDF version

1.11

Header

Wdfdevice.h (include Wdf.h)

IRQL

PASSIVE_LEVEL

See also

WdfDeviceWdmAssignPowerFrameworkSettings
EvtDeviceWdmPrePoFxUnregisterDevice

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft