ReactOS 0.4.15-dev-7788-g1ad9096
FxDeviceBase Class Reference

#include <fxdevice.hpp>

Inheritance diagram for FxDeviceBase:
Collaboration diagram for FxDeviceBase:

Public Member Functions

NTSTATUS ConfigureConstraints (__in_opt PWDF_OBJECT_ATTRIBUTES ObjectAttributes)
 
VOID GetConstraints (__out_opt WDF_EXECUTION_LEVEL *ExecutionLevel, __out_opt WDF_SYNCHRONIZATION_SCOPE *SynchronizationScope)
 
FxCallbackLockGetCallbackLockPtr (__out_opt FxObject **LockObject)
 
__inline FxDriverGetDriver (VOID)
 
MdDeviceObject __inline GetDeviceObject (VOID)
 
__inline MxDeviceObjectGetMxDeviceObject (VOID)
 
ULONG __inline GetDeviceObjectFlags (VOID)
 
VOID __inline SetDeviceObjectFlags (_In_ ULONG Flags)
 
MdDeviceObject __inline GetAttachedDevice (VOID)
 
ULONG __inline GetAttachedDeviceObjectFlags (VOID)
 
MdDeviceObject __inline GetPhysicalDevice (VOID)
 
WDFDEVICE __inline GetHandle (VOID)
 
virtual _Must_inspect_result_ NTSTATUS AddIoTarget (__inout FxIoTarget *IoTarget)
 
virtual VOID RemoveIoTarget (__inout FxIoTarget *IoTarget)
 
virtual _Must_inspect_result_ NTSTATUS AllocateEnumInfo (VOID)
 
virtual VOID AddChildList (__inout FxChildList *List)
 
virtual VOID RemoveChildList (__inout FxChildList *List)
 
virtual _Must_inspect_result_ NTSTATUS AllocateDmaEnablerList (VOID)
 
virtual VOID AddDmaEnabler (__inout FxDmaEnabler *Enabler)
 
virtual VOID RemoveDmaEnabler (__inout FxDmaEnabler *Enabler)
 
virtual VOID SetDeviceTelemetryInfoFlags (_In_ FxDeviceInfoFlags Flag)
 
__inline _Must_inspect_result_ NTSTATUS AcquireDmaPacketTransaction (VOID)
 
__inline VOID ReleaseDmaPacketTransaction (VOID)
 
VOID AddToDisposeList (__inout FxObject *Object)
 
_Must_inspect_result_ NTSTATUS QueryInterface (__inout FxQueryInterfaceParams *Params)
 
_Must_inspect_result_ NTSTATUS QueryForInterface (__in const GUID *InterfaceType, __out PINTERFACE Interface, __in USHORT Size, __in USHORT Version, __in PVOID InterfaceSpecificData, __in_opt MdDeviceObject TargetDevice=NULL)
 
__inline MdDeviceObject GetAttachedDeviceReference (VOID)
 
virtual FxIoTargetGetDefaultIoTarget (VOID)
 
_Must_inspect_result_ NTSTATUS AllocateTarget (_Out_ FxIoTarget **Target, _In_ BOOLEAN SelfTarget)
 
- 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)
 
WDFTYPE GetType (VOID)
 
USHORT GetObjectSize (VOID)
 
LONG GetRefCnt (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)
 
BOOLEAN IsNoDeleteDDI (VOID)
 
_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)
 
virtual BOOLEAN Dispose (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)
 
BOOLEAN IsDisposed (VOID)
 
- Public Member Functions inherited from IFxHasCallbacks
virtual VOID GetConstraints (__out WDF_EXECUTION_LEVEL *ExecutionLevel, __out WDF_SYNCHRONIZATION_SCOPE *SynchronizationScope)=0
 
virtual _Must_inspect_result_ FxCallbackLockGetCallbackLockPtr (__out_opt FxObject **LockObject)=0
 

Static Public Member Functions

static FxDeviceBase_SearchForDevice (__in FxObject *Object, __out_opt IFxHasCallbacks **Callbacks)
 
static FxDeviceBase_SearchForDevice (__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in_opt PWDF_OBJECT_ATTRIBUTES Attributes)
 
- 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

FxDisposeListm_DisposeList
 

Protected Member Functions

 FxDeviceBase (__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxDriver *Driver, __in WDFTYPE Type, __in USHORT Size)
 
 ~FxDeviceBase (VOID)
 
VOID Init (__in MdDeviceObject DeviceObject, __in MdDeviceObject AttachedDevice, __in MdDeviceObject PhysicalDevice)
 
- Protected Member Functions inherited from FxObject
 FxObject (__in WDFTYPE Type, __in USHORT Size, __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxObjectType ObjectType)
 
FxObjectDebugExtensionGetDebugExtension (VOID)
 
BOOLEAN IsDebug (VOID)
 
VOID AllocateTagTracker (__in WDFTYPE Type)
 
virtual VOID SelfDestruct (VOID)
 
PVOID __inline GetObjectHandleUnchecked (VOID)
 
VOID __inline DestroyChildren (VOID)
 
VOID DeleteEarlyDisposedObject (VOID)
 

Protected Attributes

FxDriverm_Driver
 
MxDeviceObject m_DeviceObject
 
MxDeviceObject m_AttachedDevice
 
MxDeviceObject m_PhysicalDevice
 
FxCallbackLockm_CallbackLockPtr
 
FxObjectm_CallbackLockObjectPtr
 
