ReactOS  0.4.15-dev-2703-g05fb0f1
FxPagedLookasideListFromPool Class Reference

#include <fxpagedlookasidelist.hpp>

Inheritance diagram for FxPagedLookasideListFromPool:
Collaboration diagram for FxPagedLookasideListFromPool:

Public Member Functions

 FxPagedLookasideListFromPool (__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in ULONG PoolTag, __in FxDeviceBase *DeviceBase, __in FxDeviceBase *MemoryDeviceBase)
 
virtual _Must_inspect_result_ NTSTATUS Initialize (__in size_t BufferSize, __in PWDF_OBJECT_ATTRIBUTES MemoryAttributes)
 
virtual _Must_inspect_result_ NTSTATUS Allocate (__out FxMemoryObject **PPMemory)
 
- Public Member Functions inherited from FxLookasideListFromPool
 FxLookasideListFromPool (__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in USHORT ObjectSize, __in ULONG PoolTag)
 
- Public Member Functions inherited from FxLookasideList
 FxLookasideList (__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in USHORT ObjectSize, __in ULONG PoolTag)
 
size_t GetBufferSize (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)
 

Protected Member Functions

 ~FxPagedLookasideListFromPool (VOID)
 
virtual VOID Reclaim (__in FxMemoryBufferFromLookaside *Memory)
 
virtual VOID ReclaimPool (__inout PVOID Pool)
 
PVOID InitPagedAlloc (__out_bcount(this->m_RawBufferSize) PVOID Alloc)
 
BOOLEAN UsePagedBufferObject (VOID)
 
- Protected Member Functions inherited from FxLookasideList
virtual ~FxLookasideList ()
 
_Must_inspect_result_ NTSTATUS InitializeLookaside (__in USHORT BufferSize, __in USHORT MemoryObjectSize, __in PWDF_OBJECT_ATTRIBUTES MemoryAttributes)
 
PVOID InitObjectAlloc (__out_bcount(this->m_MemoryObjectSize) PVOID Alloc)
 
- 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

size_t m_RawBufferSize
 
FxDeviceBasem_MemoryDeviceBase
 
NPAGED_LOOKASIDE_LIST m_ObjectLookaside
 
PAGED_LOOKASIDE_LIST m_PoolLookaside
 
- Protected Attributes inherited from FxLookasideList
size_t m_BufferSize
 
size_t m_MemoryObjectSize
 
ULONG m_PoolTag
 
- Protected Attributes inherited from FxObject
union {
   CfxDeviceBase *   m_DeviceBase
 
   CfxDevice *   m_Device
 
}; 
 

Private Attributes

friend FxMemoryBufferFromPoolLookaside
 

Additional Inherited Members

- 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 FxLookasideList
WDF_OBJECT_ATTRIBUTES m_MemoryAttributes
 
- Static Protected Member Functions inherited from FxLookasideList
static VOID _Reclaim (__in PFX_DRIVER_GLOBALS FxDriverGlobals, __inout PNPAGED_LOOKASIDE_LIST List, __in FxMemoryBufferFromLookaside *Memory)
 
- Static Protected Member Functions inherited from FxObject
static PVOID _GetBase (__in FxObject *Object)
 

Detailed Description

Definition at line 24 of file fxpagedlookasidelist.hpp.

Constructor & Destructor Documentation

◆ FxPagedLookasideListFromPool()

FxPagedLookasideListFromPool::FxPagedLookasideListFromPool ( __in PFX_DRIVER_GLOBALS  FxDriverGlobals,
__in ULONG  PoolTag,
__in FxDeviceBase DeviceBase,
__in FxDeviceBase MemoryDeviceBase 
)

Definition at line 29 of file fxpagedlookasidelist.cpp.

34  : FxLookasideListFromPool(FxDriverGlobals, sizeof(*this), PoolTag),
35  m_RawBufferSize(0), m_MemoryDeviceBase(MemoryDeviceBase)
36 {
37  SetDeviceBase(DeviceBase);
38 
39  //
40  // Callbacks might be a bit excessive (passive dispose is what we are
41  // really after) because this object has no callbacks, but this is being
42  // proactive in case any callbacks are added. If they are added, this
43  // will take care of them w/out additional changes to object setup.
44  //
46 }
VOID SetDeviceBase(__in CfxDeviceBase *DeviceBase)
Definition: fxobject.hpp:797
FxLookasideListFromPool(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in USHORT ObjectSize, __in ULONG PoolTag)
VOID MarkPassiveCallbacks(__in FxObjectLockState State=ObjectLock)
Definition: fxobject.hpp:972
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ _Strict_type_match_ POOL_TYPE _In_opt_ ULONG PoolTag
Definition: wdfmemory.h:159

◆ ~FxPagedLookasideListFromPool()

