EVT_WDF_DEVICE_SELF_MANAGED_IO_RESTART callback function (wdfdevice.h)

[Applies to KMDF and UMDF]

A driver's EvtDeviceSelfManagedIoRestart event callback function restarts a device's self-managed I/O operations.



NTSTATUS EvtWdfDeviceSelfManagedIoRestart(
  [in] WDFDEVICE Device


[in] Device

A handle to a framework device object.

Return value

If the EvtDeviceSelfManagedIoRestart callback function encounters no errors, 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 stops the device and unloads the device's drivers.

If NT_SUCCESS(status) equals FALSE, the framework calls the driver's EvtDeviceSelfManagedIoFlush and EvtDeviceSelfManagedIoCleanup callback functions.

For more information about this callback function's return values, see Reporting Device Failures.


To register an EvtDeviceSelfManagedIoRestart callback function, a driver must call WdfDeviceInitSetPnpPowerEventCallbacks.

If the driver has registered an EvtDeviceSelfManagedIoRestart callback function, the framework calls it each time that the device returns from a low-power state to its working (D0) state. The framework calls the EvtDeviceSelfManagedIoRestart callback function only after calling the driver's EvtDeviceSelfManagedIoSuspend callback function.

The driver's EvtDeviceSelfManagedIoRestart callback function must do whatever is needed to resume the device's self-managed I/O operations.

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

For more information about drivers that provide this callback function, see Using Self-Managed I/O.

The EvtDeviceSelfManagedIoRestart callback function is called at IRQL = PASSIVE_LEVEL. You should not make this callback function pageable.


Target Platform Universal
Minimum KMDF version 1.0
Minimum UMDF version 2.0
Header wdfdevice.h (include Wdf.h)
IRQL PASSIVE_LEVEL (see Remarks section)

See also