WDF_EXECUTION_LEVEL m_ExecutionLevel
 
WDF_SYNCHRONIZATION_SCOPE m_SynchronizationScope
 
LONG m_DmaPacketTransactionStatus
 
- Protected Attributes inherited from FxObject
union {
   CfxDeviceBase *   m_DeviceBase
 
   CfxDevice *   m_Device
 
}; 
 

Additional Inherited Members

- Static Protected Member Functions inherited from FxObject
static PVOID _GetBase (__in FxObject *Object)
 

Detailed Description

Definition at line 122 of file fxdevice.hpp.

Constructor & Destructor Documentation

◆ FxDeviceBase()

FxDeviceBase::FxDeviceBase ( __in PFX_DRIVER_GLOBALS  FxDriverGlobals,
__in FxDriver Driver,
__in WDFTYPE  Type,
__in USHORT  Size 
)
protected

Definition at line 31 of file fxdevicebase.cpp.

36 :
37 FxNonPagedObject(Type, Size, FxDriverGlobals)
38{
40
43
45
47
50
52 SetDeviceBase(this);
53}
Type
Definition: Type.h:7
FxObject * m_CallbackLockObjectPtr
Definition: fxdevice.hpp:476
WDF_SYNCHRONIZATION_SCOPE m_SynchronizationScope
Definition: fxdevice.hpp:479
WDF_EXECUTION_LEVEL m_ExecutionLevel
Definition: fxdevice.hpp:478
FxDriver * m_Driver
Definition: fxdevice.hpp:469
LONG m_DmaPacketTransactionStatus
Definition: fxdevice.hpp:484
FxCallbackLock * m_CallbackLockPtr
Definition: fxdevice.hpp:475
FxDisposeList * m_DisposeList
Definition: fxdevice.hpp:466
VOID MarkPassiveDispose(__in FxObjectLockState State=ObjectLock)
Definition: fxobject.hpp:944
VOID SetDeviceBase(__in CfxDeviceBase *DeviceBase)
Definition: fxobject.hpp:797
#define NULL
Definition: types.h:112
@ FxDmaPacketTransactionCompleted
Definition: fxdevice.hpp:68
@ ObjectDoNotLock
Definition: fxobject.hpp:128
_Must_inspect_result_ _In_ WDFDRIVER Driver
Definition: wdfcontrol.h:83
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
@ WdfSynchronizationScopeInheritFromParent
Definition: wdfobject.h:63
@ WdfExecutionLevelInheritFromParent
Definition: wdfobject.h:53

◆ ~FxDeviceBase()

FxDeviceBase::~FxDeviceBase ( VOID  )
protected

Definition at line 55 of file fxdevicebase.cpp.

58{
59 if (m_DisposeList != NULL) {
62 }
63
64 if (m_CallbackLockPtr != NULL) {
65 delete m_CallbackLockPtr;
67 }
68}
virtual VOID DeleteObject(VOID)

Member Function Documentation

◆ _SearchForDevice() [1/2]

FxDeviceBase * FxDeviceBase::_SearchForDevice ( __in FxObject Object,
__out_opt IFxHasCallbacks **  Callbacks 
)
static

Definition at line 214 of file fxdevicebase.cpp.

218{
219 FxObject* pParent, *pOrigParent;
222 PVOID pTag;
223
225 if (pDeviceBase == NULL) {
227 Object->GetDriverGlobals(), TRACE_LEVEL_ERROR, TRACINGOBJECT,
228 "WDFHANDLE %p does not have a WDFDEVICE as an ancestor",
229 Object->GetObjectHandle());
230 return NULL;
231 }
232
233 if (Callbacks == NULL) {
234 //
235 // Caller is not interested in the callbacks interface, just return
236 // now without searching for it.
237 //
238 return pDeviceBase;
239 }
240
241 //
242 // Init out parameter.
243 //
244 *Callbacks = NULL;
245
246 pOrigParent = Object;
247 pTag = pOrigParent;
248
249 //
250 // By adding a reference now, we simulate what GetParentObjectReferenced
251 // does later, thus allowing simple logic on when/how to release the
252 // reference on exit.
253 //
254 Object->ADDREF(pTag);
255
256 do {
257 //
258 // If successful, Callbacks will be != NULL
259 //
260 if (NT_SUCCESS(Object->QueryInterface(&cbParams))) {
261 ASSERT(*Callbacks != NULL);
262 //
263 // Release the reference previously taken by the top of the function
264 // or GetParentObjectReferenced in a previous pass in the loop.
265 //
266 Object->RELEASE(pTag);
267 return pDeviceBase;
268 }
269
271
272 //
273 // Release the reference previously taken by the top of the function
274 // or GetParentObjectReferenced in a previous pass in the loop.
275 //
276 Object->RELEASE(pTag);
277
278 Object = pParent;
279 } while (Object != NULL);
280
281 ASSERT(Object == NULL);
282
283 //
284 // Queue presented requests do not have parents (to increase performance).
285 // Try to find the callback interface on this object's device base.
286 //
287 if (NT_SUCCESS(pDeviceBase->QueryInterface(&cbParams))) {
288 ASSERT(*Callbacks != NULL);
289 //
290 // Success, we got a callback interface.
291 //
292 return pDeviceBase;
293 }
294
297 "WDFHANDLE %p does not have a callbacks interface in its object tree"
298 "(WDFDEVICE %p)", pOrigParent->GetObjectHandle(),
300
301 return pDeviceBase;
302}
const struct winhelp_callbacks Callbacks
Definition: callback.c:161
_Must_inspect_result_ NTSTATUS QueryInterface(__inout FxQueryInterfaceParams *Params)
WDFDEVICE __inline GetHandle(VOID)
Definition: fxdevice.hpp:237
PVOID __inline GetObjectHandle(VOID)
Definition: fxobject.hpp:603
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
Definition: fxobject.hpp:734
CfxDeviceBase * GetDeviceBase(VOID)
Definition: fxobject.hpp:789
_Must_inspect_result_ FxObject * GetParentObjectReferenced(__in PVOID Tag)
Definition: fxobject.cpp:856
#define TRACINGOBJECT
Definition: dbgtrace.h:59
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
FxDeviceBase * pDeviceBase
FxObject * pParent
Definition: fxdpcapi.cpp:86
@ FX_TYPE_IHASCALLBACKS
Definition: fxtypes.h:114
#define ASSERT(a)
Definition: mode.c:44
#define TRACE_LEVEL_ERROR
Definition: storswtr.h:27
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object

