4#include "../ioprivshared.hpp"
8#if defined(EVENT_TRACING)
9#include "FxIoQueueKm.tmh"
20 &
Irp->Tail.Overlay.ListEntry);
72 for(thisEntry = listHead->
Flink;
73 thisEntry != listHead;
74 thisEntry = nextEntry) {
75 nextEntry = thisEntry->
Flink;
178 ASSERT(ReservedRequest->GetRefCnt() == 1);
181 ReservedRequest->ClearVerifierFlags(
194 ReservedRequest->ClearFieldsForReuse();
200 ReservedRequest->m_Irp.SetIrp(
pIrp);
204 ReservedRequest->SetVerifierFlags(
285 Irp->IoStatus.Information = 0;
352 *ReservedRequest =
NULL;
389 "EvtIoExamineIrp callback on WDFQUEUE %p returned an "
390 "invalid action %d, %!STATUS!",
410 "Forward action on WDFQUEUE %p says that framework should fail "
411 "the Irp %p, %!STATUS!",
492 "Setting Forward progress policy on non-top level queue %!STATUS!",
508 "Could not allocate memory for forward progress context %!STATUS!",
522 Policy->TotalForwardProgressRequests;
525 Policy->EvtIoAllocateResourcesForReservedRequest;
528 Policy->EvtIoAllocateRequestResources;
531 Policy->ForwardProgressReservePolicySettings.Policy.\
532 ExaminePolicy.EvtIoWdmIrpForForwardProgress;
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
__inline WDF_DEVICE_IO_TYPE GetIoType(VOID)
PFN_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST Method
PFN_WDF_IO_ALLOCATE_REQUEST_RESOURCES Method
PFN_WDF_IO_WDM_IRP_FOR_FORWARD_PROGRESS Method
WDF_IO_FORWARD_PROGRESS_ACTION Invoke(__in WDFQUEUE Queue, __in PIRP Irp)
BOOLEAN IsPagingIo(__in MdIrp Irp)
PFXIO_FORWARD_PROGRESS_CONTEXT m_FwdProgContext
static MdCancelRoutineType _WdmCancelRoutineForReservedIrp
_Must_inspect_result_ NTSTATUS QueueRequest(__in FxRequest *pRequest)
_Must_inspect_result_ NTSTATUS GetReservedRequest(__in MdIrp Irp, __deref_out_opt FxRequest **ReservedRequest)
VOID ReturnReservedRequest(__in FxRequest *ReservedRequest)
_Must_inspect_result_ NTSTATUS AssignForwardProgressPolicy(__in PWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY Policy)
VOID PutBackReservedRequest(__in FxRequest *ReservedRequest)
BOOLEAN m_SupportForwardProgress
_Must_inspect_result_ MdIrp GetForwardProgressIrpLocked(__in_opt PFILE_OBJECT FileObject)
VOID FreeAllReservedRequests(__in BOOLEAN Verify)
_Must_inspect_result_ NTSTATUS QueueForwardProgressIrpLocked(__in MdIrp Irp)
_Must_inspect_result_ NTSTATUS AllocateReservedRequest(__deref_out FxRequest **Request)
VOID FlushQueuedDpcs(VOID)
VOID GetForwardProgressIrps(__in PLIST_ENTRY IrpListHead, __in_opt MdFileObject FileObject)
VOID InsertQueueDpc(VOID)
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
__inline BOOLEAN IsTopLevelQueue(__in FxIoQueue *Queue)
__inline VOID SetVerifierFlags(__in SHORT Flags)
__inline PLIST_ENTRY GetListEntry(__in FxListEntryNames Index)
VOID AssignMemoryBuffers(__in WDF_DEVICE_IO_TYPE IoType)
static FxRequest * _FromOwnerListEntry(__in FxListEntryNames Index, __in PLIST_ENTRY OwnerListEntry)
__inline VOID Uninitialize()
__inline VOID Initialize()
#define NT_SUCCESS(StatCode)
BOOLEAN NTAPI KeInsertQueueDpc(IN PKDPC Dpc, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
#define __drv_useCancelIRQL
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define RemoveHeadList(ListHead)
#define InitializeListHead(ListHead)
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
PFX_DRIVER_GLOBALS pFxDriverGlobals
FxVerifierDbgBreakPoint(pFxDriverGlobals)
struct _FXIO_FORWARD_PROGRESS_CONTEXT * PFXIO_FORWARD_PROGRESS_CONTEXT
struct _FXIO_FORWARD_PROGRESS_CONTEXT FXIO_FORWARD_PROGRESS_CONTEXT
#define FX_IRP_QUEUE_CSQ_CONTEXT_ENTRY
void FxPoolFree(__in_xcount(ptr is at an offset from AllocationStart) PVOID ptr)
@ FxListEntryForwardProgress
@ FXREQUEST_FLAG_RESERVED_REQUEST_ASSOCIATED_WITH_IRP
GLuint GLuint GLsizei count
IoSetCancelRoutine(Irp, CancelRoutine)
PFILE_OBJECT MdFileObject
#define _Must_inspect_result_
#define ASSERTMSG(msg, exp)
#define UNREFERENCED_PARAMETER(P)
#define IoCompleteRequest
VOID NTAPI IoReleaseCancelSpinLock(IN KIRQL Irql)
#define TRACE_LEVEL_ERROR
LIST_ENTRY m_ReservedRequestInUseList
WDF_IO_FORWARD_PROGRESS_RESERVED_POLICY m_Policy
FxIoQueueForwardProgressAllocateResourcesReserved m_IoReservedResourcesAllocate
LIST_ENTRY m_PendedIrpList
MxLockNoDynam m_PendedReserveLock
FxIoQueueForwardProgressAllocateResources m_IoResourcesAllocate
LIST_ENTRY m_ReservedRequestList
FxIoQueueForwardProgressExamineIrp m_IoExamineIrp
ULONG m_NumberOfReservedRequests
_Must_inspect_result_ BOOLEAN IsVersionGreaterThanOrEqualTo(__in ULONG Major, __in ULONG Minor)
struct _LIST_ENTRY * Flink
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY Policy
@ WdfIoForwardProgressReservedPolicyPagingIO
@ WdfIoForwardProgressReservedPolicyAlwaysUseReservedRequest
@ WdfIoForwardProgressReservedPolicyUseExamine
@ WdfIoForwardProgressActionUseReservedRequest
@ WdfIoForwardProgressActionInvalid
@ WdfIoForwardProgressActionFailRequest
enum _WDF_IO_FORWARD_PROGRESS_ACTION WDF_IO_FORWARD_PROGRESS_ACTION