ReactOS  0.4.15-dev-2703-g05fb0f1
FxIoTargetSelf Class Reference

#include <fxiotargetself.hpp>

Inheritance diagram for FxIoTargetSelf:
Collaboration diagram for FxIoTargetSelf:

Public Member Functions

 FxIoTargetSelf (_In_ PFX_DRIVER_GLOBALS FxDriverGlobals, _In_ USHORT ObjectSize)
virtual _Must_inspect_result_ MdDeviceObject GetTargetDeviceObject (_In_ CfxDeviceBase *Device)
FxIoQueueGetDispatchQueue (_In_ UCHAR MajorFunction)
VOID SetDispatchQueue (_In_ FxIoQueue *DispatchQueue)
virtual VOID Send (_In_ MdIrp Irp)
- Public Member Functions inherited from FxIoTarget
 FxIoTarget (__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in USHORT ObjectSize)
 FxIoTarget (__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in USHORT ObjectSize, __in WDFTYPE WdfType)
virtual _Must_inspect_result_ NTSTATUS Start (VOID)
virtual VOID Stop (__in WDF_IO_TARGET_SENT_IO_ACTION Action)
virtual VOID Purge (__in WDF_IO_TARGET_PURGE_IO_ACTION Action)
virtual VOID Remove (VOID)
NTSTATUS _Must_inspect_result_ QueryInterface (__inout FxQueryInterfaceParams *Params)
__inline WDF_IO_TARGET_STATE GetState (VOID)
__inline MdDeviceObject GetTargetDevice (VOID)
__inline MdDeviceObject GetTargetPDO (VOID)
__inline MdFileObject GetTargetFileObject (VOID)
__inline WDFDEVICE GetDeviceHandle (VOID)
__inline FxDriverGetDriver (VOID)
_Must_inspect_result_ NTSTATUS Init (__in CfxDeviceBase *Device)
ULONG Submit (__in FxRequestBase *Request, __in_opt PWDF_REQUEST_SEND_OPTIONS Options, __in_opt ULONG Flags)
 FX_DECLARE_VF_FUNCTION_P1 (NTSTATUS, VerifySubmitLocked, _In_ FxRequestBase *)
ULONG SubmitLocked (__in FxRequestBase *Request, __in_opt PWDF_REQUEST_SEND_OPTIONS Options, __in ULONG Flags)
_Must_inspect_result_ NTSTATUS SubmitSync (__in FxRequestBase *Request, __in_opt PWDF_REQUEST_SEND_OPTIONS Options=NULL, __out_opt PULONG Action=NULL)
VOID TimerCallback (__in FxRequestBase *Request)
VOID CompleteCanceledRequest (__in FxRequestBase *Request)
VOID SubmitPendedRequest (__in FxRequestBase *Request)
VOID CompletePendedRequest (__in FxRequestBase *Request)
BOOLEAN __inline HasEnoughStackLocations (__in FxIrp *Irp)
_Must_inspect_result_ NTSTATUS FormatIoRequest (__inout FxRequestBase *Request, __in UCHAR MajorCode, __in FxRequestBuffer *IoBuffer, __in_opt PLONGLONG StartingOffset, __in_opt FxFileObject *FileObject=NULL)
_Must_inspect_result_ NTSTATUS FormatIoctlRequest (__in FxRequestBase *Request, __in ULONG Ioctl, __in BOOLEAN Internal, __in FxRequestBuffer *InputBuffer, __in FxRequestBuffer *OutputBuffer, __in_opt FxFileObject *FileObject=NULL)
_Must_inspect_result_ NTSTATUS FormatInternalIoctlOthersRequest (__in FxRequestBase *Request, __in ULONG Ioctl, __in FxRequestBuffer *Buffers)
VOID CancelSentIo (VOID)
_Must_inspect_result_ NTSTATUS SubmitSyncRequestIgnoreTargetState (__in FxRequestBase *Request, __in_opt PWDF_REQUEST_SEND_OPTIONS RequestOptions)
VOID UpdateTargetIoType (VOID)
BOOLEAN HasValidStackSize (VOID)
- Public Member Functions inherited from FxNonPagedObject
 FxNonPagedObject (__in WDFTYPE Type, __in USHORT Size, __in PFX_DRIVER_GLOBALS FxDriverGlobals)
 FxNonPagedObject (__in WDFTYPE Type, __in USHORT Size, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxObjectType ObjectType)
