WdfIoQueueStop function (wdfio.h)

[Applies to KMDF and UMDF]

The WdfIoQueueStop method prevents an I/O queue from delivering I/O requests, but the queue receives and stores new requests.

Syntax

void WdfIoQueueStop(
  [in]           WDFQUEUE               Queue,
  [in, optional] PFN_WDF_IO_QUEUE_STATE StopComplete,
  [in, optional] WDFCONTEXT             Context
);

Parameters

[in] Queue

A handle to a framework queue object.

[in, optional] StopComplete

A pointer to a driver-supplied EvtIoQueueState callback function. This parameter is optional and can be NULL.

[in, optional] Context

An untyped pointer to driver-supplied context information that the framework passes to the EvtIoQueueState callback function. This parameter is optional and can be NULL.

Return value

None

Remarks

A bug check occurs if the driver supplies an invalid object handle.

If the driver supplies an EvtIoQueueState callback function, the framework calls it after all requests that were delivered to the driver have been completed or canceled. You can modify the IRQL at which the callback runs by specifying ExecutionLevel in WDF_OBJECT_ATTRIBUTES at queue creation time. For more info, see the Remarks section ofEVT_WDF_IO_QUEUE_STATE.

The WdfIoQueueStop method enables the queue to receive new requests, even if the queue was not receiving new requests before the driver called WdfIoQueueStop. For example, before calling WdfIoQueueStop, a driver might call WdfIoQueueDrain, which causes the framework to stop adding new I/O requests to the queue. The driver's subsequent call of WdfIoQueueStop causes the framework to resume adding requests to the queue.

A driver must not call WdfIoQueueDrain after calling WdfIoQueueStop until it has restarted the queue by calling WdfIoQueueStart.

For more information about the WdfIoQueueStop method, see Managing I/O Queues.

Examples

The following code example stops a specified I/O queue. When all requests that were delivered to the driver have been completed or canceled, it calls a driver's EvtIoQueueStateStop function.

WDFCONTEXT stopContext;

stopContext = &myContext;

WdfIoQueueStop(
               queue,
               EvtIoQueueStateStop,
               stopContext
               );

Requirements

Requirement Value
Target Platform Universal
Minimum KMDF version 1.0
Minimum UMDF version 2.0
Header wdfio.h (include Wdf.h)
Library Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL
DDI compliance rules ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NoCancelFromEvtSurpriseRemove(kmdf)

See also

EvtIoQueueState

WdfIoQueueStart

WdfIoQueueStopSynchronously