Referenced by FxIoTargetRemote::_Create(), FxMemoryBufferFromPool::_Create(), _SearchForDevice(), FxPkgIo::CreateQueue(), if(), FxDpc::Initialize(), FxTimer::Initialize(), FxWorkItem::Initialize(), and FxInterrupt::InitializeWorker().

◆ _SearchForDevice() [2/2]

FxDeviceBase * FxDeviceBase::_SearchForDevice ( __in PFX_DRIVER_GLOBALS  FxDriverGlobals,
__in_opt PWDF_OBJECT_ATTRIBUTES  Attributes 
)
static

Definition at line 305 of file fxdevicebase.cpp.

309{
310 FxObject* pParentObject;
312
313 if (Attributes == NULL || Attributes->ParentObject == NULL) {
314 return NULL;
315 }
316
317 FxObjectHandleGetPtr(FxDriverGlobals,
318 Attributes->ParentObject,
320 (PVOID*) &pParentObject);
321
322 pDeviceBase = _SearchForDevice(pParentObject, NULL);
323
324 return pDeviceBase;
325}
static FxDeviceBase * _SearchForDevice(__in FxObject *Object, __out_opt IFxHasCallbacks **Callbacks)
FxObjectHandleGetPtr(GetFxDriverGlobals(DriverGlobals), Fdo, FX_TYPE_DEVICE,(PVOID *)&pFdo)
@ FX_TYPE_OBJECT
Definition: fxtypes.h:45
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes

◆ AcquireDmaPacketTransaction()

__inline _Must_inspect_result_ NTSTATUS FxDeviceBase::AcquireDmaPacketTransaction ( VOID  )
inline

Definition at line 354 of file fxdevice.hpp.

357 {
358 //
359 // Set the status to Pending only if the previous transaction is Completed.
360 //
365 return STATUS_SUCCESS;
366 } else {
367 return STATUS_WDF_BUSY;
368 }
369 }
@ FxDmaPacketTransactionPending
Definition: fxdevice.hpp:69
#define InterlockedCompareExchange
Definition: interlocked.h:104
#define STATUS_SUCCESS
Definition: shellext.h:65
#define STATUS_WDF_BUSY
Definition: wdfstatus.h:126

Referenced by FxDmaPacketTransaction::AcquireDevice().

◆ AddChildList()

virtual VOID FxDeviceBase::AddChildList ( __inout FxChildList List)
inlinevirtual

Reimplemented in FxDevice.

Definition at line 283 of file fxdevice.hpp.

286 {
287 //
288 // Intentionally does nothing
289 //
291 }
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
_Must_inspect_result_ _In_ WDFCMRESLIST List
Definition: wdfresource.h:550

◆ AddDmaEnabler()

virtual VOID FxDeviceBase::AddDmaEnabler ( __inout FxDmaEnabler Enabler)
inlinevirtual

Reimplemented in FxDevice.

Definition at line 317 of file fxdevice.hpp.

320 {
321 //
322 // Intentionally does nothing
323 //
324 UNREFERENCED_PARAMETER(Enabler);
325 }

Referenced by FxDmaEnabler::Initialize().

◆ AddIoTarget()

virtual _Must_inspect_result_ NTSTATUS FxDeviceBase::AddIoTarget ( __inout FxIoTarget IoTarget)
inlinevirtual

Reimplemented in FxDevice.

Definition at line 247 of file fxdevice.hpp.

250 {
252
253 //
254 // Intentionally does nothing
255 //
256 return STATUS_SUCCESS;
257 }
_Must_inspect_result_ _In_ WDFDEVICE _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIOTARGET * IoTarget
Definition: wdfiotarget.h:368

Referenced by AllocateTarget().

◆ AddToDisposeList()

VOID FxDeviceBase::AddToDisposeList ( __inout FxObject Object)
inline

Definition at line 387 of file fxdevice.hpp.

390 {
392 }
VOID Add(FxObject *object)

Referenced by FxObject::QueueDeferredDisposeLocked().

◆ AllocateDmaEnablerList()

virtual _Must_inspect_result_ NTSTATUS FxDeviceBase::AllocateDmaEnablerList ( VOID  )
inlinevirtual

Reimplemented in FxDevice.

Definition at line 308 of file fxdevice.hpp.

311 {
312 return STATUS_SUCCESS;
313 }