virtual ~FxNonPagedObject (VOID)
 _Acquires_lock_ (this->m_NPLock.m_Lock) __drv_maxIRQL(DISPATCH_LEVEL) __drv_setsIRQL(DISPATCH_LEVEL) VOID Lock(__out __drv_deref(__drv_savesIRQL) PKIRQL PreviousIrql)
 _Releases_lock_ (this->m_NPLock.m_Lock) __drv_requiresIRQL(DISPATCH_LEVEL) __inline VOID Unlock(__in __drv_restoresIRQL KIRQL PreviousIrql)
 _Acquires_lock_ (this->m_NPLock.m_Lock) __drv_requiresIRQL(DISPATCH_LEVEL) VOID LockAtDispatch(VOID)
 _Requires_lock_held_ (this->m_NPLock.m_Lock) _Releases_lock_(this -> m_NPLock.m_Lock) __drv_requiresIRQL(DISPATCH_LEVEL) __inline VOID UnlockFromDispatch(VOID)
- Public Member Functions inherited from FxObject
PVOID GetCOMWrapper ()
void SetCOMWrapper (__drv_aliasesMem PVOID Wrapper)
 FxObject (__in WDFTYPE Type, __in USHORT Size, __in PFX_DRIVER_GLOBALS FxDriverGlobals)
