36 #define USE_DEFAULT_PRIORITY_BOOST ((CHAR) 0x7F) 42 #define FXREQUEST_STATE_TAG (PVOID) 'tatS' 47 #define FXREQUEST_QUEUE_TAG (PVOID) 'ueuQ' 52 #define FXREQUEST_COMPLETE_TAG (PVOID) 'pmoC' 58 #define FXREQUEST_HOLD_TAG (PVOID) 'dloH' 63 #define FXREQUEST_FWDPRG_TAG (PVOID) 'PdwF' 69 #define FXREQUEST_DCRC_TAG (PVOID) 'CRCD' 72 #if defined(EVENT_TRACING) 73 #include "FxRequest.hpp.tmh" 77 #if (FX_CORE_MODE == FX_CORE_USER_MODE) 78 #define WDF_REQUEST_SEND_OPTION_IMPERSONATION_FLAGS \ 79 (WDF_REQUEST_SEND_OPTION_IMPERSONATE_CLIENT | \ 80 WDF_REQUEST_SEND_OPTION_IMPERSONATION_IGNORE_FAILURE) 82 #define FxIrpStackFlagsFromSendFlags(sendFlags) \ 83 ((WUDFX_IRP_STACK_FLAGS) \ 84 ((sendFlags) & WDF_REQUEST_SEND_OPTION_IMPERSONATION_FLAGS)) 546 "WdfRequestGetCompletionParams will not return valid information if the" 547 " request is not formatted using WdfIoTargetFormatxxx DDIs" 691 return (WDFMEMORY)
handle;
794 "Completing WDFREQUEST 0x%p for IRP 0x%p with " 795 "Information 0x%I64x, %!STATUS!",
798 if (fxDevice !=
NULL) {
848 "Completing WDFREQUEST 0x%p for IRP 0x%p with " 849 "Information 0x%I64x, %!STATUS!",
859 VerifyPreProcessSendAndForget
933 #if (FX_CORE_MODE == FX_CORE_USER_MODE) 948 #if (FX_CORE_MODE == FX_CORE_USER_MODE) 1060 VerifyInsertIrpQueue,
1184 VerifyStopAcknowledge,
1224 VerifierBreakpoint_RequestEarlyDisposeDeferred
1236 VerifyRequestIsCancelable
1242 VerifyRequestIsNotCancelable
1248 VerifyRequestIsInCallerContext
1254 VerifyRequestIsInEvtIoStopContext
1260 VerifyRequestIsNotCompleted
1266 VerifyRequestIsTagRequest
1272 VerifyRequestIsAllocatedFromIo
1278 VerifyRequestIsCurrentStackValid
1284 VerifyRequestCanBeCompleted
1326 VerifyCompleteInternal,
1530 #endif // _FXREQUEST_H_ BOOLEAN m_ForwardRequestToParent
static _Must_inspect_result_ FxRequest * GetNextRequest(__in FxIrpQueue *IrpQueue)
VOID AddIrpReference(VOID)
__drv_restoresIRQL KIRQL __in BOOLEAN Unlock
VOID ClearPowerStopState(VOID)
virtual size_t GetBufferSize(VOID)
FxRequestCompletionState SetCompletionState(__in FxRequestCompletionState NewState)
VOID StopAcknowledge(__in BOOLEAN Requeue)
__inline BOOLEAN IsInIrpQueue(__in FxIrpQueue *pIrpQueue)
__in MdIrp __in PMdIoCsqIrpContext pCsqContext
_In_ ULONG _In_ ULONG _In_ ULONG Length
VOID ClearFieldsForReuse(VOID)
LIST_ENTRY m_OwnerListEntry
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
__inline NTSTATUS Complete(__in NTSTATUS Status)
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
VOID SetStatus(__in NTSTATUS Status)
#define WDF_PTR_ADD_OFFSET(_ptr, _offset)
IN BOOLEAN OUT PSTR Buffer
FxIoQueue * m_ForwardProgressQueue
#define UNREFERENCED_PARAMETER(P)
__inline PLIST_ENTRY GetListEntry(__in FxListEntryNames Index)
NTSTATUS(* PFN_FX_QUEUE_REQUEST_COMPLETE)(__in FxRequest *Request, __in FxIoQueue *Queue, __in_opt WDFCONTEXT Context)
_Must_inspect_result_ _In_ WDFREQUEST _In_ SECURITY_IMPERSONATION_LEVEL _In_ PFN_WDF_REQUEST_IMPERSONATE EvtRequestImpersonate
_Must_inspect_result_ _In_ WDFDEVICE _In_ PIRP _In_ WDFQUEUE Queue
_In_ WDFREQUEST _In_ PWDF_REQUEST_REUSE_PARAMS ReuseParams
VOID __inline SetStatus(__in NTSTATUS Status)
__inline BOOLEAN IsBufferSet(VOID)
_Must_inspect_result_ FxIoQueue * GetCurrentQueue(VOID)
friend FxRequestOutputBuffer
__inline VOID CopyCompletionParams(__in PWDF_REQUEST_COMPLETION_PARAMS Params)
enum _WDF_DEVICE_IO_TYPE WDF_DEVICE_IO_TYPE
_Must_inspect_result_ NTSTATUS GetParameters(__out PWDF_REQUEST_PARAMETERS Parameters)
PIO_STACK_LOCATION GetCurrentIrpStackLocation(VOID)
_Must_inspect_result_ NTSTATUS GetFileObject(__deref_out_opt FxFileObject **pFileObject)
__inline FxIrp * GetSubmitFxIrp(VOID)
#define STATUS_INVALID_DEVICE_REQUEST
UCHAR m_RequestBaseStaticFlags
IN PVOID IN PVOID IN USHORT IN USHORT Size
virtual _Must_inspect_result_ NTSTATUS QueryInterface(__in FxQueryInterfaceParams *Params)
static _Must_inspect_result_ NTSTATUS _Create(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in_opt PWDF_OBJECT_ATTRIBUTES RequestAttributes, __in_opt MdIrp Irp, __in_opt FxIoTarget *Target, __in FxRequestIrpOwnership Ownership, __in FxRequestConstructorCaller Caller, __deref_out FxRequest **Request)
static _Must_inspect_result_ NTSTATUS _CreateForPackage(__in CfxDevice *Device, __in PWDF_OBJECT_ATTRIBUTES RequestAttributes, __in MdIrp Irp, __deref_out FxRequest **Request)
virtual _Must_inspect_result_ PMDL GetMdl(VOID)
_Must_inspect_result_ NTSTATUS GetDeviceControlOutputMdl(__out PMDL *pMdl)
_Must_inspect_result_ NTSTATUS GetMemoryObject(__deref_out IFxMemory **Memory, __out PVOID *Buffer, __out size_t *Length)
PFILE_OBJECT MdFileObject
_Must_inspect_result_ NTSTATUS GetMdl(__out PMDL *pMdl)
__inline VOID SetInternalContext(PVOID Context)
LIST_ENTRY m_OwnerListEntry2
__inline NTSTATUS CompleteWithInformation(__in NTSTATUS Status, __in ULONG_PTR Information)
FxRequest(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in MdIrp Irp, __in FxRequestIrpOwnership Ownership, __in FxRequestConstructorCaller Caller, __in USHORT ObjectSize)
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
VOID PostProcessSendAndForget(VOID)
_Must_inspect_result_ NTSTATUS ProbeAndLockForWrite(__in PVOID Buffer, __in ULONG Length, __deref_out FxRequestMemory **pMemoryObject)
FxRequest * GetRequest(VOID)
WDFMEMORY GetMemoryHandle(__in USHORT Offset)
__inline FxIoQueue * GetIoQueue(VOID)
virtual PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
NTSTATUS SetInformation(__in ULONG_PTR Information)
__inline VOID SetBuffer(__in PVOID Buffer)
_Must_inspect_result_ NTSTATUS InsertTailIrpQueue(__in FxIrpQueue *IrpQueue, __out_opt ULONG *pRequestCount)
VOID PreProcessCompletionForDriverRequest(__in FxRequestCompletionState State, __in FxIoQueue *Queue)
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED LPLOOKUPSERVICE_COMPLETION_ROUTINE HANDLE * handle
FxRequest * GetRequest(VOID)
_In_ WDFREQUEST _In_ NTSTATUS _In_ CCHAR PriorityBoost
#define TRACE_LEVEL_VERBOSE
virtual USHORT GetFlags(VOID)
__inline BOOLEAN IsCancelled(VOID)
enum _SECURITY_IMPERSONATION_LEVEL SECURITY_IMPERSONATION_LEVEL
_In_ PWDFDEVICE_INIT _In_ PWDF_OBJECT_ATTRIBUTES RequestAttributes
virtual ULONG Release(__in PVOID Tag, __in LONG Line, __in_opt PSTR File)
virtual ULONG AddRefOverride(__in WDFOBJECT_OFFSET Offset, __in PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
_Must_inspect_result_ NTSTATUS ProbeAndLockForRead(__in PVOID Buffer, __in ULONG Length, __deref_out FxRequestMemory **pMemoryObject)
VOID PreProcessSendAndForget(VOID)
__inline VOID CopyCurrentIrpStackLocationToNext(VOID)
__inline VOID ClearBufferMdl(VOID)
virtual USHORT GetFlags(VOID)
VOID PostProcessCompletionForDriverRequest(__in FxRequestCompletionState State, __in FxIoQueue *Queue)
virtual WDFMEMORY GetHandle(VOID)
FX_DECLARE_VF_FUNCTION_P1(NTSTATUS, VerifyInsertIrpQueue, _In_ FxIrpQueue *)
DECLSPEC_SELECTANY const ULONG_PTR FxHandleValueMask
FxRequestOutputBuffer m_OutputBuffer
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
VOID __inline SetPriorityBoost(CCHAR PriorityBoost)
__inline PMdIoCsqIrpContext GetCsqContext(VOID)
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ _Strict_type_match_ POOL_TYPE _In_opt_ ULONG _In_ _Out_ WDFMEMORY * Memory
NTSTATUS CompleteInternalReserved(__in NTSTATUS Status, __in CCHAR PriorityBoost)
virtual VOID Delete(VOID)
__inline BOOLEAN IsBufferSet(VOID)
__inline BOOLEAN IsPowerStopAcknowledgedWithRequeue(VOID)
FORCEINLINE VOID WDF_REQUEST_COMPLETION_PARAMS_INIT(_Out_ PWDF_REQUEST_COMPLETION_PARAMS Params)
basic_ios< char, char_traits< char > > ios
virtual ULONG ReleaseOverride(__in WDFOBJECT_OFFSET Offset, __in PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
#define METHOD_OUT_DIRECT
virtual _Must_inspect_result_ PVOID GetBuffer(VOID)
_Must_inspect_result_ _In_ ULONG Flags
KPROCESSOR_MODE GetRequestorMode(VOID)
__inline VOID SetForwardProgressQueue(__in FxIoQueue *Queue)
__inline BOOLEAN IsReserved()
#define NT_SUCCESS(StatCode)
_In_ WDFCOLLECTION _In_ ULONG Index
friend FxRequestSystemBuffer
#define FxIrpStackFlagsFromSendFlags(sendFlags)
_Out_ PBOOLEAN _Out_ PBOOLEAN _Out_ PSECURITY_IMPERSONATION_LEVEL ImpersonationLevel
VOID PostProcessCompletionForReserved(__in FxRequestCompletionState State, __in FxIoQueue *Queue)
FX_DECLARE_VF_FUNCTION(VOID, VerifyPreProcessSendAndForget)
__inline PVOID GetInternalContext(VOID)
VOID SetInformation(__in ULONG_PTR Information)
__inline VOID SetBuffer(PVOID Buffer)
#define IRP_MJ_INTERNAL_DEVICE_CONTROL
_In_opt_ PVOID _In_ ULONG _In_ PVOID context
_In_ WDFREQUEST _In_ BOOLEAN Requeue
static __inline FxRequest * RetrieveFromCsqContext(__in PMdIoCsqIrpContext pCsqContext)
FxRequestConstructorCaller
__inline VOID SetReserved()
VOID SetImpersonationFlags(_In_ ULONG Flags)
_Must_inspect_result_ _In_ WDFREQUEST _In_ size_t _Out_ WDFMEMORY * MemoryObject
PVOID GetParameterIoctlType3InputBuffer(VOID)
__inline VOID SetMdl(PMDL Mdl)
virtual WDFMEMORY GetHandle(VOID)
virtual ULONG Release(__in PVOID Tag, __in LONG Line, __in_opt PSTR File)
static FxRequest * _FromOwnerListEntry(__in FxListEntryNames Index, __in PLIST_ENTRY OwnerListEntry)
__inline VOID SetCurrentQueue(__in FxIoQueue *Queue)
IWudfIoIrp * GetIoIrp(VOID)
#define _Must_inspect_result_
_Must_inspect_result_ _In_ WDFDEVICE Device
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
virtual PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
virtual _Must_inspect_result_ PMDL GetMdl(VOID)
_Must_inspect_result_ NTSTATUS Reuse(__in PWDF_REQUEST_REUSE_PARAMS ReuseParams)
#define KMDF_ONLY_CODE_PATH_ASSERT()
#define TRACE_LEVEL_ERROR
__inline VOID ClearBufferMdl(VOID)
_In_ ULONG _In_ ULONG Offset
ULONG_PTR GetInformation()
_Must_inspect_result_ NTSTATUS Impersonate(_In_ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, _In_ PFN_WDF_REQUEST_IMPERSONATE EvtRequestImpersonate, _In_opt_ PVOID Context)
FxRequestFromLookaside(__in CfxDevice *Device, __in MdIrp Irp)
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
virtual ULONG Release(__in PVOID Tag, __in LONG Line, __in_opt PSTR File)
__inline CHAR GetDefaultPriorityBoost(VOID)
KPROCESSOR_MODE GetRequestorMode(VOID)
VOID ReleaseIrpReference(VOID)
VOID Request VerifyRequestIsDriverOwned(FxDriverGlobals)
__inline BOOLEAN IsRequestForwardedToParent(VOID)
WDF_REQUEST_COMPLETION_PARAMS m_CompletionParams
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
FxRequestSystemBuffer(VOID)
ULONG GetParameterIoctlCodeBufferMethod(VOID)
friend VOID GetTriageInfo(VOID)
VOID __inline SetPresented(VOID)
_In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_IO_TYPE IoType
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
_Must_inspect_result_ NTSTATUS RemoveFromIrpQueue(__in FxIrpQueue *IrpQueue)
LIST_ENTRY m_ForwardProgressList
__inline VOID ClearFieldsForReuse(VOID)
FxRequestContext * m_RequestContext
ULONG_PTR GetInformation(VOID)
struct tagContext Context
virtual ULONG AddRef(__in PVOID Tag, __in LONG Line, __in_opt PSTR File)
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
__inline CfxDevice * GetDevice(VOID)
_Must_inspect_result_ NTSTATUS GetDeviceControlOutputMemoryObject(__deref_out IFxMemory **MemoryObject, __out PVOID *Buffer, __out size_t *Length)
#define RtlCopyMemory(Destination, Source, Length)
virtual ULONG AddRef(__in PVOID Tag, __in LONG Line, __in_opt PSTR File)
__inline VOID SetMdl(__in PMDL Mdl)
MdIoCsqIrpContext m_CsqContext
static VOID CheckAssumptions(VOID)
_Must_inspect_result_ NTSTATUS InsertHeadIrpQueue(__in FxIrpQueue *IrpQueue, __out_opt ULONG *pRequestCount)
FxRequestOutputBuffer(VOID)
virtual size_t GetBufferSize(VOID)
VOID CopyCurrentIrpStackLocationToNext(VOID)
UCHAR GetMajorFunction(VOID)
NTSTATUS CompleteInternal(__in NTSTATUS Status)
_Must_inspect_result_ NTSTATUS GetIrp(__deref_out MdIrp *ppIrp)
__inline VOID MarkRemovedFromIrpQueue(VOID)
static _Must_inspect_result_ NTSTATUS PeekRequest(__in FxIrpQueue *IrpQueue, __in_opt FxRequest *TagRequest, __in_opt MdFileObject FileObject, __out_opt PWDF_REQUEST_PARAMETERS Parameters, __deref_out FxRequest **ppOutRequest)
static SERVICE_STATUS status
PIO_STACK_LOCATION GetCurrentIrpStackLocation(VOID)
__inline WDFREQUEST GetHandle(VOID)
__inline NTSTATUS CompleteWithPriority(__in NTSTATUS Status, __in CCHAR PriorityBoost)
FxVerifierDbgBreakPoint(pFxDriverGlobals)
virtual VOID Delete(VOID)
VOID PostProcessCompletion(__in FxRequestCompletionState State, __in FxIoQueue *Queue)
#define IRP_MJ_DEVICE_CONTROL
virtual PVOID GetBuffer(VOID)
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
FxRequestSystemBuffer m_SystemBuffer
VOID AssignMemoryBuffers(__in WDF_DEVICE_IO_TYPE IoType)
__inline BOOLEAN IsPowerStopAcknowledged(VOID)