EVT_WDF_IO_QUEUE_IO_STOP - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// wdfio.h

EVT_WDF_IO_QUEUE_IO_STOP EvtWdfIoQueueIoStop;

VOID EvtWdfIoQueueIoStop(
  [in] WDFQUEUE Queue,
  [in] WDFREQUEST Request,
  [in] ULONG ActionFlags
)
{...}
View the official Windows Driver Kit DDI reference

NtDoc

No description available.

Windows Driver Kit DDI reference (nc-wdfio-evt_wdf_io_queue_io_stop)

EVT_WDF_IO_QUEUE_IO_STOP callback function

Description

[Applies to KMDF and UMDF]

A driver's EvtIoStop event callback function completes, requeues, or suspends processing of a specified request because the request's I/O queue is being stopped.

Parameters

Queue [in]

A handle to the framework queue object that is associated with the I/O request.

Request [in]

A handle to a framework request object.

ActionFlags [in]

A bitwise OR of one or more WDF_REQUEST_STOP_ACTION_FLAGS-typed flags that identify the reason that the callback function is being called and whether the request is cancelable.

Remarks

A driver registers an EvtIoStop callback function when it calls WdfIoQueueCreate. For more information about calling WdfIoQueueCreate, see Creating I/O Queues.

If a driver registers an EvtIoStop callback function for an I/O queue, the framework calls it when the queue's underlying device is leaving its working (D0) state. The framework calls the EvtIoStop callback function for every I/O request that the driver has not completed, including requests that the driver owns and those that it has forwarded to an I/O target.

In most cases, the EvtIoStop callback function completes, cancels, or postpones further processing of the I/O request.

Typically, the driver does one of the following:

A driver might choose to take no action in EvtIoStop for requests that are guaranteed to complete in a small amount of time.

In this case, the framework waits until the specified request is complete before moving the device (or system) to a lower power state or removing the device. Potentially, this inaction can prevent a system from entering its hibernation state or another low system power state. In extreme cases, it can cause the system to crash with bugcheck code 9F.

If the WdfRequestStopRequestCancelable flag is set in the ActionFlags parameter, the driver must call WdfRequestUnmarkCancelable before it calls WdfRequestComplete to complete (or cancel) the request or WdfRequestStopAcknowledge to requeue the request.

If the driver forwards an I/O request from one of its request handlers and specifies the WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET flag in the request's WDF_REQUEST_SEND_OPTIONS structure, the framework does not call the driver's EvtIoStop callback function for this request. However, if the driver forwards the same I/O request from another thread, the framework might call EvtIoStop for this request.

For more information about the EvtIoStop callback function, see Using Power-Managed I/O Queues.

This callback function can be called at IRQL <= DISPATCH_LEVEL, unless the ExecutionLevel member of the device or driver's WDF_OBJECT_ATTRIBUTES structure is set to WdfExecutionLevelPassive.

See also

EvtIoResume

WDF_OBJECT_ATTRIBUTES

WDF_REQUEST_STOP_ACTION_FLAGS

WdfIoQueueCreate

WdfRequestComplete

WdfRequestStopAcknowledge