◆ AllocateEnumInfo()

virtual _Must_inspect_result_ NTSTATUS FxDeviceBase::AllocateEnumInfo ( VOID  )
inlinevirtual

Reimplemented in FxDevice.

Definition at line 274 of file fxdevice.hpp.

277 {
278 return STATUS_SUCCESS;
279 }

◆ AllocateTarget()

_Must_inspect_result_ NTSTATUS FxDeviceBase::AllocateTarget ( _Out_ FxIoTarget **  Target,
_In_ BOOLEAN  SelfTarget 
)

Definition at line 329 of file fxdevicebase.cpp.

351{
354
355 if (SelfTarget) {
358 } else {
361 }
362
363 if (pTarget == NULL) {
365
368 "WDFDEVICE %p could not allocate a WDFIOTARGET, %!STATUS!",
369 GetHandle(), status);
370
371 goto Done;
372 }
373
375 if (!NT_SUCCESS(status)) {
378 "WDFDEVICE %p failed to initialize (add) a WDFIOTARGET, %!STATUS!",
379 GetHandle(), status);
380
381 goto Done;
382 }
383
384 status = pTarget->Init(this);
385 if (!NT_SUCCESS(status)) {
388 "WDFDEVICE %p failed to initialize a WDFIOTARGET, %!STATUS!",
389 GetHandle(), status);
390
391 goto Done;
392 }
393
395 if (!NT_SUCCESS(status)) {
398 "WDFDEVICE %p failed to initialize (commit) a WDFIOTARGET, %!STATUS!",
399 GetHandle(), status);
400
401 goto Done;
402 }
403
405
406Done:
407 if (!NT_SUCCESS(status)) {
408 if (pTarget != NULL) {
410 pTarget = NULL;
411 }
412 }
413
414 *Target = pTarget;
415
416 return status;
417}
LONG NTSTATUS
Definition: precomp.h:26
virtual _Must_inspect_result_ NTSTATUS AddIoTarget(__inout FxIoTarget *IoTarget)
Definition: fxdevice.hpp:247
_Must_inspect_result_ NTSTATUS Init(__in CfxDeviceBase *Device)
VOID DeleteFromFailedCreate(VOID)
Definition: fxobject.cpp:391
_Must_inspect_result_ NTSTATUS Commit(__in_opt PWDF_OBJECT_ATTRIBUTES Attributes, __out_opt WDFOBJECT *ObjectHandle, __in_opt FxObject *Parent=NULL, __in BOOLEAN AssignDriverAsDefaultParent=TRUE)
Definition: fxobject.cpp:904
#define TRACINGDEVICE
Definition: dbgtrace.h:58
FxIoTarget * pTarget
Definition: fxdeviceapi.cpp:97
Definition: ps.c:97
#define GetHandle(h)
Definition: treelist.c:116
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
_In_ WDFIOTARGET Target
Definition: wdfrequest.h:306
#define WDF_NO_OBJECT_ATTRIBUTES
Definition: wdftypes.h:105

Referenced by FxPkgFdo::PostCreateDeviceInitialize().

◆ ConfigureConstraints()

NTSTATUS FxDeviceBase::ConfigureConstraints ( __in_opt PWDF_OBJECT_ATTRIBUTES  ObjectAttributes)

Definition at line 93 of file fxdevicebase.cpp.

96{
98 WDF_EXECUTION_LEVEL driverLevel;
99 WDF_SYNCHRONIZATION_SCOPE driverScope;
100
101 ASSERT(m_Driver != NULL);
102
103 //
104 // If WDF_OBJECT_ATTRIBUTES is specified, these override any
105 // default settings.
106 //
107 if (ObjectAttributes != NULL) {
108 m_ExecutionLevel = ObjectAttributes->ExecutionLevel;
109 m_SynchronizationScope = ObjectAttributes->SynchronizationScope;
110 }
111
112 //
113 // If no WDFDEVICE specific attributes are specified, we
114 // get them from WDFDRIVER, which allows WDFDRIVER to
115 // provide a default for all WDFDEVICE's created.
116 //
117 m_Driver->GetConstraints(&driverLevel, &driverScope);
118
120 m_ExecutionLevel = driverLevel;
121 }
122
124 m_SynchronizationScope = driverScope;
125 }
126
127 //
128 // Configure The Execution Level Constraint
129 //
133 //
134 // Currently, all event callbacks from FxDevice into the driver
135 // are from PASSIVE_LEVEL threads, and there is no need to defer
136 // to a system workitem like IoQueue. So we don't allocate and
137 // setup an FxSystemWorkItem here.
138 //
139 // If the FxDevice starts raising events to the device driver
140 // whose thread starts out above PASSIVE_LEVEL, then an FxSystemWorkItem
141 // would need to be allocated when WdfExecutionLevelPassive is specified.
142 //
143 // (FDO and PDO variants of FxDevice may own their own event dispatch
144 // and deferral logic separate from FxDevice.)
145 //
146 }
147 else {
150 }
151
152 //
153 // Finish initializing the spin/mutex lock.
154 //
155 if (NULL == m_CallbackLockPtr) {
159 "WDFDEVICE %p, could not allocate callback lock, %!STATUS!",
160 GetHandle(), status);
161 goto Done;
162 }
163
166
168
169Done:
170 return status;
171}
virtual void Initialize(FxObject *ParentObject)=0
virtual VOID GetConstraints(__out WDF_EXECUTION_LEVEL *ExecutionLevel, __out WDF_SYNCHRONIZATION_SCOPE *SynchronizationScope)
Definition: fxdriver.hpp:282
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:36
@ WdfExecutionLevelPassive
Definition: wdfobject.h:54
WDF_EXTERN_C_START enum _WDF_EXECUTION_LEVEL WDF_EXECUTION_LEVEL
enum _WDF_SYNCHRONIZATION_SCOPE WDF_SYNCHRONIZATION_SCOPE