FxPagedLookasideListFromPool::~FxPagedLookasideListFromPool ( VOID  )
protected

Definition at line 48 of file fxpagedlookasidelist.cpp.

51 {
52  if (m_MemoryObjectSize != 0) {
54  }
55 
56  if (m_RawBufferSize != 0) {
58  }
59 }
NPAGED_LOOKASIDE_LIST m_ObjectLookaside
static __inline VOID MxDeleteNPagedLookasideList(_In_ PNPAGED_LOOKASIDE_LIST LookasideList)
Definition: mxgeneralkm.h:433
static __inline VOID MxDeletePagedLookasideList(_In_ PPAGED_LOOKASIDE_LIST LookasideList)
Definition: mxgeneralkm.h:442

Member Function Documentation

◆ Allocate()

_Must_inspect_result_ NTSTATUS FxPagedLookasideListFromPool::Allocate ( __out FxMemoryObject **  PPMemory)
virtual

Implements FxLookasideList.

Definition at line 215 of file fxpagedlookasidelist.cpp.

218 {
220  PVOID pObj, pBuf;
221 
222  //
223  // Allocate the object which will contain the 2ndary allocation
224  //
226 
227  if (pObj == NULL) {
229  }
230 
231  pObj = InitObjectAlloc(pObj);
232 
233  //
234  // Create the 2ndary allocation (the one the driver writer uses), what will
235  // be FxMemoryBufferFromPoolLookaside::m_Pool below.
236  //
238  if (pBuf == NULL) {
239  //
240  // This case is safe because Reclaim doesn't treat the pointer as an
241  // object, rather it just performs pointer math and then frees the alloc
242  //
245  }
246 
247  if (m_BufferSize < PAGE_SIZE) {
248  //
249  // For allocations < PAGE, allocate a header, otherwise leave the
250  // allocation alone.
251  //
252  pBuf = InitPagedAlloc(pBuf);
253  }
254  else {
255  //
256  // There is no tracking info before the real allocation start since we
257  // don't want to burn an entire page.
258  //
259  DO_NOTHING();
260  }
261 
262  //
263  // Construct a new FxMemoryBufferFromPoolLookaside using the pool will allocated
264  // above.
265  //
266  // Both objects will know that the base object is one allocation and the
267  // buffer is another. FxMemoryPagedBufferFromPoolLookaside also knows to
268  // dispose itself on the owning FxDeviceBase* pointer.
269  //
270  if (UsePagedBufferObject()) {
273  this,
274  m_BufferSize,
275  pBuf,
277  }
278  else {
281  this,
282  m_BufferSize,
283  pBuf);
284  }
285 
286  //
287  // pBuffer might be displaced if there is a debug extension
288  //
289  ASSERT(_GetBase(pBuffer) == pObj);
290 
291  //
292  // Callbacks might be a bit excessive (passive dispose is what we are
293  // really after) because this object has no callbacks, but this is being
294  // proactive in case any callbacks are added. If they are added, this
295  // will take care of them w/out additional changes to object setup.
296  //
297  pBuffer->MarkPassiveCallbacks(ObjectDoNotLock);
298 
299  *PPMemory = pBuffer;
300 
301  return STATUS_SUCCESS;
302 }
NPAGED_LOOKASIDE_LIST m_ObjectLookaside
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
PVOID InitObjectAlloc(__out_bcount(this->m_MemoryObjectSize) PVOID Alloc)
static PVOID _GetBase(__in FxObject *Object)
Definition: fxobject.hpp:418
__inline PVOID FxAllocateFromNPagedLookasideList(_In_ PNPAGED_LOOKASIDE_LIST Lookaside, _In_opt_ size_t ElementSize=0)
Definition: fxglobalskm.h:565
PVOID InitPagedAlloc(__out_bcount(this->m_RawBufferSize) PVOID Alloc)
PVOID pBuffer
#define ASSERT(a)
Definition: mode.c:44
#define PAGE_SIZE
Definition: env_spec_w32.h:49
WDF_OBJECT_ATTRIBUTES m_MemoryAttributes
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
Definition: fxobject.hpp:734
_Must_inspect_result_ __inline PVOID FxAllocateFromPagedLookasideList(__in PPAGED_LOOKASIDE_LIST Lookaside)
Definition: fxglobalskm.h:652
#define NULL
Definition: types.h:112
#define STATUS_SUCCESS
Definition: shellext.h:65
virtual VOID Reclaim(__in FxMemoryBufferFromLookaside *Memory)
#define DO_NOTHING()
Definition: mxgeneral.h:32

◆ Initialize()

_Must_inspect_result_ NTSTATUS FxPagedLookasideListFromPool::Initialize ( __in size_t  BufferSize,
__in PWDF_OBJECT_ATTRIBUTES  MemoryAttributes 
)
virtual

Implements FxLookasideList.

