30#ifndef _FXREQUESTBASE_H_
31#define _FXREQUESTBASE_H_
35#define WDF_REQUEST_REUSE_MUST_COMPLETE 2
63#define WDF_REQUEST_SEND_INTERNAL_OPTION_FAIL_ON_PEND (0x80000000)
65#define WDF_REQUEST_INTERNAL_CONSTRAINTS_VALID_FLAGS \
66 (WDF_REQUEST_SEND_INTERNAL_OPTION_FAIL_ON_PEND)
748#if (FX_CORE_MODE == FX_CORE_KERNEL_MODE)
955#if ((FX_CORE_MODE)==(FX_CORE_KERNEL_MODE))
957#elif ((FX_CORE_MODE)==(FX_CORE_USER_MODE))
#define InterlockedDecrement
VOID SetContext(__in ULONG Index, __in PVOID Value)
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
__drv_restoresIRQL KIRQL __in BOOLEAN Unlock
VOID MarkDisposeOverride(__in FxObjectLockState State=ObjectLock)
MdIrp SetSubmitIrp(__in_opt MdIrp NewIrp, __in BOOLEAN FreeIrp=TRUE)
__inline BOOLEAN ShouldClearContext(VOID)
WDFOBJECT_OFFSET_ALIGNED m_OutputBufferOffset
SINGLE_LIST_ENTRY m_DrainSingleEntry
VOID __inline SetPriorityBoost(CCHAR PriorityBoost)
LONG m_IrpCompletionReferenceCount
__inline FxIrp * GetSubmitFxIrp(VOID)
BOOLEAN __inline IsCanComplete(VOID)
virtual ~FxRequestBase(VOID)
__inline VOID SetVerifierFlags(__in SHORT Flags)
DECLSPEC_NORETURN VOID FatalError(__in NTSTATUS Status)
struct FxRequestBase::@4800::@4807 m_VeriferFlagsByName
VOID ClearFieldsForReuse(VOID)
__inline PVOID GetTraceObjectHandle(VOID)
WDFCONTEXT m_TargetCompletionContext
__inline VOID SetTargetFlags(__in UCHAR Flags)
struct FxRequestBase::@4798::@4806 m_TargetFlagsByName
__inline BOOLEAN HasContext(VOID)
__inline BOOLEAN CanComplete(VOID)
VOID CompleteSubmitted(VOID)
__inline VOID ClearVerifierFlagsLocked(__in SHORT Flags)
static __inline FxRequestBase * _FromListEntry(__in PLIST_ENTRY Entry)
__inline BOOLEAN IsCompletionRoutineSet(VOID)
__inline ULONG ClearTargetFlags(__in UCHAR Flags)
__inline VOID SetContext(__in FxRequestContext *RequestContext=NULL)
UCHAR m_RequestBaseStaticFlags
__inline VOID SetRequestBaseFlags(__in UCHAR Flags)
struct FxRequestBase::@4804::@4809 m_RequestBaseStaticFlagsByName
SHORT DriverInEvtIoStopContext
FxRequestContext * m_RequestContext
__inline VOID ClearVerifierFlags(__in SHORT Flags)
__inline BOOLEAN VerifierIsFormatted(VOID)
__inline VOID SetVerifierFlagsLocked(__in SHORT Flags)
__inline FxRequestContext * GetContext(VOID)
static __inline FxRequestBase * _FromDrainEntry(__in PSINGLE_LIST_ENTRY Entry)
__inline MdIrp GetSubmitIrp(VOID)
__inline WDFREQUEST GetHandle(VOID)
SHORT GetVerifierFlagsLocked(VOID)
__inline VOID VerifierClearFormatted(VOID)
VOID ContextReleaseAndRestore(VOID)
__inline FxIoTarget * GetTarget(VOID)
VOID CompleteSubmittedNoContext(VOID)
_Must_inspect_result_ BOOLEAN CancelTimer(VOID)
FxRequestCompletionCallback m_CompletionRoutine
_Must_inspect_result_ NTSTATUS ValidateTarget(__in FxIoTarget *Target)
BOOLEAN __inline IsAllocatedDriver(VOID)
__inline BOOLEAN IsCancelRoutineSet(VOID)
VOID ZeroOutDriverContext(VOID)
BOOLEAN m_NextStackLocationFormatted
BOOLEAN __inline IsAllocatedFromIo(VOID)
__inline VOID VerifierSetFormatted(VOID)
__inline VOID SetCompletionRoutine(__in_opt PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine=NULL, __in_opt WDFCONTEXT CompletionContext=NULL)
VOID __inline SetTarget(__in FxIoTarget *Target)
virtual BOOLEAN Dispose(VOID)
SHORT DriverInprocessContext
struct FxRequestBase::@4802::@4808 m_RequestBaseFlagsByName
FX_DECLARE_VF_FUNCTION(VOID, VerifyDispose)
__inline BOOLEAN HasContextType(__in FX_REQUEST_CONTEXT_TYPE Type)
static __inline FxRequestBase * _FromCsqContext(__in PMdIoCsqIrpContext Context)
MdIoCsqIrpContext m_CsqContext
__inline VOID SetCompleted(__in BOOLEAN Value)
__inline SHORT GetVerifierFlags(VOID)
WDFOBJECT_OFFSET_ALIGNED m_SystemBufferOffset
WDFCONTEXT ClearCompletionContext(VOID)
static MdDeferredRoutineType _TimerDPC
__inline VOID EnableContextDisposeNotification(VOID)
PFN_WDF_REQUEST_COMPLETION_ROUTINE ClearCompletionRoutine(VOID)
VOID StartTimer(__in LONGLONG Timeout)
__inline UCHAR GetTargetFlags(VOID)
FxRequestCancelCallback m_CancelRoutine
CCHAR __inline GetPriorityBoost(VOID)
PFN_WDF_REQUEST_CANCEL m_Cancel
PFN_WDF_REQUEST_COMPLETION_ROUTINE m_Completion
return pObject GetObjectHandle()
return pRequest CreateTimer()
FxRequestAllocationSource
@ REQUEST_ALLOCATED_FROM_IO
@ REQUEST_ALLOCATED_DRIVER
@ REQUEST_ALLOCATED_INTERNAL
FxRequestConstructorCaller
@ FxRequestConstructorCallerIsDriver
@ FxRequestConstructorCallerIsFx
@ FX_REQUEST_IGNORE_STATE
@ FX_REQUEST_CANCELLED_FROM_TIMER
@ FxRequestBaseStaticSystemBufferValid
@ FxRequestBaseStaticOutputBufferValid
@ FxRequestBaseOutputMdlMapped
@ FxRequestBaseSyncCleanupContext
@ FxRequestBaseSystemMdlMapped
@ FXREQUEST_FLAG_DRIVER_INPROCESS_CONTEXT
@ FXREQUEST_FLAG_TAG_REQUEST
@ FXREQUEST_FLAG_FORMATTED
@ FXREQUEST_FLAG_CANCELLED
@ FXREQUEST_FLAG_DRIVER_CANCELABLE
@ FXREQUEST_FLAG_DRIVER_IN_EVTIOSTOP_CONTEXT
@ FXREQUEST_FLAG_FORWARDED
@ FXREQUEST_FLAG_SENT_TO_TARGET
@ FXREQUEST_FLAG_DRIVER_DISPATCH
@ FXREQUEST_FLAG_RESERVED_REQUEST_ASSOCIATED_WITH_IRP
@ FXREQUEST_FLAG_DRIVER_OWNED
@ FxRequestCompletionStateIoPkgFlag
@ FxRequestCompletionStateIoPkg
@ FxRequestCompletionStateQueue
@ FxRequestCompletionStateNone
VOID(* PFN_COMPLETE_COPY_ROUTINE)(__in FxIoTarget *This, __in FxRequest *Request, __in_opt FxRequestContext *Context)
UCHAR FX_REQUEST_CONTEXT_TYPE
@ FX_REQUEST_CONTEXT_TYPE_NONE
GLuint GLuint GLsizei count
#define _Must_inspect_result_
KDEFERRED_ROUTINE MdDeferredRoutineType
#define DECLSPEC_NORETURN
base of all file and directory entries
FX_REQUEST_CONTEXT_TYPE m_RequestType
virtual VOID ReleaseAndRestore(__in FxRequestBase *Request)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_In_ WDFREQUEST _In_ NTSTATUS _In_ CCHAR PriorityBoost
EVT_WDF_REQUEST_COMPLETION_ROUTINE * PFN_WDF_REQUEST_COMPLETION_ROUTINE
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE _In_opt_ __drv_aliasesMem WDFCONTEXT CompletionContext
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
_Must_inspect_result_ _In_ ULONG Flags