virtual ~FxObject (VOID)
PVOID __inline operator new (__in size_t Size, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxObjectType Type)
PVOID __inline operator new (__in size_t Size, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __in USHORT ExtraSize=0)
VOID operator delete (__in PVOID Memory)
VOID SetNoContextHeader (VOID)
PVOID __inline GetObjectHandle (VOID)
__inline FxContextHeaderGetContextHeader (VOID)
__inline PFX_DRIVER_GLOBALS GetDriverGlobals (VOID)
USHORT GetObjectSize (VOID)
FxTagTrackerGetTagTracker (VOID)
CfxDeviceGetDevice (VOID)
CfxDeviceBaseGetDeviceBase (VOID)
VOID SetDeviceBase (__in CfxDeviceBase *DeviceBase)
__inline VOID CallCleanup (VOID)
ULONG __inline AddRef (__in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
virtual ULONG Release (__in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
virtual ULONG AddRefOverride (__in WDFOBJECT_OFFSET Offset, __in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
virtual ULONG ReleaseOverride (__in WDFOBJECT_OFFSET Offset, __in_opt PVOID Tag=NULL, __in LONG Line=0, __in_opt PSTR File=NULL)
virtual _Must_inspect_result_ NTSTATUS QueryInterface (__in FxQueryInterfaceParams *Params)
VOID MarkTraceState (VOID)
BOOLEAN __inline IsTraceState (VOID)
VOID __inline TraceDroppedEvent (__in FxObjectDroppedEvent Event)
VOID MarkPassiveDispose (__in FxObjectLockState State=ObjectLock)
VOID MarkPassiveCallbacks (__in FxObjectLockState State=ObjectLock)
VOID MarkForceDisposeThread (__in FxObjectLockState State=ObjectLock)
BOOLEAN IsPassiveCallbacks (__in BOOLEAN AcquireLock=TRUE)
BOOLEAN IsPassiveDispose (__in BOOLEAN AcquireLock=TRUE)
BOOLEAN IsForceDisposeThread (__in BOOLEAN AcquireLock=TRUE)
VOID MarkCommitted (VOID)
BOOLEAN IsCommitted (VOID)
VOID MarkDisposeOverride (__in FxObjectLockState State=ObjectLock)
VOID MarkNoDeleteDDI (__in FxObjectLockState State=ObjectLock)
_Must_inspect_result_ NTSTATUS Commit (__in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __out_opt WDFOBJECT *ObjectHandle, __in_opt FxObject *Parent=NULL, __in BOOLEAN AssignDriverAsDefaultParent=TRUE)
VOID DeleteFromFailedCreate (VOID)
VOID ClearEvtCallbacks (VOID)
BOOLEAN EarlyDispose (VOID)
virtual VOID DeleteObject (VOID)
_Must_inspect_result_ NTSTATUS AssignParentObject (__in FxObject *ParentObject)
_Must_inspect_result_ NTSTATUS AddContext (__in FxContextHeader *Header, __in PVOID *Context, __in PWDF_OBJECT_ATTRIBUTES Attributes)
_Must_inspect_result_ NTSTATUS RemoveParentAssignment (VOID)
_Must_inspect_result_ FxObjectGetParentObjectReferenced (__in PVOID Tag)

Protected Member Functions

 ~FxIoTargetSelf ()
- Protected Member Functions inherited from FxIoTarget
 ~FxIoTarget ()
_Must_inspect_result_ NTSTATUS InitModeSpecific (__in CfxDeviceBase *Device)
virtual BOOLEAN Dispose (VOID)
VOID FailPendedRequest (__in FxRequestBase *Request, __in NTSTATUS Status)
VOID DrainPendedRequestsLocked (__in PLIST_ENTRY RequestListHead, __in BOOLEAN RequestWillBeResent)
VOID CompletePendedRequestList (__in PLIST_ENTRY RequestListHead)
VOID SubmitPendedRequests (__in PLIST_ENTRY RequestListHeadHead)
VOID GetSentRequestsListLocked (__in PSINGLE_LIST_ENTRY RequestListHead, __in PLIST_ENTRY SendList, __out PBOOLEAN AddedToList)
virtual _Must_inspect_result_ NTSTATUS GotoStartState (__in PLIST_ENTRY RequestListHead, __in BOOLEAN Lock=TRUE)
virtual VOID GotoStopState (__in WDF_IO_TARGET_SENT_IO_ACTION Action, __in PSINGLE_LIST_ENTRY SentRequestListHead, __out PBOOLEAN Wait, __in BOOLEAN LockSelf)
virtual VOID GotoPurgeState (__in WDF_IO_TARGET_PURGE_IO_ACTION Action, __in PLIST_ENTRY PendedRequestListHead, __in PSINGLE_LIST_ENTRY SentRequestListHead, __out PBOOLEAN Wait, __in BOOLEAN LockSelf)
_Must_inspect_result_ NTSTATUS PendRequestLocked (__in FxRequestBase *Request)
__inline VOID CompleteRequest (__in FxRequestBase *Request)
VOID HandleFailedResubmit (__in FxRequestBase *Request)
VOID RequestCompletionRoutine (__in FxRequestBase *Request)
BOOLEAN RemoveCompletedRequestLocked (__in FxRequestBase *Request)
virtual VOID ClearTargetPointers (VOID)
UCHAR GetTargetIoType (VOID)
virtual VOID GotoRemoveState (__in WDF_IO_TARGET_STATE NewState, __in PLIST_ENTRY PendedRequestListHead, __in PSINGLE_LIST_ENTRY SentRequestListHead, __in BOOLEAN Lock, __out PBOOLEAN Wait)
virtual VOID WaitForSentIoToComplete (VOID)
virtual VOID WaitForDisposeEvent (VOID)
virtual VOID Forward (__in MdIrp Irp)
__inline VOID CopyFileObjectAndFlags (__in FxRequestBase *Request)
__inline VOID IncrementIoCount (VOID)
__inline VOID DecrementIoCount (VOID)
VOID PrintDisposeMessage (VOID)
- Protected Member Functions inherited from FxObject
 FxObject (__in WDFTYPE Type, __in USHORT Size, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxObjectType ObjectType)
FxObjectDebugExtensionGetDebugExtension (VOID)
VOID AllocateTagTracker (__in WDFTYPE Type)
virtual VOID SelfDestruct (VOID)
PVOID __inline GetObjectHandleUnchecked (VOID)
VOID __inline DestroyChildren (VOID)
VOID DeleteEarlyDisposedObject (VOID)

Private Attributes


Additional Inherited Members

- Static Public Member Functions inherited from FxIoTarget
static VOID _CancelSentRequest (__in FxRequestBase *Request)
static FxIoTarget_FromEntry (__in FxTransactionedEntry *Entry)
- Static Public Member Functions inherited from FxObject
static FxObject_FromDisposeEntry (__in PSINGLE_LIST_ENTRY Entry)
static FxObject_GetObjectFromHandle (__in WDFOBJECT Handle, __inout PWDFOBJECT_OFFSET ObjectOffset)
static PVOID __inline _ToHandle (__in FxObject *Object)
static VOID __inline _ReferenceActual (__in WDFOBJECT Object, __in_opt PVOID Tag, __in LONG Line, __in PSTR File)
static VOID __inline _DereferenceActual (__in WDFOBJECT Object, __in_opt PVOID Tag, __in LONG Line, __in PSTR File)
static PVOID _GetDebugBase (__in FxObject *Object)
static PFX_POOL_HEADER _CleanupPointer (__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxObject *Object)
static _Must_inspect_result_ NTSTATUS _GetEffectiveLock (__in FxObject *Object, __in_opt IFxHasCallbacks *Callbacks, __in BOOLEAN AutomaticLocking, __in BOOLEAN PassiveCallbacks, __out FxCallbackLock **CallbackLock, __out_opt FxObject **CallbackLockObject)
static _Must_inspect_result_ NTSTATUS _ObjectQuery (_In_ FxObject *Object, _In_ CONST GUID *Guid, _In_ ULONG QueryBufferLength, _Out_writes_bytes_(QueryBufferLength) PVOID QueryBuffer)
- Public Attributes inherited from FxIoTarget
FxTransactionedEntry m_TransactionedEntry
BOOLEAN m_AddedToDeviceList
- Static Public Attributes inherited from FxIoTarget
static const PVOID m_SentRequestTag = (PVOID) 'lcnC'
- Static Protected Member Functions inherited from FxIoTarget
static VOID _CancelSentRequests (__in PSINGLE_LIST_ENTRY RequestListHead)
static VOID _RequestCancelled (__in FxIrpQueue *Queue, __in MdIrp Irp, __in PMdIoCsqIrpContext pCsqContext, __in KIRQL CallerIrql)
- Static Protected Member Functions inherited from FxObject
static PVOID _GetBase (__in FxObject *Object)
- Protected Attributes inherited from FxIoTarget
LIST_ENTRY m_SentIoListHead
LIST_ENTRY m_IgnoredIoListHead
FxCREvent m_SentIoEvent
FxCREvent m_DisposeEventUm
FxIrpQueue m_PendedQueue
MdDeviceObject m_InStackDevice
MdDeviceObject m_TargetDevice
MdDeviceObject m_TargetPdo
MdFileObject m_TargetFileObject
LONG m_IoCount
CCHAR m_TargetStackSize
UCHAR m_TargetIoType
BOOLEAN m_WaitingForSentIo
BOOLEAN m_Removing
- Protected Attributes inherited from FxObject
union {
   CfxDeviceBase *   m_DeviceBase
   CfxDevice *   m_Device
- Static Protected Attributes inherited from FxIoTarget
static MdCompletionRoutineType _RequestCompletionRoutine

Detailed Description

Definition at line 35 of file fxiotargetself.hpp.

Constructor & Destructor Documentation

◆ FxIoTargetSelf()

FxIoTargetSelf::FxIoTargetSelf ( _In_ PFX_DRIVER_GLOBALS  FxDriverGlobals,
_In_ USHORT  ObjectSize 

Definition at line 35 of file fxiotargetself.cpp.

38  :
39  FxIoTarget(FxDriverGlobals, ObjectSize, FX_TYPE_IO_TARGET_SELF),
41 {
42 }
FxIoQueue * m_DispatchQueue
FxIoTarget(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in USHORT ObjectSize)
Definition: fxiotarget.cpp:34
#define NULL
Definition: types.h:112

◆ ~FxIoTargetSelf()

FxIoTargetSelf::~FxIoTargetSelf ( )

Definition at line 44 of file fxiotargetself.cpp.

45 {
46 }

Member Function Documentation

◆ GetDispatchQueue()

FxIoQueue * FxIoTargetSelf::GetDispatchQueue ( _In_ UCHAR  MajorFunction)

Definition at line 49 of file fxiotargetself.cpp.

66 {
67  if (m_DispatchQueue != NULL) {
68  return m_DispatchQueue;
69  }
72 }
CfxDevice * m_Device
Definition: fxobject.hpp:329
FxIoQueue * m_DispatchQueue
FxIoQueue * GetDispatchQueue(_In_ UCHAR MajorFunction)
Definition: fxpkgio.hpp:128
FxPkgIo * m_PkgIo
Definition: fxdevice.hpp:669
_In_ UCHAR MajorFunction
Definition: wdfdevice.h:1697
#define NULL
Definition: types.h:112

Referenced by Send().

◆ GetTargetDeviceObject()

virtual _Must_inspect_result_ MdDeviceObject FxIoTargetSelf::GetTargetDeviceObject ( _In_ CfxDeviceBase Device)

Reimplemented from FxIoTarget.

Definition at line 47 of file fxiotargetself.hpp.

64  {
65  return Device->GetDeviceObject();
66  }
_Must_inspect_result_ _In_ WDFDEVICE Device
Definition: wdfchildlist.h:474

◆ Send()

VOID FxIoTargetSelf::Send ( _In_ MdIrp  Irp)

Reimplemented from FxIoTarget.

Definition at line 75 of file fxiotargetself.cpp.

95 {
96  FxIrp irp(Irp);
104  //
105  // Prepare the request to forward to the inteternal target.
106  //
107  (static_cast<IWudfIoIrp2*>(Irp))->PrepareToForwardToSelf();
109 #else
110  //
111  // Set Next Stack Location
112  //
115  //
116  // Set Device Object.
117  //
119 #endif
123  //
124  // Retrieve Queue
125  //
128  if (queue == NULL) {
131  "Send WDFIOTARGET %p, No Dispatch Queue Found for Major Function %d",
134  goto Fail;
135  }
137  //
138  // Only read/writes/ctrls/internal_ctrls IRPs are allowed to be sent to
139  // Self IO Target
140  //
145  "Only Read/Write/Control/Internal-Control IRPs can be "
146  "forwarded to Self IO Target 0x%p, %!IRPMJ!, "
147  "IRP_MN %x, Device 0x%p, %!STATUS!",
151  goto Fail;
152  }
154  //
155  // Retrieve the InContextCallback function
156  //
158  queue->GetCxDeviceInfo());
160  //
161  // DispatchStep2 will convert the IRP into a WDFREQUEST, queue it and if
162  // possible dispatch the request to the driver.
163  // If a failure occurs, DispatchStep2 completes teh Irp
164  //
166  return;
168 Fail:
171  irp.SetInformation(0);
174  return;
175 }
CfxDevice * m_Device
Definition: fxobject.hpp:329
FxIoQueue * queue
VOID SetCurrentDeviceObject(__in MdDeviceObject DeviceObject)
Definition: fxirpum.cpp:1362
MdDeviceObject __inline GetDeviceObject(VOID)
Definition: fxdevice.hpp:174
VOID SetStatus(__in NTSTATUS Status)
Definition: fxirpum.cpp:457
Definition: udferr_usr.h:135
Definition: precomp.h:26
Definition: fxirp.hpp:28
FxIoQueue * GetDispatchQueue(_In_ UCHAR MajorFunction)
int Fail
Definition: ehthrow.cxx:24
_Must_inspect_result_ NTSTATUS __fastcall DispatchStep2(__inout MdIrp Irp, __in_opt FxIoInCallerContext *IoInCallerCtx, __in_opt FxIoQueue *Queue)
Definition: fxpkgio.cpp:342
Definition: udferr_usr.h:178
Definition: fxiotarget.hpp:307
VOID SetNextIrpStackLocation(VOID)
Definition: fxirpum.cpp:1235
_In_ PIRP Irp
Definition: csq.h:116
__inline FxPackage * GetDispatchPackage(__in UCHAR MajorFunction)
Definition: fxdevice.hpp:890
PVOID __inline GetObjectHandle(VOID)
Definition: fxobject.hpp:603
Definition: _queue.h:59
FxIoInCallerContext * ioInCallerCtx
VOID CompleteRequest(__in_opt CCHAR PriorityBoost=IO_NO_INCREMENT)
Definition: fxirpum.cpp:24
VOID SetInformation(__in ULONG_PTR Information)
Definition: fxirpum.cpp:504
unsigned char UCHAR
Definition: xmlstorage.h:181
FxPkgIo * m_PkgIo
Definition: fxdevice.hpp:669
#define VOID
Definition: acefi.h:82
Definition: storswtr.h:27
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
Definition: fxobject.hpp:734
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
#define NULL
Definition: types.h:112
UCHAR majorFunction
UCHAR GetMinorFunction(VOID)
Definition: fxirpum.cpp:297
Definition: iotypes.h:598
UCHAR GetMajorFunction(VOID)
Definition: fxirpum.cpp:217
static SERVICE_STATUS status
Definition: service.c:31
Definition: dbgtrace.h:72
__inline FxIoInCallerContext * GetIoInCallerContextCallback(__in_opt FxCxDeviceInfo *CxDeviceInfo)
Definition: fxpkgio.hpp:396
FxIrp * irp
Definition: ps.c:97

◆ SetDispatchQueue()

VOID FxIoTargetSelf::SetDispatchQueue ( _In_ FxIoQueue DispatchQueue)

Definition at line 74 of file fxiotargetself.hpp.

81  {
83  m_DispatchQueue = DispatchQueue;
84  }
FxIoQueue * m_DispatchQueue
#define ASSERT(a)
Definition: mode.c:44
#define NULL
Definition: types.h:112

Member Data Documentation

◆ m_DispatchQueue

FxIoQueue* FxIoTargetSelf::m_DispatchQueue

Definition at line 103 of file fxiotargetself.hpp.

Referenced by GetDispatchQueue(), and SetDispatchQueue().

The documentation for this class was generated from the following files: