This topic has not yet been rated - Rate this topic

EvtDeviceArmWakeFromSx function

A driver's EvtDeviceArmWakeFromSx event callback function arms (that is, enables) a device so that it can trigger a wake signal while in a low-power device state. The wake signal causes the device to enter its working state (D0) and causes the system to enter its working state (S0).

Syntax


EVT_WDF_DEVICE_ARM_WAKE_FROM_SX EvtDeviceArmWakeFromSx;

NTSTATUS EvtDeviceArmWakeFromSx(
  _In_  WDFDEVICE Device
)
{ ... }

Parameters

Device [in]

A handle to a framework device object.

Return value

If the EvtDeviceArmWakeFromSx callback function encounters no error, it must return STATUS_SUCCESS or another status value for which NT_SUCCESS(status) equals TRUE. Otherwise it must return a status value for which NT_SUCCESS(status) equals FALSE.

If NT_SUCCESS(status) equals FALSE, the framework calls the driver's EvtDeviceDisarmWakeFromSx callback function. (The framework does not report a device failure to the PnP manager.)

Remarks

To register an EvtDeviceArmWakeFromSx callback function, a driver must call WdfDeviceInitSetPowerPolicyEventCallbacks. Drivers can register either an EvtDeviceArmWakeFromSx callback function or an EvtDeviceArmWakeFromSxWithReason callback function, but not both.

This callback function handles device-specific operations that are needed to enable the device to detect an external event that triggers a wake signal on the bus. The bus driver's EvtDeviceEnableWakeAtBus callback function handles bus-specific operations, such as enabling the PCI bus's Power Management Event (PME) signal.

If a driver has registered an EvtDeviceArmWakeFromSx or EvtDeviceArmWakeFromSxWithReason callback function, the framework calls it while the device is still in the D0 device power state, before the bus driver lowers the device's power state but after the framework has sent a wait/wake IRP on behalf of the driver.

The process occurs in the following sequence:

  1. The framework determines that the system is about to enter a low-power system state.

  2. The framework calls the driver's EvtDeviceArmWakeFromSx or EvtDeviceArmWakeFromSxWithReason callback function.

  3. The framework asks the driver for the device's bus to lower the device's power.

Immediately before a device enters a low-power state, the framework calls the driver's EvtDeviceD0Exit callback function.

For more information about when the framework calls this callback function, see PnP and Power Management Scenarios.

You do not need to provide an EvtDeviceArmWakeFromSx or EvtDeviceArmWakeFromSxWithReason callback function if your device does not require special hardware operations that enable the device to trigger a wake signal.

For more information about this callback function, see Supporting System Wake-Up.

Examples

The function type is declared in Wdfdevice.h, as follows.


typedef NTSTATUS
  (EVT_WDF_DEVICE_ARM_WAKE_FROM_SX)(
    IN WDFDEVICE  Device
    );

To define an EvtDeviceArmWakeFromSx callback function that is named MyDeviceArmWakeFromSx, you must first provide a function declaration that SDV and other verification tools require, as follows:


EVT_WDF_DEVICE_ARM_WAKE_FROM_SX MyDeviceArmWakeFromSx;

Then, implement your callback function as follows:


NTSTATUS
 MyDeviceArmWakeFromSx (
    IN WDFDEVICE  Device
    )
  {...}

Requirements

Version

Supported by version 1.0 and later versions of KMDF (see KMDF Version History).

Header

Wdfdevice.h (include Wdf.h)

IRQL

PASSIVE_LEVEL

See also

EvtDeviceArmWakeFromS0
EvtDeviceArmWakeFromSxWithReason
EvtDeviceDisarmWakeFromSx

 

 

Send comments about this topic to Microsoft

Build date: 4/23/2013

© 2013 Microsoft. All rights reserved.