Definition at line 63 of file fxpagedlookasidelist.cpp.

67 {
68  size_t rawBufferSize;
70 
71  if (BufferSize >= PAGE_SIZE) {
72  //
73  // We don't want to burn extra entire pages for tracking information
74  // so we just use the size as is.
75  //
76  rawBufferSize = BufferSize;
77  }
78  else {
79  //
80  // Allocate extra space for tracking the allocation
81  //
83  BufferSize,
84  &rawBufferSize);
85 
86  if (!NT_SUCCESS(status)) {
87  //
88  // FxPoolAddHeaderSize logs to the IFR on error
89  //
90  return status;
91  }
92  }
93 
94  if (UsePagedBufferObject()) {
98  }
99  else {
103  }
104 
105  if (!NT_SUCCESS(status)) {
106  return status;
107  }
108 
109  //
110  // We use m_RawBufferSize == 0 as a condition not to delete the lookaside, so
111  // only assign it a value once we know success is guaranteed.
112  //
114  m_RawBufferSize = rawBufferSize;
115 
116  //
117  // Initialize a non paged pool with these characteristics. All FxObject
118  // derived objects must come from non paged pool.
119  //
121  NULL,
122  NULL,
123  0,
125  m_PoolTag,
126  0);
127 
128  //
129  // Initialize a paged pool with these characteristics.
130  //
131  // Free and Allocate are left intentionally NULL so that we use the Ex
132  // versions.
133  //
134  // bufferSize is used b/c it is full size of the object + pool requirements.
135  // m_BufferSize is the size the client wants the buffer to be.
136  //
138  NULL,
139  NULL,
140  0,
142  m_PoolTag,
143  0);
144 
145  return status;
146 }
NPAGED_LOOKASIDE_LIST m_ObjectLookaside
_Must_inspect_result_ NTSTATUS InitializeLookaside(__in USHORT BufferSize, __in USHORT MemoryObjectSize, __in PWDF_OBJECT_ATTRIBUTES MemoryAttributes)
LONG NTSTATUS
Definition: precomp.h:26
static __inline VOID MxInitializeNPagedLookasideList(_Out_ PNPAGED_LOOKASIDE_LIST Lookaside, _In_opt_ PALLOCATE_FUNCTION Allocate, _In_opt_ PFREE_FUNCTION Free, _In_ ULONG Flags, _In_ SIZE_T Size, _In_ ULONG Tag, _In_ USHORT Depth)
Definition: mxgeneralkm.h:451
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
static __inline VOID MxInitializePagedLookasideList(_Out_ PPAGED_LOOKASIDE_LIST Lookaside, _In_opt_ PALLOCATE_FUNCTION Allocate, _In_opt_ PFREE_FUNCTION Free, _In_ ULONG Flags, _In_ SIZE_T Size, _In_ ULONG Tag, _In_ USHORT Depth)
Definition: mxgeneralkm.h:472
_Must_inspect_result_ NTSTATUS __inline FxPoolAddHeaderSize(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in size_t AllocationSize, __out size_t *NewSize)
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ _In_ _Strict_type_match_ POOL_TYPE _In_opt_ PWDF_OBJECT_ATTRIBUTES MemoryAttributes
Definition: wdfmemory.h:407
#define PAGE_SIZE
Definition: env_spec_w32.h:49
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
Definition: fxobject.hpp:734
#define NULL
Definition: types.h:112
static SERVICE_STATUS status
Definition: service.c:31
#define BufferSize
Definition: mmc.h:75
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:251
Definition: ps.c:97

◆ InitPagedAlloc()

PVOID FxPagedLookasideListFromPool::InitPagedAlloc ( __out_bcount(this->m_RawBufferSize) PVOID  Alloc)
protected

Definition at line 155 of file fxpagedlookasidelist.cpp.

171 {
174  PFX_POOL_TRACKER tracker;
175 
177 
179 
181  //
182  // PoolTracking is active, so format and insert
183  // a tracker in the NonPagedHeader list of the pool.
184  //
185  tracker = (PFX_POOL_TRACKER) Alloc;
187  sizeof(FX_POOL_TRACKER),
189 
190  pHeader->Base = Alloc;
191  pHeader->FxDriverGlobals = pFxDriverGlobals;
192 
195  tracker,
197  m_PoolTag,
198  _ReturnAddress());
199  }
200  else {
201  //
202  // PoolTracking is inactive, only format FX_POOL_HEADER area.
203  //
205  pHeader->Base = Alloc;
206  pHeader->FxDriverGlobals = pFxDriverGlobals;
207  }
208 
209  return &pHeader->AllocationStart[0];
210 }
FX_POOL FxPoolFrameworks
Definition: fxglobals.h:388
BOOLEAN IsPoolTrackingOn(VOID)
Definition: fxglobals.h:215
FxContextHeader * pHeader
Definition: handleapi.cpp:604
PFX_DRIVER_GLOBALS pFxDriverGlobals
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
Definition: main.c:63
FX_POOL_HEADER * PFX_POOL_HEADER
Definition: fxpool.h:51
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
Definition: fxobject.hpp:734
void * _ReturnAddress(void)
VOID __inline FxPoolInsertPagedAllocateTracker(__in PFX_POOL Pool, __in PFX_POOL_TRACKER Tracker, __in SIZE_T Size, __in ULONG Tag, __in PVOID Caller)
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
FX_POOL_TRACKER * PFX_POOL_TRACKER
Definition: fxpool.h:107
#define WDF_PTR_ADD_OFFSET_TYPE(_ptr, _offset, _type)
Definition: wdfcore.h:141

