EVT_UDECX_USB_DEVICE_D0_EXIT callback function (udecxusbdevice.h)

The USB device emulation class extension (UdeCx) invokes this callback function when it gets a request to send the virtual USB device to a low power state.

Syntax

EVT_UDECX_USB_DEVICE_D0_EXIT EvtUdecxUsbDeviceD0Exit;

NTSTATUS EvtUdecxUsbDeviceD0Exit(
  [in] WDFDEVICE UdecxWdfDevice,
  [in] UDECXUSBDEVICE UdecxUsbDevice,
  [in] UDECX_USB_DEVICE_WAKE_SETTING WakeSetting
)
{...}

Parameters

[in] UdecxWdfDevice

A handle to a framework device object that represents the controller to which the USB device is attached. The client driver initialized this object in a previous call to UdecxWdfDeviceAddUsbDeviceEmulation.

[in] UdecxUsbDevice

A handle to UDE device object. The client driver created this object in a previous call to UdecxUsbDeviceCreate.

[in] WakeSetting

A UDECX_USB_DEVICE_WAKE_SETTING-type value that indicates remote wake capability of the USB device.

Return value

If the operation is successful, the callback function must return STATUS_SUCCESS, or another status value for which NT_SUCCESS(status) equals TRUE.

Remarks

The client driver registered the function in a previous call to UdecxUsbDeviceInitSetStateChangeCallbacks by supplying a function pointer to its implementation.

In the callback implementation, the client driver for the USB device is expected to perform steps to send the device to a low power state. In this function, the driver can initiate its wake-up from a low link power state, function suspend, or both. To do so, the driver for a USB 2.0 device must call the UdecxUsbDeviceSignalWake method. USB 3.0 devices must use UdecxUsbDeviceSignalFunctionWake.

The power request may be completed asynchronously by returning STATUS_PENDING, and then later calling UdecxUsbDeviceLinkPowerExitComplete with the actual completion code.

Requirements

Requirement Value
Minimum supported client Windows 10
Minimum supported server Windows Server 2016
Target Platform Windows
Minimum KMDF version 1.15
Header udecxusbdevice.h (include Udecx.h)
IRQL <=DISPATCH_LEVEL

See also

Architecture: USB Device Emulation (UDE)

EVT_UDECX_USB_DEVICE_D0_ENTRY

UdecxUsbDeviceLinkPowerExitComplete

UdecxUsbDeviceSignalWake

Write a UDE client driver