Referenced by FxDevice::Initialize().

◆ GetAttachedDevice()

◆ GetAttachedDeviceObjectFlags()

ULONG __inline FxDeviceBase::GetAttachedDeviceObjectFlags ( VOID  )
inline

Definition at line 219 of file fxdevice.hpp.

222 {
223 return m_AttachedDevice.GetFlags();
224 }
ULONG GetFlags(VOID)

Referenced by FxPkgPnp::SetUsageNotificationFlags().

◆ GetAttachedDeviceReference()

__inline MdDeviceObject FxDeviceBase::GetAttachedDeviceReference ( VOID  )
inline

Definition at line 429 of file fxdevice.hpp.

432 {
434 }
MxDeviceObject m_DeviceObject
Definition: fxdevice.hpp:471
static __inline MdDeviceObject MxGetAttachedDeviceReference(__in MdDeviceObject DriverObject)
Definition: mxgeneralkm.h:415

Referenced by FxPkgPnp::CreatePowerThreadIfNeeded(), FxPkgPnp::PnpDeviceUsageNotification(), and QueryForInterface().

◆ GetCallbackLockPtr()

FxCallbackLock * FxDeviceBase::GetCallbackLockPtr ( __out_opt FxObject **  LockObject)
virtual

Implements IFxHasCallbacks.

Definition at line 189 of file fxdevicebase.cpp.

192{
193 if (LockObject != NULL) {
195 }
196
197 return m_CallbackLockPtr;
198}
#define LockObject(Object)
Definition: titypes.h:34

Referenced by FxPkgGeneral::ConfigureConstraints(), and FxIoQueue::ConfigureConstraints().

◆ GetConstraints()

VOID FxDeviceBase::GetConstraints ( __out_opt WDF_EXECUTION_LEVEL ExecutionLevel,
__out_opt WDF_SYNCHRONIZATION_SCOPE SynchronizationScope 
)

Definition at line 174 of file fxdevicebase.cpp.

178{
179 if (ExecutionLevel != NULL) {
180 *ExecutionLevel = m_ExecutionLevel;
181 }
182
183 if (SynchronizationScope != NULL) {
184 *SynchronizationScope = m_SynchronizationScope;
185 }
186}

Referenced by FxPkgGeneral::ConfigureConstraints(), and FxIoQueue::ConfigureConstraints().

◆ GetDefaultIoTarget()

virtual FxIoTarget * FxDeviceBase::GetDefaultIoTarget ( VOID  )
inlinevirtual

Reimplemented in FxDevice, and FxMpDevice.

Definition at line 438 of file fxdevice.hpp.

441 {
442 return NULL;
443 }

◆ GetDeviceObject()

MdDeviceObject __inline FxDeviceBase::GetDeviceObject ( VOID  )
inline

Definition at line 174 of file fxdevice.hpp.

177 {
178 return m_DeviceObject.GetObject();
179 }

Referenced by __drv_maxIRQL(), __drv_strictTypeMatch(), FxDevice::_Create(), _Function_class_(), FxPkgPdo::_QueryCapsWorkItem(), FxPkgGeneral::AcquireRemoveLockForClose(), FxPkgPnp::CleanupStateMachines(), FxPkgPnp::CommitUsageNotification(), FxUsbPipeContinuousReader::Config(), FxPkgPnp::CreatePowerThread(), FxPkgPnp::DisconnectInterruptNP(), FxPkgPnp::Dispatch(), FxWmiIrpHandler::Dispatch(), FxPkgGeneral::Dispatch(), FxPkgIo::Dispatch(), FxPkgFdo::DispatchDeviceSetPower(), FxPkgPdo::DispatchDeviceSetPower(), FxPkgFdo::DispatchSystemSetPower(), FxPkgPdo::DispatchSystemSetPower(), FxPkgPnp::DispatchWaitWake(), FxUsbDevice::Dispose(), FxPkgGeneral::ForwardCreateRequest(), FxIoQueue::ForwardRequestToParent(), FxMessageDispatch::GetDeviceObject(), FxPkgFdo::HandleQueryPnpDeviceStateCompletion(), if(), FxDmaEnabler::Initialize(), FxIoQueue::Initialize(), FxTimer::Initialize(), FxWorkItem::Initialize(), FxInterrupt::InitializeWorker(), FxPowerIdleMachine::IoDecrement(), FxPkgPnp::NotPowerPolicyOwnerEnterNewState(), FxPkgPnp::PnpDeviceUsageNotification(), FxPkgPnp::PnpEnterNewState(), FxPkgPdo::PnpEventEjectHardwareOverload(), FxPkgPnp::PnpMatchResources(), FxPkgPnp::PnpProcessEvent(), FxPkgPnp::PnpProcessEventInner(), FxPkgPdo::PnpQueryCapabilities(), FxPkgPdo::PnpQueryDeviceRelations(), FxPkgPdo::PnpQueryResourceRequirements(), FxPkgFdo::PnpSendStartDeviceDownTheStackOverload(), FxPkgGeneral::PostCreateDeviceInitialize(), FxPkgPnp::PowerConnectInterruptFailed(), FxPkgPnp::PowerEnterNewState(), FxPkgPnp::PowerGotoDxIoStopped(), FxPkgPnp::PowerGotoDxIoStoppedNP(), FxPkgPnp::PowerMakeWakeRequestNonCancelable(), FxPkgPnp::PowerPolicyCanIdlePowerDown(), FxPkgPnp::PowerPolicyEnterNewState(), FxPkgPnp::PowerPolicyProcessEvent(), FxPkgPnp::PowerPolicyProcessEventInner(), FxPkgPnp::PowerPolicySendDevicePowerRequest(), FxPkgPnp::PowerPolicySendWaitWakeRequest(), FxPkgPnp::PowerPolicySetS0IdleSettings(), FxPkgPnp::PowerPolicyUpdateSystemWakeSource(), FxPkgPnp::PowerProcessEvent(), FxPkgPnp::PowerProcessEventInner(), FxPkgPnp::PowerSetDevicePowerState(), FxPoxInterface::PoxRegisterDevice(), FxPkgPnp::ProcessDelayedDeletion(), FxDevicePwrRequirementMachine::ProcessEvent(), FxSelfManagedIoMachine::ProcessEvent(), FxWakeInterruptMachine::ProcessEvent(), FxDevicePwrRequirementMachine::ProcessEventInner(), FxWakeInterruptMachine::ProcessEventInner(), FxPowerIdleMachine::ProcessEventLocked(), FxPkgPnp::QueryForCapabilities(), FxIoQueue::QueueDriverCreatedRequest(), FxEventQueue::QueueToThreadWorker(), FxPkgFdo::RaiseDevicePower(), FxIoTargetSelf::Send(), FxEventQueue::SetDelayedDeletion(), FxPkgPnp::SetDeviceFailed(), FxPkgPnp::SetInternalFailure(), and FxPkgPnp::SetUsageNotificationFlags().

