EVT_WDF_IO_WDM_IRP_FOR_FORWARD_PROGRESS callback function (wdfio.h)

[Applies to KMDF only]

A driver's EvtIoWdmIrpForForwardProgress callback function examines an I/O request packet (IRP) and determines whether to use a reserved request object to process the I/O request or to fail the I/O request.

Syntax

EVT_WDF_IO_WDM_IRP_FOR_FORWARD_PROGRESS EvtWdfIoWdmIrpForForwardProgress;

WDF_IO_FORWARD_PROGRESS_ACTION EvtWdfIoWdmIrpForForwardProgress(
  [in] WDFQUEUE Queue,
  [in] PIRP Irp
)
{...}

Parameters

[in] Queue

A handle to an I/O queue object.

[in] Irp

A pointer to an IRP structure.

Return value

The EvtIoWdmIrpForForwardProgress callback function must return a WDF_IO_FORWARD_PROGRESS_ACTION-typed value.

Remarks

A driver can register an EvtIoWdmIrpForForwardProgress callback function when it calls WdfIoQueueAssignForwardProgressPolicy.

If your driver registers an EvtIoWdmIrpForForwardProgress callback function, the framework calls the function if all of the following conditions exist:

  • The framework has received a I/O request packet (IRP) that the I/O manager is sending to the driver.
  • The framework has attempted to create a request object for the IRP, but the attempt failed.
  • The driver has enabled guaranteed forward progress for the I/O queue that should receive the request object, with the policy type set to WdfIoForwardProgressReservedPolicyUseExamine.
The framework passes the IRP to the EvtIoWdmIrpForForwardProgress callback function. The callback function must examine the IRP and determine whether the framework should use one of its reserved request objects for the IRP or (if the IRP is not important when the computer's available memory is low) fail the I/O request without delivering it to the driver. The callback function's return value specifies the action that the framework should take.

For more information about the EvtIoWdmIrpForForwardProgress callback function, see Guaranteeing Forward Progress of I/O Operations.

This callback function can be called at IRQL <= DISPATCH_LEVEL. If the IRQL is PASSIVE_LEVEL, the framework calls the callback function within a critical region.

Requirements

Requirement Value
Target Platform Universal
Minimum KMDF version 1.9
Header wdfio.h (include Wdf.h)
IRQL <= DISPATCH_LEVEL (see Remarks section)

See also

EvtIoAllocateRequestResources

EvtIoAllocateResourcesForReservedRequest