StopAcknowledge method

1/11/2018

3 minutes to read

In this article

[Warning: UMDF 2 is the latest version of UMDF and supersedes UMDF 1. All new UMDF drivers should be written using UMDF 2. No new features are being added to UMDF 1 and there is limited support for UMDF 1 on newer versions of Windows 10. Universal Windows drivers must use UMDF 2. For more info, see Getting Started with UMDF.]

The StopAcknowledge method informs the framework that the driver has stopped processing a specified I/O request.

Syntax

void StopAcknowledge(
[in] BOOL Requeue
);

Parameters

Requeue

A Boolean value that, if TRUE, causes the framework to requeue the request into the queue so that the framework will deliver it to the driver again. If FALSE, the framework does not requeue the request. For more information, see the following Remarks section.

Return Value

None.

Remarks

If a driver registers an IQueueCallbackIoStop::OnIoStop 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 this callback function for every I/O request that the driver owns at the time when the queue is being stopped. The driver must complete, cancel, or postpone processing of each request by doing one of the following:

If the driver does not call IWDFIoRequest::Complete or StopAcknowledge for every request that an IQueueCallbackIoStop::OnIoStop callback function receives, the framework does not allow the device to leave its working (D0) state. Potentially, this inaction can prevent a system from entering its hibernation state or another low system power state.

Setting Requeue to TRUE causes the framework to place the request back into its I/O queue.

When the underlying device returns to its working (D0) state, the framework will redeliver the request to the driver.

Setting Requeue to FALSE causes ownership of the request to remain with the driver. The driver must stop doing any I/O processing that requires hardware access.

When the underlying device returns to its working (D0) state, the framework will call the driver's IQueueCallbackIoResume::OnIoResume callback function, so that the driver can continue processing the request.

Before calling StopAcknowledge, the driver's IQueueCallbackIoStop::OnIoStop callback function must stop all processing of the I/O request that requires accessing the underlying device, because the device is about to enter a low-power state.

See Also

The feedback system for this content will be changing soon. Old comments will not be carried over. If content within a comment thread is important to you, please save a copy. For more information on the upcoming change, we invite you to read our blog post.