ReactOS  0.4.15-dev-448-gd6c4411
fcb.h
Go to the documentation of this file.
1 #ifndef _FCB_STRUCTS_DEFINED_
2 #define _FCB_STRUCTS_DEFINED_
3 
4 #include "buffring.h"
5 
6 struct _FCB_INIT_PACKET;
8 
9 typedef struct _SRV_CALL
10 {
11  union
12  {
14  struct
15  {
17  };
18  };
29 
30 #define NETROOT_FLAG_FINALIZATION_IN_PROGRESS 0x00040000
31 #define NETROOT_FLAG_NAME_ALREADY_REMOVED 0x00080000
32 
33 typedef struct _NET_ROOT
34 {
35  union
36  {
38  struct
39  {
42  };
43  };
56 
57 typedef struct _V_NET_ROOT
58 {
59  union
60  {
62  struct
63  {
66  };
67  };
80 
81 typedef struct _NON_PAGED_FCB
82 {
88 #ifdef USE_FILESIZE_LOCK
89  FAST_MUTEX FileSizeLock;
90 #endif
98 #if DBG
99  PFCB FcbBackPointer;
100 #endif
102 
104 {
111 
112 typedef struct _FCB_LOCK
113 {
114  struct _FCB_LOCK * Next;
119 } FCB_LOCK, *PFCB_LOCK;
120 
121 typedef struct _FCB_BUFFERED_LOCKS
122 {
123  struct _FCB_LOCK * List;
127 
128 typedef struct _FCB
129 {
130  union
131  {
133  struct
134  {
137  };
138  };
161 #if (_WIN32_WINNT < 0x0600)
163 #endif
165 #if (_WIN32_WINNT < 0x0600)
166  union
167  {
168  struct
169  {
170 #endif
172 #if (_WIN32_WINNT < 0x0600)
174 #endif
175  union
176  {
179  };
180 #ifdef USE_FILESIZE_LOCK
181  PFAST_MUTEX FileSizeLock;
182 #endif
183 #if (_WIN32_WINNT < 0x0600)
184  } Fcb;
185  } Specific;
186 #endif
189 #if DBG
190  PNON_PAGED_FCB CopyOfNonPaged;
191 #endif
192 #ifdef RDBSS_TRACKER
193  ULONG FcbAcquires[RX_FCBTRACKER_CASE_MAXIMUM];
194  ULONG FcbReleases[RX_FCBTRACKER_CASE_MAXIMUM];
195 #else
196 #error tracker must be defined
197 #endif
200 } FCB, *PFCB;
201 
202 #define FCB_STATE_DELETE_ON_CLOSE 0x00000001
203 #define FCB_STATE_TRUNCATE_ON_CLOSE 0x00000002
204 #define FCB_STATE_PAGING_FILE 0x00000004
205 #define FCB_STATE_DISABLE_LOCAL_BUFFERING 0x00000010
206 #define FCB_STATE_TEMPORARY 0x00000020
207 #define FCB_STATE_BUFFERING_STATE_CHANGE_PENDING 0x00000040
208 #define FCB_STATE_ORPHANED 0x00000080
209 #define FCB_STATE_READAHEAD_DEFERRED 0x00000100
210 #define FCB_STATE_DELAY_CLOSE 0x00000800
211 #define FCB_STATE_FAKEFCB 0x00001000
212 #define FCB_STATE_FILE_IS_BUF_COMPRESSED 0x00004000
213 #define FCB_STATE_FILE_IS_DISK_COMPRESSED 0x00008000
214 #define FCB_STATE_FILE_IS_SHADOWED 0x00010000
215 #define FCB_STATE_BUFFERSTATE_CHANGING 0x00002000
216 #define FCB_STATE_SPECIAL_PATH 0x00020000
217 #define FCB_STATE_TIME_AND_SIZE_ALREADY_SET 0x00040000
218 #define FCB_STATE_FILETIMECACHEING_ENABLED 0x00080000
219 #define FCB_STATE_FILESIZECACHEING_ENABLED 0x00100000
220 #define FCB_STATE_LOCK_BUFFERING_ENABLED 0x00200000
221 #define FCB_STATE_COLLAPSING_ENABLED 0x00400000
222 #define FCB_STATE_OPENSHARING_ENABLED 0x00800000
223 #define FCB_STATE_READBUFFERING_ENABLED 0x01000000
224 #define FCB_STATE_READCACHING_ENABLED 0x02000000
225 #define FCB_STATE_WRITEBUFFERING_ENABLED 0x04000000
226 #define FCB_STATE_WRITECACHING_ENABLED 0x08000000
227 #define FCB_STATE_NAME_ALREADY_REMOVED 0x10000000
228 #define FCB_STATE_ADDEDBACKSLASH 0x20000000
229 #define FCB_STATE_FOBX_USED 0x40000000
230 #define FCB_STATE_SRVOPEN_USED 0x80000000
231 
232 #define FCB_STATE_BUFFERING_STATE_MASK \
233  ((FCB_STATE_WRITECACHING_ENABLED \
234  | FCB_STATE_WRITEBUFFERING_ENABLED \
235  | FCB_STATE_READCACHING_ENABLED \
236  | FCB_STATE_READBUFFERING_ENABLED \
237  | FCB_STATE_OPENSHARING_ENABLED \
238  | FCB_STATE_COLLAPSING_ENABLED \
239  | FCB_STATE_LOCK_BUFFERING_ENABLED \
240  | FCB_STATE_FILESIZECACHEING_ENABLED \
241  | FCB_STATE_FILETIMECACHEING_ENABLED))
242 
243 typedef struct _FCB_INIT_PACKET
244 {
255 
256 #define SRVOPEN_FLAG_ENCLOSED_ALLOCATED 0x10000
257 #define SRVOPEN_FLAG_FOBX_USED 0x20000
258 #define SRVOPEN_FLAG_SHAREACCESS_UPDATED 0x40000
259 
260 typedef struct _SRV_OPEN
261 {
262  union
263  {
265  struct
266  {
269 #if (_WIN32_WINNT >= 0x600)
270  PV_NET_ROOT VNetRoot;
271 #endif
272  };
273  };
281  union
282  {
285  };
287 } SRV_OPEN, *PSRV_OPEN;
288 
289 #define FOBX_FLAG_MATCH_ALL 0x10000
290 #define FOBX_FLAG_FREE_UNICODE 0x20000
291 #define FOBX_FLAG_USER_SET_LAST_WRITE 0x40000
292 #define FOBX_FLAG_USER_SET_LAST_ACCESS 0x80000
293 #define FOBX_FLAG_USER_SET_CREATION 0x100000
294 #define FOBX_FLAG_USER_SET_LAST_CHANGE 0x200000
295 #define FOBX_FLAG_DELETE_ON_CLOSE 0x800000
296 #define FOBX_FLAG_SRVOPEN_CLOSED 0x1000000
297 #define FOBX_FLAG_UNC_NAME 0x2000000
298 #define FOBX_FLAG_ENCLOSED_ALLOCATED 0x4000000
299 #define FOBX_FLAG_MARKED_AS_DORMANT 0x8000000
300 #ifdef __REACTOS__
301 #define FOBX_FLAG_DISABLE_COLLAPSING 0x20000000
302 #endif
303 
304 typedef struct _FOBX
305 {
306  union
307  {
309  struct
310  {
313  };
314  };
323  union
324  {
325  struct
326  {
327  union
328  {
331  };
337  } NamedPipe;
338  struct {
344  } DiskFile;
345  } Specific;
347 } FOBX, *PFOBX;
348 
349 #define RDBSS_REF_TRACK_SRVCALL 0x00000001
350 #define RDBSS_REF_TRACK_NETROOT 0x00000002
351 #define RDBSS_REF_TRACK_VNETROOT 0x00000004
352 #define RDBSS_REF_TRACK_NETFOBX 0x00000008
353 #define RDBSS_REF_TRACK_NETFCB 0x00000010
354 #define RDBSS_REF_TRACK_SRVOPEN 0x00000020
355 #define RX_PRINT_REF_TRACKING 0x40000000
356 #define RX_LOG_REF_TRACKING 0x80000000
357 
359 
360 VOID
362  _In_ ULONG TraceType,
364  _In_ ULONG Line,
366 
367 BOOLEAN
369  _In_ ULONG TraceType,
371  _In_ ULONG Line,
373 
374 #define REF_TRACING_ON(TraceMask) (TraceMask & RdbssReferenceTracingValue)
375 #ifndef __REACTOS__
376 #define PRINT_REF_COUNT(TYPE, Count) \
377  if (REF_TRACING_ON( RDBSS_REF_TRACK_ ## TYPE) && \
378  (RdbssReferenceTracingValue & RX_PRINT_REF_TRACKING)) \
379  { \
380  DbgPrint("%ld\n", Count); \
381  }
382 #else
383 #define PRINT_REF_COUNT(TYPE, Count) \
384  if (REF_TRACING_ON( RDBSS_REF_TRACK_ ## TYPE) && \
385  (RdbssReferenceTracingValue & RX_PRINT_REF_TRACKING)) \
386  { \
387  DbgPrint("(%s:%d) %s: %ld\n", __FILE__, __LINE__, #TYPE, Count); \
388  }
389 #endif
390 
391 #define RxReferenceSrvCall(SrvCall) \
392  RxpTrackReference(RDBSS_REF_TRACK_SRVCALL, __FILE__, __LINE__, SrvCall); \
393  RxReference(SrvCall)
394 
395 #define RxDereferenceSrvCall(SrvCall, LockHoldingState) \
396  RxpTrackDereference(RDBSS_REF_TRACK_SRVCALL, __FILE__, __LINE__, SrvCall); \
397  RxDereference(SrvCall, LockHoldingState)
398 
399 #define RxReferenceNetRoot(NetRoot) \
400  RxpTrackReference(RDBSS_REF_TRACK_NETROOT, __FILE__, __LINE__, NetRoot); \
401  RxReference(NetRoot)
402 
403 #define RxDereferenceNetRoot(NetRoot, LockHoldingState) \
404  RxpTrackDereference(RDBSS_REF_TRACK_NETROOT, __FILE__, __LINE__, NetRoot); \
405  RxDereference(NetRoot, LockHoldingState)
406 
407 #define RxReferenceVNetRoot(VNetRoot) \
408  RxpTrackReference(RDBSS_REF_TRACK_VNETROOT, __FILE__, __LINE__, VNetRoot); \
409  RxReference(VNetRoot)
410 
411 #define RxDereferenceVNetRoot(VNetRoot, LockHoldingState) \
412  RxpTrackDereference(RDBSS_REF_TRACK_VNETROOT, __FILE__, __LINE__, VNetRoot); \
413  RxDereference(VNetRoot, LockHoldingState)
414 
415 #define RxReferenceNetFobx(Fobx) \
416  RxpTrackReference(RDBSS_REF_TRACK_NETFOBX, __FILE__, __LINE__, Fobx); \
417  RxReference(Fobx)
418 
419 #define RxDereferenceNetFobx(Fobx, LockHoldingState) \
420  RxpTrackDereference(RDBSS_REF_TRACK_NETFOBX, __FILE__, __LINE__, Fobx); \
421  RxDereference(Fobx, LockHoldingState)
422 
423 #define RxReferenceSrvOpen(SrvOpen) \
424  RxpTrackReference(RDBSS_REF_TRACK_SRVOPEN, __FILE__, __LINE__, SrvOpen); \
425  RxReference(SrvOpen)
426 
427 #define RxDereferenceSrvOpen(SrvOpen, LockHoldingState) \
428  RxpTrackDereference(RDBSS_REF_TRACK_SRVOPEN, __FILE__, __LINE__, SrvOpen); \
429  RxDereference(SrvOpen, LockHoldingState)
430 
431 #define RxReferenceNetFcb(Fcb) \
432  (RxpTrackReference(RDBSS_REF_TRACK_NETFCB, __FILE__, __LINE__, Fcb), \
433  RxpReferenceNetFcb(Fcb))
434 
435 #define RxDereferenceNetFcb(Fcb) \
436  ((LONG)RxpTrackDereference(RDBSS_REF_TRACK_NETFCB, __FILE__, __LINE__, Fcb), \
437  RxpDereferenceNetFcb(Fcb))
438 
439 #define RxDereferenceAndFinalizeNetFcb(Fcb, RxContext, RecursiveFinalize, ForceFinalize) \
440  (RxpTrackDereference(RDBSS_REF_TRACK_NETFCB, __FILE__, __LINE__, Fcb), \
441  RxpDereferenceAndFinalizeNetFcb(Fcb, RxContext, RecursiveFinalize, ForceFinalize))
442 
443 PSRV_CALL
445  _In_ PRX_CONTEXT RxContext,
447  _In_opt_ PUNICODE_STRING InnerNamePrefix,
448  _In_ PRX_CONNECTION_ID RxConnectionId);
449 
450 #define RxWaitForStableSrvCall(S, R) RxWaitForStableCondition(&(S)->Condition, &(S)->TransitionWaitList, (R), NULL)
451 #define RxTransitionSrvCall(S, C) RxUpdateCondition((C), &(S)->Condition, &(S)->TransitionWaitList)
452 
453 #if (_WIN32_WINNT >= 0x0600)
454 BOOLEAN
456  _Out_ PSRV_CALL ThisSrvCall,
457  _In_ BOOLEAN ForceFinalize);
458 #else
459 BOOLEAN
461  _Out_ PSRV_CALL ThisSrvCall,
462  _In_ BOOLEAN RecursiveFinalize,
463  _In_ BOOLEAN ForceFinalize);
464 #endif
465 
466 PNET_ROOT
468  _In_ PSRV_CALL SrvCall,
470  _In_ ULONG NetRootFlags,
471  _In_opt_ PRX_CONNECTION_ID RxConnectionId);
472 
473 #define RxWaitForStableNetRoot(N, R) RxWaitForStableCondition(&(N)->Condition, &(N)->TransitionWaitList, (R), NULL)
474 #define RxTransitionNetRoot(N, C) RxUpdateCondition((C), &(N)->Condition, &(N)->TransitionWaitList)
475 
476 BOOLEAN
478  _Out_ PNET_ROOT ThisNetRoot,
479  _In_ BOOLEAN RecursiveFinalize,
480  _In_ BOOLEAN ForceFinalize);
481 
482 NTSTATUS
484  _In_ PRX_CONTEXT RxContext,
485  _Out_ LUID *LogonId,
487  _Out_ PUNICODE_STRING *UserNamePtr,
488  _Out_ PUNICODE_STRING *UserDomainNamePtr,
489  _Out_ PUNICODE_STRING *PasswordPtr,
490  _Out_ PULONG Flags);
491 
492 VOID
494  _In_ PUNICODE_STRING UserName,
495  _In_ PUNICODE_STRING UserDomainName,
497  _Out_ PULONG Flags);
498 
501  _In_ PRX_CONTEXT RxContext,
502  _In_ PNET_ROOT NetRoot,
503  _In_ PUNICODE_STRING CanonicalName,
504  _In_ PUNICODE_STRING LocalNetRootName,
506  _In_ PRX_CONNECTION_ID RxConnectionId);
507 
508 BOOLEAN
510  _Out_ PV_NET_ROOT ThisVNetRoot,
511  _In_ BOOLEAN RecursiveFinalize,
512  _In_ BOOLEAN ForceFinalize);
513 
514 #define RxWaitForStableVNetRoot(V, R) RxWaitForStableCondition(&(V)->Condition, &(V)->TransitionWaitList, (R), NULL)
515 #define RxTransitionVNetRoot(V, C) RxUpdateCondition((C), &(V)->Condition, &(V)->TransitionWaitList)
516 
517 VOID
519  _Inout_ PFCB Fcb,
521 
522 VOID
524  _In_ PFCB Fcb,
526 
527 #if (_WIN32_WINNT >= 0x0600)
528 PFCB
530  _In_ PRX_CONTEXT RxContext,
531  _In_ PIRP Irp,
532  _In_ PV_NET_ROOT VNetRoot,
534 #else
535 PFCB
537  _In_ PRX_CONTEXT RxContext,
538  _In_ PV_NET_ROOT VNetRoot,
540 #endif
541 
542 #define RxWaitForStableNetFcb(F, R) RxWaitForStableCondition(&(F)->Condition, &(F)->NonPaged->TransitionWaitList, (R), NULL )
543 #define RxTransitionNetFcb(F, C) RxUpdateCondition((C), &(F)->Condition, &(F)->NonPaged->TransitionWaitList)
544 
545 #define RxFormInitPacket(IP, I1, I1a, I2, I3, I4a, I4b, I5, I6, I7) ( \
546  IP.pAttributes = I1, IP.pNumLinks = I1a, \
547  IP.pCreationTime = I2, IP.pLastAccessTime = I3, \
548  IP.pLastWriteTime = I4a, IP.pLastChangeTime = I4b, \
549  IP.pAllocationSize = I5, IP.pFileSize = I6, \
550  IP.pValidDataLength = I7, &IP)
551 
552 #if DBG
553 #define ASSERT_CORRECT_FCB_STRUCTURE_DBG_ONLY(Fcb) \
554 { \
555  ASSERT(Fcb->NonPaged == Fcb->CopyOfNonPaged); \
556  ASSERT(Fcb->NonPaged->FcbBackPointer == Fcb); \
557 }
558 #else
559 #define ASSERT_CORRECT_FCB_STRUCTURE_DBG_ONLY(Fcb)
560 #endif
561 
562 #define ASSERT_CORRECT_FCB_STRUCTURE(Fcb) \
563 { \
564  ASSERT(NodeTypeIsFcb(Fcb)); \
565  ASSERT(Fcb->NonPaged != NULL ); \
566  ASSERT(NodeType(Fcb->NonPaged) == RDBSS_NTC_NONPAGED_FCB); \
567  ASSERT_CORRECT_FCB_STRUCTURE_DBG_ONLY(Fcb); \
568 }
569 
570 VOID
571 NTAPI
574  _In_ RX_FILE_TYPE FileType,
575  _In_opt_ PFCB_INIT_PACKET InitPacket);
576 
577 #define RxWaitForStableSrvOpen(S, R) RxWaitForStableCondition(&(S)->Condition, &(S)->TransitionWaitList, (R), NULL)
578 #define RxTransitionSrvOpen(S, C) RxUpdateCondition((C), &(S)->Condition, &(S)->TransitionWaitList)
579 
580 VOID
582  _Out_ PFCB ThisFcb);
583 
584 LONG
586  _In_ PFCB Fcb);
587 
588 LONG
590  _In_ PFCB Fcb);
591 
592 BOOLEAN
594  _Out_ PFCB ThisFcb,
595  _In_ PRX_CONTEXT RxContext,
596  _In_ BOOLEAN RecursiveFinalize,
597  _In_ BOOLEAN ForceFinalize);
598 
599 PSRV_OPEN
601  _In_ PV_NET_ROOT VNetRoot,
602  _In_ OUT PFCB Fcb);
603 
604 BOOLEAN
606  _Out_ PSRV_OPEN ThisSrvOpen,
607  _In_ BOOLEAN RecursiveFinalize,
608  _In_ BOOLEAN ForceFinalize);
609 
613  PMRX_SRV_OPEN SrvOpen,
614  PMRX_FCB Fcb)
615 {
616  PFCB ThisFcb = (PFCB)Fcb;
617 
618 #if DBG
619  if (SrvOpen != NULL)
620  {
621  ASSERT(NodeType(SrvOpen) == RDBSS_NTC_SRVOPEN);
622  ASSERT(ThisFcb != NULL);
624  ASSERT(SrvOpen->pFcb == Fcb);
626  }
627 #endif
628 
629  return &ThisFcb->PrivateAlreadyPrefixedName;
630 }
631 #define GET_ALREADY_PREFIXED_NAME_FROM_CONTEXT(Rxcontext) GET_ALREADY_PREFIXED_NAME((Rxcontext)->pRelevantSrvOpen, (Rxcontext)->pFcb)
632 
633 PMRX_FOBX
634 NTAPI
636  _Out_ PRX_CONTEXT RxContext,
637  _In_ PMRX_SRV_OPEN MrxSrvOpen);
638 
639 BOOLEAN
641  _Out_ PFOBX ThisFobx,
642  _In_ BOOLEAN RecursiveFinalize,
643  _In_ BOOLEAN ForceFinalize);
644 
645 #ifdef __REACTOS__
646 #define FILL_IN_FCB(Fcb, a, nl, ct, lat, lwt, lct, as, fs, vdl) \
647  (Fcb)->Attributes = a; \
648  (Fcb)->NumberOfLinks = nl; \
649  (Fcb)->CreationTime.QuadPart = ct; \
650  (Fcb)->LastAccessTime.QuadPart = lat; \
651  (Fcb)->LastWriteTime.QuadPart = lwt; \
652  (Fcb)->LastChangeTime.QuadPart = lct; \
653  (Fcb)->ActualAllocationLength = as; \
654  (Fcb)->Header.AllocationSize.QuadPart = as; \
655  (Fcb)->Header.FileSize.QuadPart = fs; \
656  (Fcb)->Header.ValidDataLength.QuadPart = vdl; \
657  SetFlag((Fcb)->FcbState, FCB_STATE_TIME_AND_SIZE_ALREADY_SET)
658 
659 #define TRACKER_ACQUIRE_FCB 0x61616161
660 #define TRACKER_RELEASE_FCB_NO_BUFF_PENDING 0x72727272
661 #define TRACKER_RELEASE_NON_EXCL_FCB_BUFF_PENDING 0x72727230
662 #define TRACKER_RELEASE_EXCL_FCB_BUFF_PENDING 0x72727231
663 #define TRACKER_RELEASE_FCB_FOR_THRD_NO_BUFF_PENDING 0x72727474
664 #define TRACKER_RELEASE_NON_EXCL_FCB_FOR_THRD_BUFF_PENDING 0x72727430
665 #define TRACKER_RELEASE_EXCL_FCB_FOR_THRD_BUFF_PENDING 0x72727431
666 #define TRACKER_FCB_FREE 0x72724372
667 
668 #define FCB_STATE_BUFFERING_STATE_WITH_NO_SHARES \
669  (( FCB_STATE_WRITECACHING_ENABLED \
670  | FCB_STATE_WRITEBUFFERING_ENABLED \
671  | FCB_STATE_READCACHING_ENABLED \
672  | FCB_STATE_READBUFFERING_ENABLED \
673  | FCB_STATE_LOCK_BUFFERING_ENABLED \
674  | FCB_STATE_FILESIZECACHEING_ENABLED \
675  | FCB_STATE_FILETIMECACHEING_ENABLED))
676 
677 #endif
678 
679 #endif
ERESOURCE BufferedLocksResource
Definition: fcb.h:97
PETHREAD CreateSectionThread
Definition: fcb.h:162
volatile ULONG FobxSerialNumber
Definition: fcb.h:315
LOWIO_PER_FCB_INFO LowIoPerFcbInfo
Definition: fcb.h:178
signed char * PCHAR
Definition: retypes.h:7
BOOLEAN RxFinalizeSrvCall(_Out_ PSRV_CALL ThisSrvCall, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
LONGLONG CreationTime
Definition: cdstruc.h:1036
PKEVENT pBufferingStateChangeCompletedEvent
Definition: fcb.h:142
FILE_LOCK FileLock
Definition: fatstruc.h:1070
struct _FCB_LOCK FCB_LOCK
LARGE_INTEGER LastWriteTime
Definition: fatstruc.h:921
struct _SRV_CALL * PSRV_CALL
PFAST_IO_DISPATCH MRxFastIoDispatch
Definition: fcb.h:151
NTSTATUS RxInitializeVNetRootParameters(_In_ PRX_CONTEXT RxContext, _Out_ LUID *LogonId, _Out_ PULONG SessionId, _Out_ PUNICODE_STRING *UserNamePtr, _Out_ PUNICODE_STRING *UserDomainNamePtr, _Out_ PUNICODE_STRING *PasswordPtr, _Out_ PULONG Flags)
PFOBX InternalFobx
Definition: fcb.h:280
NODE_BYTE_SIZE NodeByteSize
Definition: fcb.h:84
ULONG PagingIoResourceLine
Definition: fcb.h:199
LIST_ENTRY ScavengerFinalizationList
Definition: fcb.h:25
LARGE_INTEGER CloseTime
Definition: fcb.h:319
RX_BLOCK_CONDITION Condition
Definition: fcb.h:21
RX_BUFFERING_MANAGER BufferingManager
Definition: fcb.h:27
PVOID LazyWriteThread
Definition: fatstruc.h:1088
FCB_BUFFERED_LOCKS BufferedLocks
Definition: fcb.h:188
_In_ PIRP Irp
Definition: csq.h:116
Definition: cdstruc.h:908
LIST_ENTRY SrvOpenKeyList
Definition: fcb.h:283
volatile LONG NumberOfCloseDelayedFiles
Definition: fcb.h:23
PURGE_SYNCHRONIZATION_CONTEXT PurgeSyncronizationContext
Definition: fcb.h:48
MRX_NORMAL_NODE_HEADER spacer
Definition: fcb.h:16
#define NodeTypeIsFcb(FCB)
Definition: nodetype.h:68
RX_FCB_TABLE FcbTable
Definition: fcb.h:54
VOID NTAPI RxFinishFcbInitialization(_In_ OUT PMRX_FCB Fcb, _In_ RX_FILE_TYPE FileType, _In_opt_ PFCB_INIT_PACKET InitPacket)
ERESOURCE PagingIoResource
Definition: fcb.h:87
ULONG SessionId
Definition: dllmain.c:28
ULONG CollectDataSize
Definition: fcb.h:333
LONG NTSTATUS
Definition: precomp.h:26
LIST_ENTRY ScavengerFinalizationList
Definition: fcb.h:317
ULONG ulFileSizeVersion
Definition: fcb.h:164
PV_NET_ROOT RxCreateVNetRoot(_In_ PRX_CONTEXT RxContext, _In_ PNET_ROOT NetRoot, _In_ PUNICODE_STRING CanonicalName, _In_ PUNICODE_STRING LocalNetRootName, _In_ PUNICODE_STRING FilePath, _In_ PRX_CONNECTION_ID RxConnectionId)
CSHORT NODE_BYTE_SIZE
Definition: nodetype.h:37
ULONG NumberOfVirtualNetRoots
Definition: fcb.h:51
Definition: fcb.h:33
#define RDBSS_NTC_SRVOPEN
Definition: nodetype.h:52
ULONG SerialNumberForEnum
Definition: fcb.h:52
PSRV_OPEN SrvOpen
Definition: fcb.h:312
struct _FCB_LOCK * PFCB_LOCK
Definition: fcb.h:112
MRX_NET_ROOT
Definition: fcb.h:37
MRX_FCB
Definition: fcb.h:132
LIST_ENTRY TransitionWaitList
Definition: fcb.h:46
SECTION_OBJECT_POINTERS SectionObjectPointers
Definition: fatstruc.h:728
PLARGE_INTEGER pCreationTime
Definition: fcb.h:247
PULONG pAttributes
Definition: fcb.h:245
Definition: fcb.h:304
volatile ULONG PendingLockOps
Definition: fcb.h:124
struct _FOBX * PFOBX
ULONG EaModificationCount
Definition: fatstruc.h:1106
struct _FCB::@711::@714 Fcb
#define _In_opt_
Definition: no_sal2.h:213
RX_BLOCK_CONDITION Condition
Definition: fcb.h:147
PCWSTR FilePath
BOOLEAN RxFinalizeSrvOpen(_Out_ PSRV_OPEN ThisSrvOpen, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
BOOLEAN UpperFinalizationDone
Definition: fcb.h:274
PMRX_FCB pFcb
Definition: mrxfcb.h:161
BOOLEAN UpperFinalizationDone
Definition: fcb.h:19
__GNU_EXTENSION typedef __int64 * PLONGLONG
Definition: ntbasedef.h:389
LARGE_INTEGER BytesOffset
Definition: fcb.h:116
ULONG SerialNumberForEnum
Definition: fcb.h:76
VOID RxSetFileSizeWithLock(_Inout_ PFCB Fcb, _In_ PLONGLONG FileSize)
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
ULONG PrefixOffsetInBytes
Definition: fcb.h:74
THROTTLING_STATE LockThrottlingState
Definition: fcb.h:341
LIST_ENTRY ScavengerFinalizationList
Definition: fcb.h:277
LARGE_INTEGER LastAccessTime
Definition: fatstruc.h:920
ERESOURCE * PERESOURCE
Definition: env_spec_w32.h:595
PLARGE_INTEGER pLastAccessTime
Definition: fcb.h:248
struct _FCB_LOCK * List
Definition: fcb.h:123
LIST_ENTRY VirtualNetRoots
Definition: fcb.h:50
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
struct _FCB_INIT_PACKET * PFCB_INIT_PACKET
Definition: fcb.h:7
LIST_ENTRY WriteSerializationQueue
Definition: fcb.h:336
struct _FCB FCB
struct _FCB_BUFFERED_LOCKS * PFCB_BUFFERED_LOCKS
long LONG
Definition: pedump.c:60
struct _FOBX::@1924::@1927 NamedPipe
MRX_NORMAL_NODE_HEADER spacer
Definition: fcb.h:267
LARGE_INTEGER Length
Definition: fcb.h:115
RXVBO PredictedWriteOffset
Definition: fcb.h:340
MRX_SRV_CALL
Definition: fcb.h:13
LIST_ENTRY TransitionWaitList
Definition: fcb.h:24
union _FOBX::@1924 Specific
LIST_ENTRY ReadSerializationQueue
Definition: fcb.h:335
PNET_ROOT RxCreateNetRoot(_In_ PSRV_CALL SrvCall, _In_ PUNICODE_STRING Name, _In_ ULONG NetRootFlags, _In_opt_ PRX_CONNECTION_ID RxConnectionId)
PNON_PAGED_FCB NonPaged
Definition: fatstruc.h:810
BOOLEAN RxFinalizeNetRoot(_Out_ PNET_ROOT ThisNetRoot, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
ULONG NumberOfLinks
Definition: fcb.h:156
unsigned char BOOLEAN
LIST_ENTRY ScavengerFinalizationList
Definition: fcb.h:78
smooth NULL
Definition: ftsmooth.c:416
#define FORCEINLINE
Definition: ntbasedef.h:221
#define _Out_
Definition: no_sal2.h:323
RX_FCB_TABLE_ENTRY FcbTableEntry
Definition: fcb.h:144
PRDBSS_DEVICE_OBJECT RxDeviceObject
Definition: fcb.h:346
VOID RxpTrackReference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6796
NodeType
Definition: Node.h:5
RX_BLOCK_CONDITION Condition
Definition: fcb.h:275
PV_NET_ROOT DefaultVNetRoot
Definition: fcb.h:49
LOWIO_PER_FCB_INFO
Definition: fcb.h:177
BOOLEAN RxFinalizeNetFobx(_Out_ PFOBX ThisFobx, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
Definition: rxce.c:2964
struct _NON_PAGED_FCB * PNON_PAGED_FCB
BOOLEAN fOpenCountDecremented
Definition: fcb.h:322
MRX_PIPE_HANDLE_INFORMATION
Definition: fcb.h:329
FAST_MUTEX
Definition: extypes.h:17
VOID RxGetFileSizeWithLock(_In_ PFCB Fcb, _Out_ PLONGLONG FileSize)
struct _V_NET_ROOT * PV_NET_ROOT
LARGE_INTEGER CollectDataTime
Definition: fcb.h:332
BOOLEAN ConnectionFinalizationDone
Definition: fcb.h:69
SHARE_ACCESS ShareAccess
Definition: cdstruc.h:1015
LARGE_INTEGER LastChangeTime
Definition: fcb.h:160
Definition: fcb.h:9
SHARE_ACCESS ShareAccessPerSrvOpens
Definition: fcb.h:155
struct _FCB_INIT_PACKET FCB_INIT_PACKET
VOID RxRemoveNameNetFcb(_Out_ PFCB ThisFcb)
PCHAR PagingIoResourceFile
Definition: fcb.h:198
PLARGE_INTEGER pValidDataLength
Definition: fcb.h:253
LONG RxpReferenceNetFcb(_In_ PFCB Fcb)
PV_NET_ROOT VNetRoot
Definition: fcb.h:139
NTSTATUS OpenStatus
Definition: fcb.h:286
LARGE_INTEGER LastLockOffset
Definition: fcb.h:342
LIST_ENTRY NetRootListEntry
Definition: fcb.h:75
LARGE_INTEGER LastLockRange
Definition: fcb.h:343
FSRTL_ADVANCED_FCB_HEADER spacer
Definition: fcb.h:135
RX_PREFIX_ENTRY PrefixEntry
Definition: fcb.h:72
PNET_ROOT NetRoot
Definition: fcb.h:136
PURGE_SYNCHRONIZATION_CONTEXT PurgeSyncronizationContext
Definition: fcb.h:26
THROTTLING_STATE ThrottlingState
Definition: fcb.h:334
struct _NON_PAGED_FCB NON_PAGED_FCB
struct _FCB * PFCB
UNICODE_STRING PrivateAlreadyPrefixedName
Definition: fcb.h:145
LIST_ENTRY ScavengerFinalizationList
Definition: fcb.h:141
#define _Inout_
Definition: no_sal2.h:244
enum _RX_FILE_TYPE RX_FILE_TYPE
PUNICODE_STRING pAlreadyPrefixedName
Definition: mrxfcb.h:169
enum _RX_FCBTRACKER_CASES RX_FCBTRACKER_CASES
volatile LONG AdditionalReferenceForDeleteFsctlTaken
Definition: fcb.h:71
ULONG SerialNumberForEnum
Definition: fcb.h:22
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
Definition: ncftp.h:79
BOOLEAN UpperFinalizationDone
Definition: fcb.h:320
FAST_MUTEX AdvancedFcbHeaderMutex
Definition: fatstruc.h:749
LIST_ENTRY ClosePendingList
Definition: fcb.h:318
LIST_ENTRY ScavengerFinalizationList
Definition: fcb.h:47
PSRV_CALL RxCreateSrvCall(_In_ PRX_CONTEXT RxContext, _In_ PUNICODE_STRING Name, _In_opt_ PUNICODE_STRING InnerNamePrefix, _In_ PRX_CONNECTION_ID RxConnectionId)
ULONG SequenceNumber
Definition: fcb.h:284
struct _SRV_OPEN SRV_OPEN
UNICODE_STRING NamePrefix
Definition: fcb.h:73
PMINIRDR_DISPATCH MRxDispatch
Definition: fcb.h:150
PSRV_OPEN InternalSrvOpen
Definition: fcb.h:152
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
Definition: fsrtlfuncs.h:108
VOID RxUninitializeVNetRootParameters(_In_ PUNICODE_STRING UserName, _In_ PUNICODE_STRING UserDomainName, _In_ PUNICODE_STRING Password, _Out_ PULONG Flags)
LIST_ENTRY TransitionWaitList
Definition: fcb.h:278
Definition: typedefs.h:118
union _FCB::@711 Specific
MRX_PIPE_HANDLE_INFORMATION PipeHandleInformation
Definition: fcb.h:330
RX_BLOCK_CONDITION Condition
Definition: fcb.h:45
PSRV_OPEN RxCreateSrvOpen(_In_ PV_NET_ROOT VNetRoot, _In_ OUT PFCB Fcb)
PNET_ROOT NetRoot
Definition: fcb.h:65
struct _NET_ROOT * PNET_ROOT
Definition: fcb.h:260
LIST_ENTRY FobxQLinks
Definition: fcb.h:316
volatile LONG BufferingToken
Definition: fcb.h:276
struct _SRV_CALL SRV_CALL
PSRV_CALL SrvCall
Definition: fcb.h:41
PRDBSS_DEVICE_OBJECT RxDeviceObject
Definition: fcb.h:149
RX_BLOCK_CONDITION Condition
Definition: fcb.h:70
RX_PREFIX_ENTRY PrefixEntry
Definition: fcb.h:53
ERESOURCE HeaderResource
Definition: fcb.h:86
struct _FCB_BUFFERED_LOCKS FCB_BUFFERED_LOCKS
#define _In_
Definition: no_sal2.h:204
RXVBO PredictedReadOffset
Definition: fcb.h:339
* PFAST_MUTEX
Definition: extypes.h:17
struct _FOBX::@1924::@1928 DiskFile
struct _FOBX FOBX
PLARGE_INTEGER pLastChangeTime
Definition: fcb.h:250
PKEVENT OutstandingAsyncEvent
Definition: fatstruc.h:742
LONG RxpDereferenceNetFcb(_In_ PFCB Fcb)
MRX_SRV_OPEN
Definition: fcb.h:264
MRX_NORMAL_NODE_HEADER spacer
Definition: fcb.h:40
BOOLEAN RxpTrackDereference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6729
_RX_FCBTRACKER_CASES
Definition: fcb.h:103
BOOLEAN ContainsWildCards
Definition: fcb.h:321
unsigned int * PULONG
Definition: retypes.h:1
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG _Inout_ PLUID LogonId
PFCB RxCreateNetFcb(_In_ PRX_CONTEXT RxContext, _In_ PV_NET_ROOT VNetRoot, _In_ PUNICODE_STRING Name)
IN PVOID Instance
Definition: pci.h:361
MRX_FOBX
Definition: fcb.h:308
ULONG RdbssReferenceTracingValue
Definition: rxce.c:130
PLARGE_INTEGER pAllocationSize
Definition: fcb.h:251
MRX_NORMAL_NODE_HEADER spacer
Definition: fcb.h:311
RX_PREFIX_ENTRY PrefixEntry
Definition: fcb.h:20
struct _SRV_OPEN * PSRV_OPEN
LIST_ENTRY FobxList
Definition: fcb.h:279
NODE_TYPE_CODE NodeTypeCode
Definition: fcb.h:83
LIST_ENTRY TransitionWaitList
Definition: fcb.h:91
#define OUT
Definition: typedefs.h:40
MRX_NORMAL_NODE_HEADER spacer
Definition: fcb.h:64
enum _RX_BLOCK_CONDITION RX_BLOCK_CONDITION
struct _FCB_LOCK * Next
Definition: fcb.h:114
PERESOURCE Resource
Definition: fcb.h:125
ULONG ERESOURCE
Definition: env_spec_w32.h:594
unsigned int ULONG
Definition: retypes.h:1
BOOLEAN UpperFinalizationDone
Definition: fcb.h:44
PLARGE_INTEGER pFileSize
Definition: fcb.h:252
PFCB Fcb
Definition: fcb.h:268
PMRX_FOBX NTAPI RxCreateNetFobx(_Out_ PRX_CONTEXT RxContext, _In_ PMRX_SRV_OPEN MrxSrvOpen)
const char * PCSTR
Definition: typedefs.h:52
USHORT NODE_TYPE_CODE
Definition: nodetype.h:22
PVOID MiniRdrContext[2]
Definition: fcb.h:95
PLARGE_INTEGER pLastWriteTime
Definition: fcb.h:249
BOOLEAN RxpDereferenceAndFinalizeNetFcb(_Out_ PFCB ThisFcb, _In_ PRX_CONTEXT RxContext, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
struct _V_NET_ROOT V_NET_ROOT
_In_ PFCB Fcb
Definition: cdprocs.h:151
PULONG pNumLinks
Definition: fcb.h:246
Definition: fcbtable.h:4
BOOLEAN ExclusiveLock
Definition: fcb.h:118
FORCEINLINE PUNICODE_STRING GET_ALREADY_PREFIXED_NAME(PMRX_SRV_OPEN SrvOpen, PMRX_FCB Fcb)
Definition: fcb.h:612
LONGLONG RXVBO
Definition: mrx.h:252
PFOBX InternalFobx
Definition: fcb.h:153
struct _NET_ROOT NET_ROOT
BOOLEAN RxFinalizeVNetRoot(_Out_ PV_NET_ROOT ThisVNetRoot, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
MRX_V_NET_ROOT
Definition: fcb.h:61
Definition: prefix.h:44
LIST_ENTRY TransitionWaitList
Definition: fcb.h:77
ULONG Key
Definition: fcb.h:117
PRX_FSD_DISPATCH_VECTOR PrivateDispatchVector
Definition: fcb.h:148
BOOLEAN UpperFinalizationDone
Definition: fcb.h:146
KEVENT TheActualEvent
Definition: fcb.h:94
BOOLEAN UpperFinalizationDone
Definition: fcb.h:68
LONG NumberOfBufferingStateChangeWaiters
Definition: fcb.h:143
ULONG OutstandingAsyncWrites
Definition: fatstruc.h:736