◆ GetDeviceObjectFlags()

ULONG __inline FxDeviceBase::GetDeviceObjectFlags ( VOID  )
inline

◆ GetDriver()

__inline FxDriver * FxDeviceBase::GetDriver ( VOID  )
inline

◆ GetHandle()

WDFDEVICE __inline FxDeviceBase::GetHandle ( VOID  )
inline

Definition at line 237 of file fxdevice.hpp.

240 {
241 return (WDFDEVICE) GetObjectHandle();
242 }
return pObject GetObjectHandle()

Referenced by __drv_maxIRQL(), __drv_when(), FxDmaScatterGatherTransaction::_AdapterListControl(), FxIoTargetRemote::_Create(), _Function_class_(), FxPkgPdo::_PnpEject(), FxPkgPdo::_PnpQueryDeviceText(), FxPkgPdo::_PnpQueryId(), FxPkgPdo::_PnpSetLock(), _SearchForDevice(), FxPkgPdo::AddEjectionDevice(), FxPkgPnp::AddRemovalDevice(), FxPkgPnp::AddUsageDevice(), FxPkgPnp::AllocateEnumInfo(), FxDmaSystemTransaction::CallEvtDmaCompleted(), FxPkgPnp::CleanupStateMachines(), FxPkgPnp::CommitUsageNotification(), FxPkgGeneral::ConfigureConstraints(), FxPkgGeneral::ConfigureFileObjectClass(), FxInterrupt::Connect(), FxPkgPnp::CreatePowerThread(), FxPkgIo::CreateQueue(), FxInterrupt::Disconnect(), FxPkgPnp::DisconnectInterruptNP(), FxPkgPnp::Dispatch(), FxWmiIrpHandler::Dispatch(), FxPkgGeneral::Dispatch(), FxPkgIo::Dispatch(), FxPkgFdo::DispatchDeviceSetPower(), FxPkgPdo::DispatchDeviceSetPower(), FxPkgIo::DispatchStep1(), FxPkgIo::DispathToInCallerContextCallback(), FxInterrupt::DpcHandler(), FxPkgPnp::FilterResourceRequirements(), FxInterrupt::ForceDisconnect(), FxInterrupt::ForceReconnect(), FxWmiProvider::FunctionControl(), FxChildList::GetDevice(), FxIoTarget::GetDeviceHandle(), FxSelfManagedIoMachine::GetDeviceHandle(), FxDmaEnabler::GetDeviceHandle(), FxChildList::GetNextStaticDevice(), FxPkgPnp::HandleQueryBusInformation(), FxPkgPnp::HandleQueryBusRelations(), FxPkgPnp::HandleQueryDeviceRelations(), FxPkgPnp::HandleQueryInterface(), FxPkgFdo::HandleQueryPnpDeviceStateCompletion(), if(), FxPowerIdleMachine::InDxIoIncrement(), FxPkgPnp::Initialize(), FxInterrupt::InterruptDisableInvokeCallback(), FxInterrupt::InterruptEnableInvokeCallback(), FxPowerIdleMachine::IoDecrement(), FxPkgPnp::NotPowerPolicyOwnerEnterNewState(), FxPkgGeneral::OnCreate(), FxPkgGeneral::OnShutdown(), PerfEvtIoStopStart(), PerfEvtIoStopStop(), PerfIoComplete(), PerfIoStart(), FxPkgPnp::PnpDeviceUsageNotification(), FxPkgPnp::PnpEnterNewState(), FxPkgPdo::PnpEventEjectHardwareOverload(), FxPkgFdo::PnpFilterResourceRequirements(), FxPkgPnp::PnpMatchResources(), FxPkgPnp::PnpProcessEvent(), FxPkgPnp::PnpProcessEventInner(), FxPkgPdo::PnpQueryDeviceRelations(), FxPkgPdo::PnpQueryResourceRequirements(), FxPkgPdo::PnpQueryResources(), FxPkgPnp::PnpReleaseHardware(), FxPkgFdo::PnpSendStartDeviceDownTheStackOverload(), FxPkgGeneral::PostCreateDeviceInitialize(), FxPkgPnp::PowerConnectInterruptFailed(), FxPkgPdo::PowerDisableWakeAtBusOverload(), FxPkgPdo::PowerEnableWakeAtBusOverload(), FxPkgPnp::PowerEnterNewState(), FxPkgPnp::PowerGotoDxIoStopped(), FxPkgPnp::PowerGotoDxIoStoppedNP(), FxPkgPnp::PowerMakeWakeRequestNonCancelable(), FxPkgPnp::PowerPolicyCanIdlePowerDown(), FxPkgPnp::PowerPolicyDisarmWakeFromSx(), FxPkgPnp::PowerPolicyEnterNewState(), FxPkgPnp::PowerPolicyProcessEvent(), FxPkgPnp::PowerPolicyProcessEventInner(), FxPkgPnp::PowerPolicySendDevicePowerRequest(), FxPkgPnp::PowerPolicyUpdateSystemWakeSource(), FxPkgPnp::PowerProcessEvent(), FxPkgPnp::PowerProcessEventInner(), FxPowerIdleMachine::PowerReferenceWorker(), FxPoxInterface::PoxRegisterDevice(), FxDmaSystemTransaction::PreMapTransfer(), FxPkgPnp::ProcessDelayedDeletion(), FxDevicePwrRequirementMachine::ProcessEvent(), FxSelfManagedIoMachine::ProcessEvent(), FxWakeInterruptMachine::ProcessEvent(), FxDevicePwrRequirementMachine::ProcessEventInner(), FxWakeInterruptMachine::ProcessEventInner(), FxPowerIdleMachine::ProcessEventLocked(), FxEventQueue::QueueToThreadWorker(), FxPkgIo::ResetStateForRestart(), FxPkgIo::ResumeProcessingForPower(), FxPkgPnp::SaveState(), FxEventQueue::SetDelayedDeletion(), FxPkgPnp::SetPendingPnpIrp(), FxPkgPnp::SetUsageNotificationFlags(), FxDmaPacketTransaction::StageTransfer(), FxPkgIo::StopProcessingForPower(), FxPowerIdleMachine::TimedOutIoIncrement(), FxPkgPnp::ValidateCmResource(), FxPkgPnp::ValidateInterruptResourceCm(), WdfInterruptGetDevice(), and FxInterrupt::WorkItemHandler().

