ReactOS 0.4.15-dev-7942-gd23573b
fxpkgio.cpp File Reference
#include "ioprivshared.hpp"
Include dependency graph for fxpkgio.cpp:

Go to the source code of this file.

Functions

_Must_inspect_result_ NTSTATUS FX_VF_METHOD (FxPkgIo, VerifyDispatchContext)(_In_ PFX_DRIVER_GLOBALS FxDriverGlobals
 
 PAGED_CODE_LOCKED ()
 
 for (next=m_DynamicDispatchInfoListHead.Flink;next !=&m_DynamicDispatchInfoListHead;next=next->Flink)
 
 if (FALSE==ctxValid)
 
_Must_inspect_result_ NTSTATUS FX_VF_METHOD (FxPkgIo, VerifyEnqueueRequestUpdateFlags)(_In_ PFX_DRIVER_GLOBALS FxDriverGlobals
 
 if (NT_SUCCESS(status))
 
Request Unlock (irql)
 
VOID FX_VF_METHOD (FxPkgIo, VerifyEnqueueRequestRestoreFlags)(_In_ PFX_DRIVER_GLOBALS FxDriverGlobals
 
Request ClearVerifierFlagsLocked (~OrigVerifierFlags)
 
Request SetVerifierFlagsLocked (OrigVerifierFlags)
 
static VOID GetIoQueueList_ProcessQueueListEntry (PLIST_ENTRY QueueLE, PSINGLE_LIST_ENTRY SListHead, PVOID Tag)
 

Variables

_Must_inspect_result_ NTSTATUS _In_ WDFCONTEXT DispatchContext
 
BOOLEAN ctxValid
 
PLIST_ENTRY next
 
return status = Request->VerifyRequestIsInCallerContext(FxDriverGlobals)
 
_Must_inspect_result_ NTSTATUS _In_ FxRequestRequest
 
_Must_inspect_result_ NTSTATUS _In_ FxRequest _Inout_ SHORTOrigVerifierFlags
 
KIRQL irql
 

Function Documentation

◆ ClearVerifierFlagsLocked()

Request ClearVerifierFlagsLocked ( OrigVerifierFlags)

◆ for()

for ( next  = m_DynamicDispatchInfoListHead.Flink; next != &m_DynamicDispatchInfoListHead; next = next->Flink)

Definition at line 141 of file fxpkgio.cpp.

143 {
145 ctxValid = TRUE;
146 break;
147 }
148 }
#define TRUE
Definition: types.h:120
PLIST_ENTRY next
Definition: fxpkgio.cpp:130
BOOLEAN ctxValid
Definition: fxpkgio.cpp:129
Definition: typedefs.h:120
_In_ UCHAR _In_ UCHAR _In_ ULONG _In_ WDFCONTEXT _Inout_ PIRP _In_ WDFCONTEXT DispatchContext
Definition: wdfdevice.h:1708

◆ FX_VF_METHOD() [1/3]

_Must_inspect_result_ NTSTATUS FX_VF_METHOD ( FxPkgIo  ,
VerifyDispatchContext   
)

◆ FX_VF_METHOD() [2/3]

VOID FX_VF_METHOD ( FxPkgIo  ,
VerifyEnqueueRequestRestoreFlags   
)

◆ FX_VF_METHOD() [3/3]

_Must_inspect_result_ NTSTATUS FX_VF_METHOD ( FxPkgIo  ,
VerifyEnqueueRequestUpdateFlags   
)

◆ GetIoQueueList_ProcessQueueListEntry()

static VOID GetIoQueueList_ProcessQueueListEntry ( PLIST_ENTRY  QueueLE,
PSINGLE_LIST_ENTRY  SListHead,
PVOID  Tag 
)
static

Definition at line 1451 of file fxpkgio.cpp.

1456{
1457 FxIoQueueNode* listNode;
1459
1460 //
1461 // Skip any nodes that are not queues. They can be bookmarks for
1462 // in-progress flush operations.
1463 //
1464 listNode = FxIoQueueNode::_FromListEntry(QueueLE);
1465 if (listNode->IsNodeType(FxIoQueueNodeTypeQueue) == FALSE) {
1466 return;
1467 }
1468
1470 PushEntryList(SListHead, &queue->m_PowerSListEntry);
1471
1472 //
1473 // Add a reference since the request will be touched outside of the
1474 // lock being held. We will use the enumerant value as the tag.
1475 //
1476 queue->ADDREF(Tag);
1477}
static __inline FxIoQueue * _FromIoPkgListEntry(__in PLIST_ENTRY Entry)
Definition: fxioqueue.hpp:1216
Definition: _queue.h:67
#define FALSE
Definition: types.h:117
@ FxIoQueueNodeTypeQueue
Definition: fxioqueue.hpp:46
static FxIoQueueNode * _FromListEntry(__in PLIST_ENTRY Entry)
Definition: fxioqueue.hpp:98
__inline BOOLEAN IsNodeType(__in FxIoQueueNodeType NodeType)
Definition: fxioqueue.hpp:117
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
Definition: wdfdevice.h:4065
FORCEINLINE VOID PushEntryList(_Inout_ PSINGLE_LIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PSINGLE_LIST_ENTRY Entry)
Definition: rtlfuncs.h:253

Referenced by FxPkgIo::GetIoQueueListLocked().

◆ if() [1/2]

if ( FALSE  = ctxValid)

Definition at line 150 of file fxpkgio.cpp.

150 {
153 FxDriverGlobals, TRACE_LEVEL_ERROR, TRACINGIO,
154 "DispatchContext 0x%p is invalid, %!STATUS!",
156 FxVerifierDbgBreakPoint(FxDriverGlobals);
157 }
#define TRACINGIO
Definition: dbgtrace.h:66
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
FxVerifierDbgBreakPoint(pFxDriverGlobals)
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
Definition: ps.c:97
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135

◆ if() [2/2]

if ( NT_SUCCESS(status )

Definition at line 569 of file fxpkgio.cpp.

569 {
570 status = Request->VerifyRequestIsDriverOwned(FxDriverGlobals);
571 }
_In_ WDFREQUEST Request
Definition: wdfdevice.h:547

◆ PAGED_CODE_LOCKED()

PAGED_CODE_LOCKED ( )

Referenced by FX_VF_METHOD().

◆ SetVerifierFlagsLocked()

Request SetVerifierFlagsLocked ( OrigVerifierFlags  )

◆ Unlock()

Request Unlock ( irql  )

Variable Documentation

◆ ctxValid

ctxValid
Initial value:
&m_DynamicDispatchInfoListHead ?
struct _LIST_ENTRY * PLIST_ENTRY

Definition at line 129 of file fxpkgio.cpp.

Referenced by for(), and VerifyWdfDeviceWdmDispatchIrp().

◆ DispatchContext

Initial value:
{
LONG NTSTATUS
Definition: precomp.h:26
#define STATUS_SUCCESS
Definition: shellext.h:65

Definition at line 125 of file fxpkgio.cpp.

◆ irql

Request Lock& irql

Definition at line 562 of file fxpkgio.cpp.

Referenced by FX_VF_METHOD().

◆ next

Definition at line 130 of file fxpkgio.cpp.

Referenced by for().

◆ OrigVerifierFlags

VOID _In_ FxRequest _In_ SHORT OrigVerifierFlags
Initial value:

Definition at line 555 of file fxpkgio.cpp.

◆ Request

Definition at line 554 of file fxpkgio.cpp.

◆ status

return status = Request->VerifyRequestIsInCallerContext(FxDriverGlobals)

Definition at line 159 of file fxpkgio.cpp.