ReactOS 0.4.15-dev-7918-g2a2556c
fxtransactionedlist.hpp
Go to the documentation of this file.
1/*++
2
3Copyright (c) Microsoft Corporation
4
5Module Name:
6
7 FxTransactionedList.hpp
8
9Abstract:
10
11 This module defines the abstract FxTransactionedList class.
12
13Author:
14
15
16
17Environment:
18
19 Both kernel and user mode
20
21Revision History:
22
23--*/
24
25#ifndef _FXTRANSACTIONEDLIST_H_
26#define _FXTRANSACTIONEDLIST_H_
27
32};
33
36
39 )
40 {
45 }
46
47 VOID
50 )
51 {
53 }
54
57 VOID
58 )
59 {
61 }
62
63 static
67 )
68 {
70 }
71
74 VOID
75 )
76 {
77 return m_Transaction;
78 }
79
80private:
82
84
86
88};
89
91public:
93
95
96 VOID
98 __in PFX_DRIVER_GLOBALS FxDriverGlobals
99 );
100
101 VOID
103 __in PFX_DRIVER_GLOBALS FxDriverGlobals
104 );
105
107 Add(
108 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
110 );
111
112 VOID
113 Remove(
114 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
116 );
117
122 );
123
124 BOOLEAN
125 Deleting(
126 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
127 __in_opt MxEvent* DeleteDoneEvent
128 );
129
130protected:
131 virtual
132 VOID
134 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
136 ) =0;
137
138 virtual
139 VOID
141 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
143 ) =0;
144
145 virtual
150 )
151 {
153
154 return STATUS_SUCCESS;
155 }
156
157 virtual
158 VOID
161 )
162 {
164 }
165
166 virtual
167 VOID
170 )
171 {
173 }
174
175 virtual
176 BOOLEAN
180 )
181 {
184
185 return TRUE;
186 }
187
188 VOID
190 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
191 __in PVOID EntryData
192 );
193
198 );
199
200 BOOLEAN
203 );
204
205 VOID
207 __in PLIST_ENTRY ReleaseHead
208 );
209
210 VOID
212 __in PLIST_ENTRY ReleaseHead
213 );
214
215protected:
217
219
221
223
225
227
228 //
229 // The base class does not use this field, but to save space in the size of
230 // the derived structures, we place it here after the BOOLEANs and there is
231 // minimal structure byte packing.
232 //
234};
235
236
238
239public:
241
242protected:
243
246 virtual
247 VOID
249 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
251 );
252
254 virtual
255 VOID
257 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
259 );
260
262};
263
265
266public:
267
269 __in PFX_DRIVER_GLOBALS FxDriverGlobals
270 )
271 {
272 UNREFERENCED_PARAMETER(FxDriverGlobals);
273 }
274
275 __inline
277#ifdef _MSC_VER
278#pragma prefast(suppress:__WARNING_UNMATCHED_DEFN, "_Must_inspect_result_ not needed in kernel mode as the function always succeeds");
279#endif
281 VOID
282 )
283 {
285 }
286
287protected:
288 virtual
289 _Acquires_lock_(_Global_critical_region_)
290 VOID
292 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
294 );
295
296 virtual
297 _Releases_lock_(_Global_critical_region_)
298 VOID
300 __in PFX_DRIVER_GLOBALS FxDriverGlobals,
302 );
303
305};
306
307#endif // _FXTRANSACTIONEDLIST_H_
unsigned char BOOLEAN
LONG NTSTATUS
Definition: precomp.h:26
__drv_requiresIRQL(DISPATCH_LEVEL) virtual VOID ReleaseLock(__in PFX_DRIVER_GLOBALS FxDriverGlobals
__drv_raisesIRQL(DISPATCH_LEVEL) __drv_maxIRQL(DISPATCH_LEVEL) virtual VOID AcquireLock(__in PFX_DRIVER_GLOBALS FxDriverGlobals
_Must_inspect_result_ FxTransactionedEntry * GetNextEntryLocked(__in_opt FxTransactionedEntry *Entry)
virtual _Must_inspect_result_ NTSTATUS ProcessAdd(__in FxTransactionedEntry *Entry)
_Must_inspect_result_ FxTransactionedEntry * GetNextEntry(__in_opt FxTransactionedEntry *Entry)
VOID SearchForAndRemove(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in PVOID EntryData)
VOID ProcessObjectsToRelease(__in PLIST_ENTRY ReleaseHead)
VOID ProcessTransactionList(__in PLIST_ENTRY ReleaseHead)
VOID UnlockFromEnum(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
BOOLEAN RemoveLocked(__in FxTransactionedEntry *Entry)
virtual VOID EntryRemoved(__in FxTransactionedEntry *Entry)
NTSTATUS Add(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in FxTransactionedEntry *Entry)
virtual VOID EntryAdded(__in FxTransactionedEntry *Entry)
VOID LockForEnum(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
virtual VOID ReleaseLock(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in KIRQL Irql)=0
BOOLEAN Deleting(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __in_opt MxEvent *DeleteDoneEvent)
virtual VOID AcquireLock(__in PFX_DRIVER_GLOBALS FxDriverGlobals, __out PKIRQL Irql)=0
virtual BOOLEAN Compare(__in FxTransactionedEntry *Entry, __in PVOID Data)
CHECK_RETURN_IF_USER_MODE NTSTATUS Initialize()
Definition: fxwaitlock.hpp:235
FxWaitLockInternal m_StateChangeListLock
virtual _Acquires_lock_(_Global_critical_region_) VOID AcquireLock(__in PFX_DRIVER_GLOBALS FxDriverGlobals
virtual _Releases_lock_(_Global_critical_region_) VOID ReleaseLock(__in PFX_DRIVER_GLOBALS FxDriverGlobals
FxWaitLockTransactionedList(__in PFX_DRIVER_GLOBALS FxDriverGlobals)
__inline NTSTATUS Initialize(VOID)
Definition: mxlock.h:102
_Out_ PKIRQL Irql
Definition: csq.h:179
#define __in
Definition: dbghelp.h:35
#define __in_opt
Definition: dbghelp.h:38
#define __out
Definition: dbghelp.h:62
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define __drv_restoresIRQL
Definition: driverspecs.h:322
#define __drv_maxIRQL(irql)
Definition: driverspecs.h:291
UCHAR KIRQL
Definition: env_spec_w32.h:591
KIRQL * PKIRQL
Definition: env_spec_w32.h:592
#define InitializeListHead(ListHead)
Definition: env_spec_w32.h:944
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
FxListTransactionAction
@ FxTransactionActionNothing
@ FxTransactionActionAdd
@ FxTransactionActionRemove
#define _Must_inspect_result_
Definition: ms_sal.h:558
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
#define STATUS_SUCCESS
Definition: shellext.h:65
base of all file and directory entries
Definition: entries.h:83
FxListTransactionAction GetTransactionAction(VOID)
VOID SetTransactionedObject(__in FxObject *Object)
FxObject * GetTransactionedObject(VOID)
static FxTransactionedEntry * _FromEntry(__in PLIST_ENTRY Entry)
FxTransactionedEntry(__in_opt FxObject *Object=NULL)
FxListTransactionAction m_Transaction
Definition: typedefs.h:120
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_In_ BOOLEAN Remove
Definition: psfuncs.h:110
unsigned char UCHAR
Definition: xmlstorage.h:181