Windows Driver Kit: Kernel-Mode Driver Framework
EvtDeviceSelfManagedIoRestart

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

EVT_WDF_DEVICE_SELF_MANAGED_IO_RESTART  EvtDeviceSelfManagedIoRestart;

NTSTATUS
  EvtDeviceSelfManagedIoRestart (
    IN WDFDEVICE  Device
    )
  {…}

You must declare the function by using the EVT_WDF_DEVICE_SELF_MANAGED_IO_RESTART type. For more information, see the following Example section.

Parameters

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.

Comments

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.

Example

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

EVT_WDF_DEVICE_SELF_MANAGED_IO_RESTART  MyDeviceSelfManagedIoRestart;

Then, implement your callback function as follows:

NTSTATUS
  MyDeviceSelfManagedIoRestart (
    IN WDFDEVICE  Device
    )
  {…}

Requirements

Versions: The EvtDeviceSelfManagedIoRestart callback function is supported by version 1.0 and later versions of KMDF.

IRQL: PASSIVE_LEVEL (see Comments section)

Headers: Defined in Wdfdevice.h, as follows:

typedef NTSTATUS
  (EVT_WDF_DEVICE_SELF_MANAGED_IO_RESTART)(
    IN WDFDEVICE  Device
    );

Include Wdf.h.

See Also

EvtDeviceSelfManagedIoCleanup, EvtDeviceSelfManagedIoFlush, EvtDeviceSelfManagedIoInit, EvtDeviceSelfManagedIoSuspend


Send feedback on this topic
Built on October 01, 2009
Page view tracker