◆ GetMxDeviceObject()

__inline MxDeviceObject * FxDeviceBase::GetMxDeviceObject ( VOID  )
inline

◆ GetPhysicalDevice()

◆ Init()

VOID FxDeviceBase::Init ( __in MdDeviceObject  DeviceObject,
__in MdDeviceObject  AttachedDevice,
__in MdDeviceObject  PhysicalDevice 
)
protected

Definition at line 202 of file fxdevicebase.cpp.

207{
209 m_AttachedDevice.SetObject(AttachedDevice);
211}
__inline VOID SetObject(__in_opt MdDeviceObject DeviceObject)
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_Must_inspect_result_ _In_ WDFDEVICE _In_ PDEVICE_OBJECT PhysicalDevice
Definition: wdfdevice.h:2323

◆ QueryForInterface()

_Must_inspect_result_ NTSTATUS FxDeviceBase::QueryForInterface ( __in const GUID InterfaceType,
__out PINTERFACE  Interface,
__in USHORT  Size,
__in USHORT  Version,
__in PVOID  InterfaceSpecificData,
__in_opt MdDeviceObject  TargetDevice = NULL 
)

Definition at line 33 of file fxdevicebasekm.cpp.

66{
69
70 //
71 // PnP rules dictate you send the QI through the entire stack and not just
72 // the stack below you...but we let the caller override this. There are
73 // some stacks which are not PnP reentrant, so sending a QI from a lower
74 // filter might cause the stack to stop responding if the FDO is synchronously
75 // sending a PnP irp down the stack already.
76 //
77 if (TargetDevice == NULL) {
79 }
80 else {
81 //
82 // To make the exit logic simpler below, just add our own reference.
83 //
86 }
87
92 Size,
93 Version,
95 );
96
98
99 return status;
100}
__inline MdDeviceObject GetAttachedDeviceReference(VOID)
Definition: fxdevice.hpp:429
static __inline VOID MxDereferenceObject(__in PVOID Object)
Definition: mxgeneralkm.h:247
static __inline VOID MxReferenceObject(__in PVOID Object)
Definition: mxgeneralkm.h:238
PDEVICE_OBJECT pTopOfStack
static _Must_inspect_result_ NTSTATUS _QueryForInterface(__in PDEVICE_OBJECT TopOfStack, __in const GUID *InterfaceType, __out PINTERFACE Interface, __in USHORT Size, __in USHORT Version, __in_opt PVOID InterfaceSpecificData)
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
Definition: wdffdo.h:465
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
Definition: wdffdo.h:463
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
Definition: wdffdo.h:469
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT _In_opt_ PVOID InterfaceSpecificData
Definition: wdffdo.h:472
_Must_inspect_result_ __drv_aliasesMem PDEVICE_OBJECT _In_ PDEVICE_OBJECT TargetDevice
Definition: iofuncs.h:691