Referenced by Allocate().

◆ Reclaim()

VOID FxPagedLookasideListFromPool::Reclaim ( __in FxMemoryBufferFromLookaside Memory)
protectedvirtual

Implements FxLookasideList.

Definition at line 305 of file fxpagedlookasidelist.cpp.

308 {
310 }
NPAGED_LOOKASIDE_LIST m_ObjectLookaside
static VOID _Reclaim(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __inout PNPAGED_LOOKASIDE_LIST List, __in FxMemoryBufferFromLookaside *Memory)
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ _Strict_type_match_ POOL_TYPE _In_opt_ ULONG _In_ _Out_ WDFMEMORY * Memory
Definition: wdfmemory.h:169
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
Definition: fxobject.hpp:734

Referenced by Allocate().

◆ ReclaimPool()

virtual VOID FxPagedLookasideListFromPool::ReclaimPool ( __inout PVOID  Pool)
inlineprotectedvirtual

Implements FxLookasideListFromPool.

Definition at line 64 of file fxpagedlookasidelist.hpp.

67  {
68  if (m_BufferSize < PAGE_SIZE) {
70 
71  //
72  // For < PAGE_SIZE, we track the allocation
73  //
74  pHeader = CONTAINING_RECORD(Pool, FX_POOL_HEADER, AllocationStart);
75 
76  //
77  // If PoolTracker is on then do....
78  //
79  if (GetDriverGlobals()->IsPoolTrackingOn()) {
80  //
81  // Decommission this Paged Allocation tracker
82  //
83 #pragma prefast(suppress:__WARNING_BUFFER_UNDERFLOW, "Accessing pool's header to reclaim pool");
85  }
86 
87 #pragma prefast(suppress:__WARNING_BUFFER_UNDERFLOW, "Accessing pool's header to reclaim pool");
89  }
90  else {
91  //
92  // Page or greater size has no allocation tracking info prepended
93  // to the allocation.
94  //
96  }
97  }
__inline VOID FxFreeToPagedLookasideList(__in PPAGED_LOOKASIDE_LIST Lookaside, __in PVOID Entry)
Definition: fxglobalskm.h:694
VOID __inline FxPoolRemovePagedAllocateTracker(__in PFX_POOL_TRACKER Tracker)
FxContextHeader * pHeader
Definition: handleapi.cpp:604
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)
Definition: Messaging.c:560
Definition: bufpool.h:50
#define PAGE_SIZE
Definition: env_spec_w32.h:49
__inline PFX_DRIVER_GLOBALS GetDriverGlobals(VOID)
Definition: fxobject.hpp:734
FX_POOL_TRACKER * PFX_POOL_TRACKER
Definition: fxpool.h:107

◆ UsePagedBufferObject()

BOOLEAN FxPagedLookasideListFromPool::UsePagedBufferObject ( VOID  )
inlineprotected

Definition at line 105 of file fxpagedlookasidelist.hpp.

108  {
109  return m_MemoryDeviceBase != NULL ? TRUE : FALSE;
110  }
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define NULL
Definition: types.h:112

Referenced by Allocate(), and Initialize().

Member Data Documentation

◆ FxMemoryBufferFromPoolLookaside

friend FxPagedLookasideListFromPool::FxMemoryBufferFromPoolLookaside
private

Definition at line 26 of file fxpagedlookasidelist.hpp.

Referenced by Allocate().

◆ m_MemoryDeviceBase

FxDeviceBase* FxPagedLookasideListFromPool::m_MemoryDeviceBase
protected

Definition at line 120 of file fxpagedlookasidelist.hpp.

Referenced by Allocate(), and UsePagedBufferObject().

◆ m_ObjectLookaside

NPAGED_LOOKASIDE_LIST FxPagedLookasideListFromPool::m_ObjectLookaside
protected

◆ m_PoolLookaside

PAGED_LOOKASIDE_LIST FxPagedLookasideListFromPool::m_PoolLookaside
protected

◆ m_RawBufferSize

size_t FxPagedLookasideListFromPool::m_RawBufferSize
protected

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