Referenced by FxPkgFdo::QueryForPowerThread(), and FxPkgFdo::QueryForReenumerationInterface().

◆ QueryInterface()

_Must_inspect_result_ NTSTATUS FxDeviceBase::QueryInterface ( __inout FxQueryInterfaceParams Params)

Definition at line 72 of file fxdevicebase.cpp.

75{
76 switch (Params->Type) {
78 *Params->Object = this;
79 break;
80
82 *Params->Object = (IFxHasCallbacks*) this;
83 break;
84
85 default:
86 return FxNonPagedObject::QueryInterface(Params); // __super call
87 }
88
89 return STATUS_SUCCESS;
90}
virtual _Must_inspect_result_ NTSTATUS QueryInterface(__in FxQueryInterfaceParams *Params)
Definition: fxobject.cpp:255
@ FX_TYPE_DEVICE_BASE
Definition: fxtypes.h:83
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
Definition: wdfrequest.h:308

Referenced by _SearchForDevice(), and FxDevice::QueryInterface().

◆ ReleaseDmaPacketTransaction()

__inline VOID FxDeviceBase::ReleaseDmaPacketTransaction ( VOID  )
inline

Definition at line 373 of file fxdevice.hpp.

376 {
377 LONG val;
378
381
382 ASSERT(val == FxDmaPacketTransactionPending); // To catch double release
384 }
#define InterlockedExchange
Definition: armddk.h:54
GLuint GLfloat * val
Definition: glext.h:7180
long LONG
Definition: pedump.c:60

Referenced by FxDmaPacketTransaction::ReleaseDevice().

◆ RemoveChildList()

virtual VOID FxDeviceBase::RemoveChildList ( __inout FxChildList List)
inlinevirtual

Reimplemented in FxDevice.

Definition at line 295 of file fxdevice.hpp.

298 {
299 //
300 // Intentionally does nothing
301 //
303 }

◆ RemoveDmaEnabler()

virtual VOID FxDeviceBase::RemoveDmaEnabler ( __inout FxDmaEnabler Enabler)
inlinevirtual

Reimplemented in FxDevice.

Definition at line 329 of file fxdevice.hpp.

332 {
333 //
334 // Intentionally does nothing
335 //
336 UNREFERENCED_PARAMETER(Enabler);
337 }

Referenced by FxDmaEnabler::Dispose().

◆ RemoveIoTarget()

virtual VOID FxDeviceBase::RemoveIoTarget ( __inout FxIoTarget IoTarget)
inlinevirtual

Reimplemented in FxDevice.

Definition at line 261 of file fxdevice.hpp.

264 {
265 //
266 // Intentionally does nothing
267 //
269 }

Referenced by FxIoTarget::Dispose().

◆ SetDeviceObjectFlags()

VOID __inline FxDeviceBase::SetDeviceObjectFlags ( _In_ ULONG  Flags)
inline

Definition at line 201 of file fxdevice.hpp.

204 {
206 }
VOID SetFlags(ULONG Flags)
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170

Referenced by FxPkgPnp::RevertUsageNotificationFlags(), and FxPkgPnp::SetUsageNotificationFlags().

◆ SetDeviceTelemetryInfoFlags()

virtual VOID FxDeviceBase::SetDeviceTelemetryInfoFlags ( _In_ FxDeviceInfoFlags  Flag)
inlinevirtual

Reimplemented in FxDevice.

Definition at line 341 of file fxdevice.hpp.

344 {
345 //
346 // Intentionally does nothing
347 //
349 }
Definition: xml2sdb.h:80

Referenced by FxDmaEnabler::Initialize().

Member Data Documentation

◆ m_AttachedDevice

◆ m_CallbackLockObjectPtr

FxObject* FxDeviceBase::m_CallbackLockObjectPtr
protected

Definition at line 476 of file fxdevice.hpp.

Referenced by ConfigureConstraints(), FxDeviceBase(), and GetCallbackLockPtr().

◆ m_CallbackLockPtr

FxCallbackLock* FxDeviceBase::m_CallbackLockPtr
protected

◆ m_DeviceObject

◆ m_DisposeList

◆ m_DmaPacketTransactionStatus

LONG FxDeviceBase::m_DmaPacketTransactionStatus
protected

◆ m_Driver

FxDriver* FxDeviceBase::m_Driver
protected

◆ m_ExecutionLevel

WDF_EXECUTION_LEVEL FxDeviceBase::m_ExecutionLevel
protected

Definition at line 478 of file fxdevice.hpp.

Referenced by ConfigureConstraints(), FxDeviceBase(), and GetConstraints().

◆ m_PhysicalDevice

MxDeviceObject FxDeviceBase::m_PhysicalDevice
protected

◆ m_SynchronizationScope

WDF_SYNCHRONIZATION_SCOPE FxDeviceBase::m_SynchronizationScope
protected

Definition at line 479 of file fxdevice.hpp.

Referenced by ConfigureConstraints(), FxDeviceBase(), and GetConstraints().


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