ReactOS  0.4.14-dev-999-g61c8d34
fcb.h File Reference
#include "buffring.h"
Include dependency graph for fcb.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _SRV_CALL
 
struct  _NET_ROOT
 
struct  _V_NET_ROOT
 
struct  _NON_PAGED_FCB
 
struct  _FCB_LOCK
 
struct  _FCB_BUFFERED_LOCKS
 
struct  _FCB
 
struct  _FCB_INIT_PACKET
 
struct  _SRV_OPEN
 
struct  _FOBX
 

Macros

#define NETROOT_FLAG_FINALIZATION_IN_PROGRESS   0x00040000
 
#define NETROOT_FLAG_NAME_ALREADY_REMOVED   0x00080000
 
#define FCB_STATE_DELETE_ON_CLOSE   0x00000001
 
#define FCB_STATE_TRUNCATE_ON_CLOSE   0x00000002
 
#define FCB_STATE_PAGING_FILE   0x00000004
 
#define FCB_STATE_DISABLE_LOCAL_BUFFERING   0x00000010
 
#define FCB_STATE_TEMPORARY   0x00000020
 
#define FCB_STATE_BUFFERING_STATE_CHANGE_PENDING   0x00000040
 
#define FCB_STATE_ORPHANED   0x00000080
 
#define FCB_STATE_READAHEAD_DEFERRED   0x00000100
 
#define FCB_STATE_DELAY_CLOSE   0x00000800
 
#define FCB_STATE_FAKEFCB   0x00001000
 
#define FCB_STATE_FILE_IS_BUF_COMPRESSED   0x00004000
 
#define FCB_STATE_FILE_IS_DISK_COMPRESSED   0x00008000
 
#define FCB_STATE_FILE_IS_SHADOWED   0x00010000
 
#define FCB_STATE_BUFFERSTATE_CHANGING   0x00002000
 
#define FCB_STATE_SPECIAL_PATH   0x00020000
 
#define FCB_STATE_TIME_AND_SIZE_ALREADY_SET   0x00040000
 
#define FCB_STATE_FILETIMECACHEING_ENABLED   0x00080000
 
#define FCB_STATE_FILESIZECACHEING_ENABLED   0x00100000
 
#define FCB_STATE_LOCK_BUFFERING_ENABLED   0x00200000
 
#define FCB_STATE_COLLAPSING_ENABLED   0x00400000
 
#define FCB_STATE_OPENSHARING_ENABLED   0x00800000
 
#define FCB_STATE_READBUFFERING_ENABLED   0x01000000
 
#define FCB_STATE_READCACHING_ENABLED   0x02000000
 
#define FCB_STATE_WRITEBUFFERING_ENABLED   0x04000000
 
#define FCB_STATE_WRITECACHING_ENABLED   0x08000000
 
#define FCB_STATE_NAME_ALREADY_REMOVED   0x10000000
 
#define FCB_STATE_ADDEDBACKSLASH   0x20000000
 
#define FCB_STATE_FOBX_USED   0x40000000
 
#define FCB_STATE_SRVOPEN_USED   0x80000000
 
#define FCB_STATE_BUFFERING_STATE_MASK
 
#define SRVOPEN_FLAG_ENCLOSED_ALLOCATED   0x10000
 
#define SRVOPEN_FLAG_FOBX_USED   0x20000
 
#define SRVOPEN_FLAG_SHAREACCESS_UPDATED   0x40000
 
#define FOBX_FLAG_MATCH_ALL   0x10000
 
#define FOBX_FLAG_FREE_UNICODE   0x20000
 
#define FOBX_FLAG_USER_SET_LAST_WRITE   0x40000
 
#define FOBX_FLAG_USER_SET_LAST_ACCESS   0x80000
 
#define FOBX_FLAG_USER_SET_CREATION   0x100000
 
#define FOBX_FLAG_USER_SET_LAST_CHANGE   0x200000
 
#define FOBX_FLAG_DELETE_ON_CLOSE   0x800000
 
#define FOBX_FLAG_SRVOPEN_CLOSED   0x1000000
 
#define FOBX_FLAG_UNC_NAME   0x2000000
 
#define FOBX_FLAG_ENCLOSED_ALLOCATED   0x4000000
 
#define FOBX_FLAG_MARKED_AS_DORMANT   0x8000000
 
#define RDBSS_REF_TRACK_SRVCALL   0x00000001
 
#define RDBSS_REF_TRACK_NETROOT   0x00000002
 
#define RDBSS_REF_TRACK_VNETROOT   0x00000004
 
#define RDBSS_REF_TRACK_NETFOBX   0x00000008
 
#define RDBSS_REF_TRACK_NETFCB   0x00000010
 
#define RDBSS_REF_TRACK_SRVOPEN   0x00000020
 
#define RX_PRINT_REF_TRACKING   0x40000000
 
#define RX_LOG_REF_TRACKING   0x80000000
 
#define REF_TRACING_ON(TraceMask)   (TraceMask & RdbssReferenceTracingValue)
 
#define PRINT_REF_COUNT(TYPE, Count)
 
#define RxReferenceSrvCall(SrvCall)
 
#define RxDereferenceSrvCall(SrvCall, LockHoldingState)
 
#define RxReferenceNetRoot(NetRoot)
 
#define RxDereferenceNetRoot(NetRoot, LockHoldingState)
 
#define RxReferenceVNetRoot(VNetRoot)
 
#define RxDereferenceVNetRoot(VNetRoot, LockHoldingState)
 
#define RxReferenceNetFobx(Fobx)
 
#define RxDereferenceNetFobx(Fobx, LockHoldingState)
 
#define RxReferenceSrvOpen(SrvOpen)
 
#define RxDereferenceSrvOpen(SrvOpen, LockHoldingState)
 
#define RxReferenceNetFcb(Fcb)
 
#define RxDereferenceNetFcb(Fcb)
 
#define RxDereferenceAndFinalizeNetFcb(Fcb, RxContext, RecursiveFinalize, ForceFinalize)
 
#define RxWaitForStableSrvCall(S, R)   RxWaitForStableCondition(&(S)->Condition, &(S)->TransitionWaitList, (R), NULL)
 
#define RxTransitionSrvCall(S, C)   RxUpdateCondition((C), &(S)->Condition, &(S)->TransitionWaitList)
 
#define RxWaitForStableNetRoot(N, R)   RxWaitForStableCondition(&(N)->Condition, &(N)->TransitionWaitList, (R), NULL)
 
#define RxTransitionNetRoot(N, C)   RxUpdateCondition((C), &(N)->Condition, &(N)->TransitionWaitList)
 
#define RxWaitForStableVNetRoot(V, R)   RxWaitForStableCondition(&(V)->Condition, &(V)->TransitionWaitList, (R), NULL)
 
#define RxTransitionVNetRoot(V, C)   RxUpdateCondition((C), &(V)->Condition, &(V)->TransitionWaitList)
 
#define RxWaitForStableNetFcb(F, R)   RxWaitForStableCondition(&(F)->Condition, &(F)->NonPaged->TransitionWaitList, (R), NULL )
 
#define RxTransitionNetFcb(F, C)   RxUpdateCondition((C), &(F)->Condition, &(F)->NonPaged->TransitionWaitList)
 
#define RxFormInitPacket(IP, I1, I1a, I2, I3, I4a, I4b, I5, I6, I7)
 
#define ASSERT_CORRECT_FCB_STRUCTURE_DBG_ONLY(Fcb)
 
#define ASSERT_CORRECT_FCB_STRUCTURE(Fcb)
 
#define RxWaitForStableSrvOpen(S, R)   RxWaitForStableCondition(&(S)->Condition, &(S)->TransitionWaitList, (R), NULL)
 
#define RxTransitionSrvOpen(S, C)   RxUpdateCondition((C), &(S)->Condition, &(S)->TransitionWaitList)
 
#define GET_ALREADY_PREFIXED_NAME_FROM_CONTEXT(Rxcontext)   GET_ALREADY_PREFIXED_NAME((Rxcontext)->pRelevantSrvOpen, (Rxcontext)->pFcb)
 

Typedefs

typedef struct _FCB_INIT_PACKETPFCB_INIT_PACKET
 
typedef struct _SRV_CALL SRV_CALL
 
typedef struct _SRV_CALLPSRV_CALL
 
typedef struct _NET_ROOT NET_ROOT
 
typedef struct _NET_ROOTPNET_ROOT
 
typedef struct _V_NET_ROOT V_NET_ROOT
 
typedef struct _V_NET_ROOTPV_NET_ROOT
 
typedef struct _NON_PAGED_FCB NON_PAGED_FCB
 
typedef struct _NON_PAGED_FCBPNON_PAGED_FCB
 
typedef enum _RX_FCBTRACKER_CASES RX_FCBTRACKER_CASES
 
typedef struct _FCB_LOCK FCB_LOCK
 
typedef struct _FCB_LOCKPFCB_LOCK
 
typedef struct _FCB_BUFFERED_LOCKS FCB_BUFFERED_LOCKS
 
typedef struct _FCB_BUFFERED_LOCKSPFCB_BUFFERED_LOCKS
 
typedef struct _FCB FCB
 
typedef struct _FCBPFCB
 
typedef struct _FCB_INIT_PACKET FCB_INIT_PACKET
 
typedef struct _SRV_OPEN SRV_OPEN
 
typedef struct _SRV_OPENPSRV_OPEN
 
typedef struct _FOBX FOBX
 
typedef struct _FOBXPFOBX
 

Enumerations

enum  _RX_FCBTRACKER_CASES {
  RX_FCBTRACKER_CASE_NORMAL, RX_FCBTRACKER_CASE_NULLCONTEXT, RX_FCBTRACKER_CASE_CBS_CONTEXT, RX_FCBTRACKER_CASE_CBS_WAIT_CONTEXT,
  RX_FCBTRACKER_CASE_MAXIMUM
}
 

Functions

VOID RxpTrackReference (_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
 
BOOLEAN RxpTrackDereference (_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
 
PSRV_CALL RxCreateSrvCall (_In_ PRX_CONTEXT RxContext, _In_ PUNICODE_STRING Name, _In_opt_ PUNICODE_STRING InnerNamePrefix, _In_ PRX_CONNECTION_ID RxConnectionId)
 
BOOLEAN RxFinalizeSrvCall (_Out_ PSRV_CALL ThisSrvCall, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
 
PNET_ROOT RxCreateNetRoot (_In_ PSRV_CALL SrvCall, _In_ PUNICODE_STRING Name, _In_ ULONG NetRootFlags, _In_opt_ PRX_CONNECTION_ID RxConnectionId)
 
BOOLEAN RxFinalizeNetRoot (_Out_ PNET_ROOT ThisNetRoot, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
 
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)
 
VOID RxUninitializeVNetRootParameters (_In_ PUNICODE_STRING UserName, _In_ PUNICODE_STRING UserDomainName, _In_ PUNICODE_STRING Password, _Out_ PULONG Flags)
 
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)
 
BOOLEAN RxFinalizeVNetRoot (_Out_ PV_NET_ROOT ThisVNetRoot, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
 
VOID RxSetFileSizeWithLock (_Inout_ PFCB Fcb, _In_ PLONGLONG FileSize)
 
VOID RxGetFileSizeWithLock (_In_ PFCB Fcb, _Out_ PLONGLONG FileSize)
 
PFCB RxCreateNetFcb (_In_ PRX_CONTEXT RxContext, _In_ PV_NET_ROOT VNetRoot, _In_ PUNICODE_STRING Name)
 
VOID NTAPI RxFinishFcbInitialization (_In_ OUT PMRX_FCB Fcb, _In_ RX_FILE_TYPE FileType, _In_opt_ PFCB_INIT_PACKET InitPacket)
 
VOID RxRemoveNameNetFcb (_Out_ PFCB ThisFcb)
 
LONG RxpReferenceNetFcb (_In_ PFCB Fcb)
 
LONG RxpDereferenceNetFcb (_In_ PFCB Fcb)
 
BOOLEAN RxpDereferenceAndFinalizeNetFcb (_Out_ PFCB ThisFcb, _In_ PRX_CONTEXT RxContext, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
 
PSRV_OPEN RxCreateSrvOpen (_In_ PV_NET_ROOT VNetRoot, _In_ OUT PFCB Fcb)
 
BOOLEAN RxFinalizeSrvOpen (_Out_ PSRV_OPEN ThisSrvOpen, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
 
FORCEINLINE PUNICODE_STRING GET_ALREADY_PREFIXED_NAME (PMRX_SRV_OPEN SrvOpen, PMRX_FCB Fcb)
 
PMRX_FOBX NTAPI RxCreateNetFobx (_Out_ PRX_CONTEXT RxContext, _In_ PMRX_SRV_OPEN MrxSrvOpen)
 
BOOLEAN RxFinalizeNetFobx (_Out_ PFOBX ThisFobx, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
 

Variables

ULONG RdbssReferenceTracingValue
 

Macro Definition Documentation

◆ ASSERT_CORRECT_FCB_STRUCTURE

#define ASSERT_CORRECT_FCB_STRUCTURE (   Fcb)
Value:
{ \
ASSERT(NodeTypeIsFcb(Fcb)); \
ASSERT(Fcb->NonPaged != NULL ); \
ASSERT_CORRECT_FCB_STRUCTURE_DBG_ONLY(Fcb); \
}
#define NodeTypeIsFcb(FCB)
Definition: nodetype.h:68
#define RDBSS_NTC_NONPAGED_FCB
Definition: nodetype.h:63
PNON_PAGED_FCB NonPaged
Definition: fatstruc.h:810
smooth NULL
Definition: ftsmooth.c:416
NodeType
Definition: Node.h:5
_In_ PFCB Fcb
Definition: cdprocs.h:151

Definition at line 562 of file fcb.h.

◆ ASSERT_CORRECT_FCB_STRUCTURE_DBG_ONLY

#define ASSERT_CORRECT_FCB_STRUCTURE_DBG_ONLY (   Fcb)

Definition at line 559 of file fcb.h.

◆ FCB_STATE_ADDEDBACKSLASH

#define FCB_STATE_ADDEDBACKSLASH   0x20000000

Definition at line 228 of file fcb.h.

◆ FCB_STATE_BUFFERING_STATE_CHANGE_PENDING

#define FCB_STATE_BUFFERING_STATE_CHANGE_PENDING   0x00000040

Definition at line 207 of file fcb.h.

◆ FCB_STATE_BUFFERING_STATE_MASK

#define FCB_STATE_BUFFERING_STATE_MASK
Value:
#define FCB_STATE_READBUFFERING_ENABLED
Definition: fcb.h:223
#define FCB_STATE_FILESIZECACHEING_ENABLED
Definition: fcb.h:219
#define FCB_STATE_WRITECACHING_ENABLED
Definition: fcb.h:226
#define FCB_STATE_OPENSHARING_ENABLED
Definition: fcb.h:222
#define FCB_STATE_READCACHING_ENABLED
Definition: fcb.h:224
#define FCB_STATE_WRITEBUFFERING_ENABLED
Definition: fcb.h:225
#define FCB_STATE_FILETIMECACHEING_ENABLED
Definition: fcb.h:218
#define FCB_STATE_LOCK_BUFFERING_ENABLED
Definition: fcb.h:220
#define FCB_STATE_COLLAPSING_ENABLED
Definition: fcb.h:221

Definition at line 232 of file fcb.h.

◆ FCB_STATE_BUFFERSTATE_CHANGING

#define FCB_STATE_BUFFERSTATE_CHANGING   0x00002000

Definition at line 215 of file fcb.h.

◆ FCB_STATE_COLLAPSING_ENABLED

#define FCB_STATE_COLLAPSING_ENABLED   0x00400000

Definition at line 221 of file fcb.h.

◆ FCB_STATE_DELAY_CLOSE

#define FCB_STATE_DELAY_CLOSE   0x00000800

Definition at line 210 of file fcb.h.

◆ FCB_STATE_DELETE_ON_CLOSE

#define FCB_STATE_DELETE_ON_CLOSE   0x00000001

Definition at line 202 of file fcb.h.

◆ FCB_STATE_DISABLE_LOCAL_BUFFERING

#define FCB_STATE_DISABLE_LOCAL_BUFFERING   0x00000010

Definition at line 205 of file fcb.h.

◆ FCB_STATE_FAKEFCB

#define FCB_STATE_FAKEFCB   0x00001000

Definition at line 211 of file fcb.h.

◆ FCB_STATE_FILE_IS_BUF_COMPRESSED

#define FCB_STATE_FILE_IS_BUF_COMPRESSED   0x00004000

Definition at line 212 of file fcb.h.

◆ FCB_STATE_FILE_IS_DISK_COMPRESSED

#define FCB_STATE_FILE_IS_DISK_COMPRESSED   0x00008000

Definition at line 213 of file fcb.h.

◆ FCB_STATE_FILE_IS_SHADOWED

#define FCB_STATE_FILE_IS_SHADOWED   0x00010000

Definition at line 214 of file fcb.h.

◆ FCB_STATE_FILESIZECACHEING_ENABLED

#define FCB_STATE_FILESIZECACHEING_ENABLED   0x00100000

Definition at line 219 of file fcb.h.

◆ FCB_STATE_FILETIMECACHEING_ENABLED

#define FCB_STATE_FILETIMECACHEING_ENABLED   0x00080000

Definition at line 218 of file fcb.h.

◆ FCB_STATE_FOBX_USED

#define FCB_STATE_FOBX_USED   0x40000000

Definition at line 229 of file fcb.h.

◆ FCB_STATE_LOCK_BUFFERING_ENABLED

#define FCB_STATE_LOCK_BUFFERING_ENABLED   0x00200000

Definition at line 220 of file fcb.h.

◆ FCB_STATE_NAME_ALREADY_REMOVED

#define FCB_STATE_NAME_ALREADY_REMOVED   0x10000000

Definition at line 227 of file fcb.h.

◆ FCB_STATE_OPENSHARING_ENABLED

#define FCB_STATE_OPENSHARING_ENABLED   0x00800000

Definition at line 222 of file fcb.h.

◆ FCB_STATE_ORPHANED

#define FCB_STATE_ORPHANED   0x00000080

Definition at line 208 of file fcb.h.

◆ FCB_STATE_PAGING_FILE

#define FCB_STATE_PAGING_FILE   0x00000004

Definition at line 204 of file fcb.h.

◆ FCB_STATE_READAHEAD_DEFERRED

#define FCB_STATE_READAHEAD_DEFERRED   0x00000100

Definition at line 209 of file fcb.h.

◆ FCB_STATE_READBUFFERING_ENABLED

#define FCB_STATE_READBUFFERING_ENABLED   0x01000000

Definition at line 223 of file fcb.h.

◆ FCB_STATE_READCACHING_ENABLED

#define FCB_STATE_READCACHING_ENABLED   0x02000000

Definition at line 224 of file fcb.h.

◆ FCB_STATE_SPECIAL_PATH

#define FCB_STATE_SPECIAL_PATH   0x00020000

Definition at line 216 of file fcb.h.

◆ FCB_STATE_SRVOPEN_USED

#define FCB_STATE_SRVOPEN_USED   0x80000000

Definition at line 230 of file fcb.h.

◆ FCB_STATE_TEMPORARY

#define FCB_STATE_TEMPORARY   0x00000020

Definition at line 206 of file fcb.h.

◆ FCB_STATE_TIME_AND_SIZE_ALREADY_SET

#define FCB_STATE_TIME_AND_SIZE_ALREADY_SET   0x00040000

Definition at line 217 of file fcb.h.

◆ FCB_STATE_TRUNCATE_ON_CLOSE

#define FCB_STATE_TRUNCATE_ON_CLOSE   0x00000002

Definition at line 203 of file fcb.h.

◆ FCB_STATE_WRITEBUFFERING_ENABLED

#define FCB_STATE_WRITEBUFFERING_ENABLED   0x04000000

Definition at line 225 of file fcb.h.

◆ FCB_STATE_WRITECACHING_ENABLED

#define FCB_STATE_WRITECACHING_ENABLED   0x08000000

Definition at line 226 of file fcb.h.

◆ FOBX_FLAG_DELETE_ON_CLOSE

#define FOBX_FLAG_DELETE_ON_CLOSE   0x800000

Definition at line 295 of file fcb.h.

◆ FOBX_FLAG_ENCLOSED_ALLOCATED

#define FOBX_FLAG_ENCLOSED_ALLOCATED   0x4000000

Definition at line 298 of file fcb.h.

◆ FOBX_FLAG_FREE_UNICODE

#define FOBX_FLAG_FREE_UNICODE   0x20000

Definition at line 290 of file fcb.h.

◆ FOBX_FLAG_MARKED_AS_DORMANT

#define FOBX_FLAG_MARKED_AS_DORMANT   0x8000000

Definition at line 299 of file fcb.h.

◆ FOBX_FLAG_MATCH_ALL

#define FOBX_FLAG_MATCH_ALL   0x10000

Definition at line 289 of file fcb.h.

◆ FOBX_FLAG_SRVOPEN_CLOSED

#define FOBX_FLAG_SRVOPEN_CLOSED   0x1000000

Definition at line 296 of file fcb.h.

◆ FOBX_FLAG_UNC_NAME

#define FOBX_FLAG_UNC_NAME   0x2000000

Definition at line 297 of file fcb.h.

◆ FOBX_FLAG_USER_SET_CREATION

#define FOBX_FLAG_USER_SET_CREATION   0x100000

Definition at line 293 of file fcb.h.

◆ FOBX_FLAG_USER_SET_LAST_ACCESS

#define FOBX_FLAG_USER_SET_LAST_ACCESS   0x80000

Definition at line 292 of file fcb.h.

◆ FOBX_FLAG_USER_SET_LAST_CHANGE

#define FOBX_FLAG_USER_SET_LAST_CHANGE   0x200000

Definition at line 294 of file fcb.h.

◆ FOBX_FLAG_USER_SET_LAST_WRITE

#define FOBX_FLAG_USER_SET_LAST_WRITE   0x40000

Definition at line 291 of file fcb.h.

◆ GET_ALREADY_PREFIXED_NAME_FROM_CONTEXT

#define GET_ALREADY_PREFIXED_NAME_FROM_CONTEXT (   Rxcontext)    GET_ALREADY_PREFIXED_NAME((Rxcontext)->pRelevantSrvOpen, (Rxcontext)->pFcb)

Definition at line 631 of file fcb.h.

◆ NETROOT_FLAG_FINALIZATION_IN_PROGRESS

#define NETROOT_FLAG_FINALIZATION_IN_PROGRESS   0x00040000

Definition at line 30 of file fcb.h.

◆ NETROOT_FLAG_NAME_ALREADY_REMOVED

#define NETROOT_FLAG_NAME_ALREADY_REMOVED   0x00080000

Definition at line 31 of file fcb.h.

◆ PRINT_REF_COUNT

#define PRINT_REF_COUNT (   TYPE,
  Count 
)
Value:
if (REF_TRACING_ON( RDBSS_REF_TRACK_ ## TYPE) && \
{ \
DbgPrint("%ld\n", Count); \
}
#define RX_PRINT_REF_TRACKING
Definition: fcb.h:355
_Inout_ __drv_aliasesMem PSLIST_ENTRY _Inout_ PSLIST_ENTRY _In_ ULONG Count
Definition: exfuncs.h:1015
#define REF_TRACING_ON(TraceMask)
Definition: fcb.h:374
TYPE
Definition: eventcreate.c:651
ULONG RdbssReferenceTracingValue
Definition: rxce.c:130

Definition at line 376 of file fcb.h.

◆ RDBSS_REF_TRACK_NETFCB

#define RDBSS_REF_TRACK_NETFCB   0x00000010

Definition at line 353 of file fcb.h.

◆ RDBSS_REF_TRACK_NETFOBX

#define RDBSS_REF_TRACK_NETFOBX   0x00000008

Definition at line 352 of file fcb.h.

◆ RDBSS_REF_TRACK_NETROOT

#define RDBSS_REF_TRACK_NETROOT   0x00000002

Definition at line 350 of file fcb.h.

◆ RDBSS_REF_TRACK_SRVCALL

#define RDBSS_REF_TRACK_SRVCALL   0x00000001

Definition at line 349 of file fcb.h.

◆ RDBSS_REF_TRACK_SRVOPEN

#define RDBSS_REF_TRACK_SRVOPEN   0x00000020

Definition at line 354 of file fcb.h.

◆ RDBSS_REF_TRACK_VNETROOT

#define RDBSS_REF_TRACK_VNETROOT   0x00000004

Definition at line 351 of file fcb.h.

◆ REF_TRACING_ON

#define REF_TRACING_ON (   TraceMask)    (TraceMask & RdbssReferenceTracingValue)

Definition at line 374 of file fcb.h.

◆ RX_LOG_REF_TRACKING

#define RX_LOG_REF_TRACKING   0x80000000

Definition at line 356 of file fcb.h.

◆ RX_PRINT_REF_TRACKING

#define RX_PRINT_REF_TRACKING   0x40000000

Definition at line 355 of file fcb.h.

◆ RxDereferenceAndFinalizeNetFcb

#define RxDereferenceAndFinalizeNetFcb (   Fcb,
  RxContext,
  RecursiveFinalize,
  ForceFinalize 
)
Value:
RxpDereferenceAndFinalizeNetFcb(Fcb, RxContext, RecursiveFinalize, ForceFinalize))
BOOLEAN RxpTrackDereference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6729
#define RDBSS_REF_TRACK_NETFCB
Definition: fcb.h:353
_In_ PFCB Fcb
Definition: cdprocs.h:151

Definition at line 439 of file fcb.h.

◆ RxDereferenceNetFcb

#define RxDereferenceNetFcb (   Fcb)
Value:
RxpDereferenceNetFcb(Fcb))
long LONG
Definition: pedump.c:60
BOOLEAN RxpTrackDereference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6729
#define RDBSS_REF_TRACK_NETFCB
Definition: fcb.h:353
_In_ PFCB Fcb
Definition: cdprocs.h:151

Definition at line 435 of file fcb.h.

◆ RxDereferenceNetFobx

#define RxDereferenceNetFobx (   Fobx,
  LockHoldingState 
)
Value:
RxpTrackDereference(RDBSS_REF_TRACK_NETFOBX, __FILE__, __LINE__, Fobx); \
RxDereference(Fobx, LockHoldingState)
#define RDBSS_REF_TRACK_NETFOBX
Definition: fcb.h:352
BOOLEAN RxpTrackDereference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6729

Definition at line 419 of file fcb.h.

◆ RxDereferenceNetRoot

#define RxDereferenceNetRoot (   NetRoot,
  LockHoldingState 
)
Value:
RxpTrackDereference(RDBSS_REF_TRACK_NETROOT, __FILE__, __LINE__, NetRoot); \
RxDereference(NetRoot, LockHoldingState)
#define RDBSS_REF_TRACK_NETROOT
Definition: fcb.h:350
BOOLEAN RxpTrackDereference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6729

Definition at line 403 of file fcb.h.

◆ RxDereferenceSrvCall

#define RxDereferenceSrvCall (   SrvCall,
  LockHoldingState 
)
Value:
RxpTrackDereference(RDBSS_REF_TRACK_SRVCALL, __FILE__, __LINE__, SrvCall); \
RxDereference(SrvCall, LockHoldingState)
#define RDBSS_REF_TRACK_SRVCALL
Definition: fcb.h:349
BOOLEAN RxpTrackDereference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6729

Definition at line 395 of file fcb.h.

◆ RxDereferenceSrvOpen

#define RxDereferenceSrvOpen (   SrvOpen,
  LockHoldingState 
)
Value:
RxpTrackDereference(RDBSS_REF_TRACK_SRVOPEN, __FILE__, __LINE__, SrvOpen); \
RxDereference(SrvOpen, LockHoldingState)
#define RDBSS_REF_TRACK_SRVOPEN
Definition: fcb.h:354
BOOLEAN RxpTrackDereference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6729

Definition at line 427 of file fcb.h.

◆ RxDereferenceVNetRoot

#define RxDereferenceVNetRoot (   VNetRoot,
  LockHoldingState 
)
Value:
RxpTrackDereference(RDBSS_REF_TRACK_VNETROOT, __FILE__, __LINE__, VNetRoot); \
RxDereference(VNetRoot, LockHoldingState)
#define RDBSS_REF_TRACK_VNETROOT
Definition: fcb.h:351
BOOLEAN RxpTrackDereference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6729

Definition at line 411 of file fcb.h.

◆ RxFormInitPacket

#define RxFormInitPacket (   IP,
  I1,
  I1a,
  I2,
  I3,
  I4a,
  I4b,
  I5,
  I6,
  I7 
)
Value:
( \
IP.pAttributes = I1, IP.pNumLinks = I1a, \
IP.pCreationTime = I2, IP.pLastAccessTime = I3, \
IP.pLastWriteTime = I4a, IP.pLastChangeTime = I4b, \
IP.pAllocationSize = I5, IP.pFileSize = I6, \
IP.pValidDataLength = I7, &IP)
Definition: netstat.c:32

Definition at line 545 of file fcb.h.

◆ RxReferenceNetFcb

#define RxReferenceNetFcb (   Fcb)
Value:
(RxpTrackReference(RDBSS_REF_TRACK_NETFCB, __FILE__, __LINE__, Fcb), \
RxpReferenceNetFcb(Fcb))
VOID RxpTrackReference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6796
#define RDBSS_REF_TRACK_NETFCB
Definition: fcb.h:353
_In_ PFCB Fcb
Definition: cdprocs.h:151

Definition at line 431 of file fcb.h.

◆ RxReferenceNetFobx

#define RxReferenceNetFobx (   Fobx)
Value:
RxpTrackReference(RDBSS_REF_TRACK_NETFOBX, __FILE__, __LINE__, Fobx); \
RxReference(Fobx)
VOID RxpTrackReference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6796
#define RDBSS_REF_TRACK_NETFOBX
Definition: fcb.h:352

Definition at line 415 of file fcb.h.

◆ RxReferenceNetRoot

#define RxReferenceNetRoot (   NetRoot)
Value:
RxpTrackReference(RDBSS_REF_TRACK_NETROOT, __FILE__, __LINE__, NetRoot); \
RxReference(NetRoot)
VOID RxpTrackReference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6796
#define RDBSS_REF_TRACK_NETROOT
Definition: fcb.h:350

Definition at line 399 of file fcb.h.

◆ RxReferenceSrvCall

#define RxReferenceSrvCall (   SrvCall)
Value:
RxpTrackReference(RDBSS_REF_TRACK_SRVCALL, __FILE__, __LINE__, SrvCall); \
RxReference(SrvCall)
#define RDBSS_REF_TRACK_SRVCALL
Definition: fcb.h:349
VOID RxpTrackReference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6796

Definition at line 391 of file fcb.h.

◆ RxReferenceSrvOpen

#define RxReferenceSrvOpen (   SrvOpen)
Value:
RxpTrackReference(RDBSS_REF_TRACK_SRVOPEN, __FILE__, __LINE__, SrvOpen); \
RxReference(SrvOpen)
VOID RxpTrackReference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6796
#define RDBSS_REF_TRACK_SRVOPEN
Definition: fcb.h:354

Definition at line 423 of file fcb.h.

◆ RxReferenceVNetRoot

#define RxReferenceVNetRoot (   VNetRoot)
Value:
RxpTrackReference(RDBSS_REF_TRACK_VNETROOT, __FILE__, __LINE__, VNetRoot); \
RxReference(VNetRoot)
VOID RxpTrackReference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6796
#define RDBSS_REF_TRACK_VNETROOT
Definition: fcb.h:351

Definition at line 407 of file fcb.h.

◆ RxTransitionNetFcb

#define RxTransitionNetFcb (   F,
  C 
)    RxUpdateCondition((C), &(F)->Condition, &(F)->NonPaged->TransitionWaitList)

Definition at line 543 of file fcb.h.

◆ RxTransitionNetRoot

#define RxTransitionNetRoot (   N,
  C 
)    RxUpdateCondition((C), &(N)->Condition, &(N)->TransitionWaitList)

Definition at line 474 of file fcb.h.

◆ RxTransitionSrvCall

#define RxTransitionSrvCall (   S,
  C 
)    RxUpdateCondition((C), &(S)->Condition, &(S)->TransitionWaitList)

Definition at line 451 of file fcb.h.

◆ RxTransitionSrvOpen

#define RxTransitionSrvOpen (   S,
  C 
)    RxUpdateCondition((C), &(S)->Condition, &(S)->TransitionWaitList)

Definition at line 578 of file fcb.h.

◆ RxTransitionVNetRoot

#define RxTransitionVNetRoot (   V,
  C 
)    RxUpdateCondition((C), &(V)->Condition, &(V)->TransitionWaitList)

Definition at line 515 of file fcb.h.

◆ RxWaitForStableNetFcb

#define RxWaitForStableNetFcb (   F,
  R 
)    RxWaitForStableCondition(&(F)->Condition, &(F)->NonPaged->TransitionWaitList, (R), NULL )

Definition at line 542 of file fcb.h.

◆ RxWaitForStableNetRoot

#define RxWaitForStableNetRoot (   N,
  R 
)    RxWaitForStableCondition(&(N)->Condition, &(N)->TransitionWaitList, (R), NULL)

Definition at line 473 of file fcb.h.

◆ RxWaitForStableSrvCall

#define RxWaitForStableSrvCall (   S,
  R 
)    RxWaitForStableCondition(&(S)->Condition, &(S)->TransitionWaitList, (R), NULL)

Definition at line 450 of file fcb.h.

◆ RxWaitForStableSrvOpen

#define RxWaitForStableSrvOpen (   S,
  R 
)    RxWaitForStableCondition(&(S)->Condition, &(S)->TransitionWaitList, (R), NULL)

Definition at line 577 of file fcb.h.

◆ RxWaitForStableVNetRoot

#define RxWaitForStableVNetRoot (   V,
  R 
)    RxWaitForStableCondition(&(V)->Condition, &(V)->TransitionWaitList, (R), NULL)

Definition at line 514 of file fcb.h.

◆ SRVOPEN_FLAG_ENCLOSED_ALLOCATED

#define SRVOPEN_FLAG_ENCLOSED_ALLOCATED   0x10000

Definition at line 256 of file fcb.h.

◆ SRVOPEN_FLAG_FOBX_USED

#define SRVOPEN_FLAG_FOBX_USED   0x20000

Definition at line 257 of file fcb.h.

◆ SRVOPEN_FLAG_SHAREACCESS_UPDATED

#define SRVOPEN_FLAG_SHAREACCESS_UPDATED   0x40000

Definition at line 258 of file fcb.h.

Typedef Documentation

◆ FCB

typedef struct _FCB FCB

◆ FCB_BUFFERED_LOCKS

◆ FCB_INIT_PACKET

◆ FCB_LOCK

◆ FOBX

typedef struct _FOBX FOBX

◆ NET_ROOT

◆ NON_PAGED_FCB

◆ PFCB

typedef struct _FCB * PFCB

◆ PFCB_BUFFERED_LOCKS

◆ PFCB_INIT_PACKET

Definition at line 7 of file fcb.h.

◆ PFCB_LOCK

◆ PFOBX

typedef struct _FOBX * PFOBX

◆ PNET_ROOT

◆ PNON_PAGED_FCB

◆ PSRV_CALL

◆ PSRV_OPEN

◆ PV_NET_ROOT

◆ RX_FCBTRACKER_CASES

◆ SRV_CALL

◆ SRV_OPEN

◆ V_NET_ROOT

Enumeration Type Documentation

◆ _RX_FCBTRACKER_CASES

Enumerator
RX_FCBTRACKER_CASE_NORMAL 
RX_FCBTRACKER_CASE_NULLCONTEXT 
RX_FCBTRACKER_CASE_CBS_CONTEXT 
RX_FCBTRACKER_CASE_CBS_WAIT_CONTEXT 
RX_FCBTRACKER_CASE_MAXIMUM 

Definition at line 103 of file fcb.h.

Function Documentation

◆ GET_ALREADY_PREFIXED_NAME()

FORCEINLINE PUNICODE_STRING GET_ALREADY_PREFIXED_NAME ( PMRX_SRV_OPEN  SrvOpen,
PMRX_FCB  Fcb 
)

Definition at line 612 of file fcb.h.

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 }
Definition: cdstruc.h:908
#define NodeTypeIsFcb(FCB)
Definition: nodetype.h:68
#define RDBSS_NTC_SRVOPEN
Definition: nodetype.h:52
PMRX_FCB pFcb
Definition: mrxfcb.h:161
smooth NULL
Definition: ftsmooth.c:416
NodeType
Definition: Node.h:5
struct _FCB * PFCB
UNICODE_STRING PrivateAlreadyPrefixedName
Definition: fcb.h:145
PUNICODE_STRING pAlreadyPrefixedName
Definition: mrxfcb.h:169
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
_In_ PFCB Fcb
Definition: cdprocs.h:151

◆ RxCreateNetFcb()

PFCB RxCreateNetFcb ( _In_ PRX_CONTEXT  RxContext,
_In_ PV_NET_ROOT  VNetRoot,
_In_ PUNICODE_STRING  Name 
)

◆ RxCreateNetFobx()

PMRX_FOBX NTAPI RxCreateNetFobx ( _Out_ PRX_CONTEXT  RxContext,
_In_ PMRX_SRV_OPEN  MrxSrvOpen 
)

◆ RxCreateNetRoot()

PNET_ROOT RxCreateNetRoot ( _In_ PSRV_CALL  SrvCall,
_In_ PUNICODE_STRING  Name,
_In_ ULONG  NetRootFlags,
_In_opt_ PRX_CONNECTION_ID  RxConnectionId 
)

◆ RxCreateSrvCall()

PSRV_CALL RxCreateSrvCall ( _In_ PRX_CONTEXT  RxContext,
_In_ PUNICODE_STRING  Name,
_In_opt_ PUNICODE_STRING  InnerNamePrefix,
_In_ PRX_CONNECTION_ID  RxConnectionId 
)

◆ RxCreateSrvOpen()

PSRV_OPEN RxCreateSrvOpen ( _In_ PV_NET_ROOT  VNetRoot,
_In_ OUT PFCB  Fcb 
)

◆ RxCreateVNetRoot()

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 
)

◆ RxFinalizeNetFobx()

BOOLEAN RxFinalizeNetFobx ( _Out_ PFOBX  ThisFobx,
_In_ BOOLEAN  RecursiveFinalize,
_In_ BOOLEAN  ForceFinalize 
)

Definition at line 2964 of file rxce.c.

2968 {
2969  PFCB Fcb;
2970  PSRV_OPEN SrvOpen;
2971 
2972  PAGED_CODE();
2973 
2974  ASSERT(NodeType(ThisFobx) == RDBSS_NTC_FOBX);
2975 
2976  /* Only finalize if forced or if there's no ref left */
2977  if (ThisFobx->NodeReferenceCount != 0 &&
2978  !ForceFinalize)
2979  {
2980  return FALSE;
2981  }
2982 
2983  DPRINT("Finalize Fobx: %p (with %d ref), forced: %d\n", ThisFobx, ThisFobx->NodeReferenceCount, ForceFinalize);
2984 
2985  SrvOpen = ThisFobx->SrvOpen;
2986  Fcb = SrvOpen->Fcb;
2987  /* If it wasn't finalized yet, do it */
2988  if (!ThisFobx->UpperFinalizationDone)
2989  {
2991  ASSERT(RxIsFcbAcquiredExclusive(SrvOpen->Fcb));
2992 
2993  /* Remove it from the SRV_OPEN */
2994  RemoveEntryList(&ThisFobx->FobxQLinks);
2995 
2996  /* If we were used to browse a directory, free the query buffer */
2997  if (BooleanFlagOn(ThisFobx->Flags, FOBX_FLAG_FREE_UNICODE))
2998  {
2999  RxFreePoolWithTag(ThisFobx->UnicodeQueryTemplate.Buffer, RX_DIRCTL_POOLTAG);
3000  }
3001 
3002  /* Notify the mini-rdr */
3004  {
3006  }
3007 
3008  /* If the SRV_OPEN wasn't closed yet, do it */
3009  if (!BooleanFlagOn(ThisFobx->Flags, FOBX_FLAG_SRVOPEN_CLOSED))
3010  {
3011  NTSTATUS Status;
3012 
3013  Status = RxCloseAssociatedSrvOpen(ThisFobx, FALSE);
3014  DPRINT("Closing SRV_OPEN %p for %p: %x\n", SrvOpen, ThisFobx, Status);
3015  }
3016 
3017  /* Finalization done */
3018  ThisFobx->UpperFinalizationDone = TRUE;
3019  }
3020 
3021  /* If we're still referenced, don't go any further! */
3022  if (ThisFobx->NodeReferenceCount != 0)
3023  {
3024  return FALSE;
3025  }
3026 
3027  /* At that point, everything should be closed */
3028  ASSERT(IsListEmpty(&ThisFobx->ClosePendingList));
3029 
3030  /* Was the FOBX allocated with another object?
3031  * If so, mark the buffer free in said object
3032  */
3033  if (ThisFobx == Fcb->InternalFobx)
3034  {
3036  }
3037  else if (ThisFobx == SrvOpen->InternalFobx)
3038  {
3039  ClearFlag(SrvOpen->Flags, SRVOPEN_FLAG_FOBX_USED);
3040  }
3041 
3042  ThisFobx->pSrvOpen = NULL;
3043 
3044  /* A FOBX less */
3045  InterlockedDecrement((volatile long *)&SrvOpen->pVNetRoot->NumberOfFobxs);
3046 
3048 
3049  /* If it wasn't allocated with another object, free the FOBX */
3050  if (!BooleanFlagOn(ThisFobx->Flags, FOBX_FLAG_ENCLOSED_ALLOCATED))
3051  {
3052  RxFreeFcbObject(ThisFobx);
3053  }
3054 
3055  return TRUE;
3056 }
#define TRUE
Definition: types.h:120
#define RDBSS_NTC_OPENTARGETDIR_FCB
Definition: nodetype.h:44
#define FOBX_FLAG_SRVOPEN_CLOSED
Definition: fcb.h:296
PFOBX InternalFobx
Definition: fcb.h:280
Definition: cdstruc.h:908
#define BooleanFlagOn(F, SF)
Definition: ext2fs.h:183
VOID RxFreeFcbObject(PVOID Object)
Definition: rxce.c:4274
LONG NTSTATUS
Definition: precomp.h:26
_Must_inspect_result_ FORCEINLINE BOOLEAN IsListEmpty(_In_ const LIST_ENTRY *ListHead)
Definition: rtlfuncs.h:57
#define PAGED_CODE()
Definition: video.h:57
FORCEINLINE BOOLEAN RemoveEntryList(_In_ PLIST_ENTRY Entry)
Definition: rtlfuncs.h:105
smooth NULL
Definition: ftsmooth.c:416
PMRX_DEALLOCATE_FOR_FOBX MRxDeallocateForFobx
Definition: mrx.h:360
void DPRINT(...)
Definition: polytest.cpp:61
NodeType
Definition: Node.h:5
#define FOBX_FLAG_ENCLOSED_ALLOCATED
Definition: fcb.h:298
NTSTATUS RxCloseAssociatedSrvOpen(_In_ PFOBX Fobx, _In_opt_ PRX_CONTEXT RxContext)
#define RxDereferenceSrvOpen(SrvOpen, LockHoldingState)
Definition: fcb.h:427
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
#define SRVOPEN_FLAG_FOBX_USED
Definition: fcb.h:257
#define InterlockedDecrement
Definition: armddk.h:52
PMINIRDR_DISPATCH MRxDispatch
Definition: fcb.h:150
#define RX_DIRCTL_POOLTAG
Definition: rxpooltg.h:20
Definition: fcb.h:260
#define RxIsFcbAcquiredExclusive(Fcb)
Definition: rxprocs.h:229
ClearFlag(Dirent->Flags, DIRENT_FLAG_NOT_PERSISTENT)
#define FOBX_FLAG_FREE_UNICODE
Definition: fcb.h:290
Status
Definition: gdiplustypes.h:24
#define RDBSS_NTC_FOBX
Definition: nodetype.h:57
#define FCB_STATE_FOBX_USED
Definition: fcb.h:229
PFCB Fcb
Definition: fcb.h:268
_In_ PFCB Fcb
Definition: cdprocs.h:151
PFOBX InternalFobx
Definition: fcb.h:153
ULONG FcbState
Definition: cdstruc.h:977

Referenced by RxDereference(), RxFinalizeSrvOpen(), and RxScavengeRelatedFobxs().

◆ RxFinalizeNetRoot()

BOOLEAN RxFinalizeNetRoot ( _Out_ PNET_ROOT  ThisNetRoot,
_In_ BOOLEAN  RecursiveFinalize,
_In_ BOOLEAN  ForceFinalize 
)

◆ RxFinalizeSrvCall()

BOOLEAN RxFinalizeSrvCall ( _Out_ PSRV_CALL  ThisSrvCall,
_In_ BOOLEAN  RecursiveFinalize,
_In_ BOOLEAN  ForceFinalize 
)

◆ RxFinalizeSrvOpen()

BOOLEAN RxFinalizeSrvOpen ( _Out_ PSRV_OPEN  ThisSrvOpen,
_In_ BOOLEAN  RecursiveFinalize,
_In_ BOOLEAN  ForceFinalize 
)

◆ RxFinalizeVNetRoot()

BOOLEAN RxFinalizeVNetRoot ( _Out_ PV_NET_ROOT  ThisVNetRoot,
_In_ BOOLEAN  RecursiveFinalize,
_In_ BOOLEAN  ForceFinalize 
)

◆ RxFinishFcbInitialization()

VOID NTAPI RxFinishFcbInitialization ( _In_ OUT PMRX_FCB  Fcb,
_In_ RX_FILE_TYPE  FileType,
_In_opt_ PFCB_INIT_PACKET  InitPacket 
)

◆ RxGetFileSizeWithLock()

VOID RxGetFileSizeWithLock ( _In_ PFCB  Fcb,
_Out_ PLONGLONG  FileSize 
)

◆ RxInitializeVNetRootParameters()

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 
)

◆ RxpDereferenceAndFinalizeNetFcb()

BOOLEAN RxpDereferenceAndFinalizeNetFcb ( _Out_ PFCB  ThisFcb,
_In_ PRX_CONTEXT  RxContext,
_In_ BOOLEAN  RecursiveFinalize,
_In_ BOOLEAN  ForceFinalize 
)

◆ RxpDereferenceNetFcb()

LONG RxpDereferenceNetFcb ( _In_ PFCB  Fcb)

◆ RxpReferenceNetFcb()

LONG RxpReferenceNetFcb ( _In_ PFCB  Fcb)

◆ RxpTrackDereference()

BOOLEAN RxpTrackDereference ( _In_ ULONG  TraceType,
_In_ PCSTR  FileName,
_In_ ULONG  Line,
_In_ PVOID  Instance 
)

Definition at line 6729 of file rxce.c.

6734 {
6735  PCSTR InstanceType;
6736  ULONG ReferenceCount;
6737 
6738  PAGED_CODE();
6739 
6740  if (!BooleanFlagOn(RdbssReferenceTracingValue, TraceType))
6741  {
6742  return TRUE;
6743  }
6744 
6745  switch (TraceType)
6746  {
6748  InstanceType = "SrvCall";
6749  ReferenceCount = ((PSRV_CALL)Instance)->NodeReferenceCount;
6750  break;
6751 
6753  InstanceType = "NetRoot";
6754  ReferenceCount = ((PNET_ROOT)Instance)->NodeReferenceCount;
6755  break;
6756 
6758  InstanceType = "VNetRoot";
6759  ReferenceCount = ((PV_NET_ROOT)Instance)->NodeReferenceCount;
6760  break;
6761 
6763  InstanceType = "NetFobx";
6764  ReferenceCount = ((PFOBX)Instance)->NodeReferenceCount;
6765  break;
6766 
6768  InstanceType = "NetFcb";
6769  ReferenceCount = ((PFCB)Instance)->NodeReferenceCount;
6770  break;
6771 
6773  InstanceType = "SrvOpen";
6774  ReferenceCount = ((PSRV_OPEN)Instance)->NodeReferenceCount;
6775  break;
6776 
6777  default:
6778  DPRINT1("Invalid node type!\n");
6779  return TRUE;
6780  }
6781 
6783  {
6784  UNIMPLEMENTED;
6785  }
6786 
6788  {
6789  DbgPrint("(%s:%d) %p (%s) dereferenced from %d\n", FileName, Line, Instance, InstanceType, ReferenceCount);
6790  }
6791 
6792  return TRUE;
6793 }
struct _SRV_CALL * PSRV_CALL
#define TRUE
Definition: types.h:120
#define DbgPrint
Definition: loader.c:25
#define BooleanFlagOn(F, SF)
Definition: ext2fs.h:183
#define RDBSS_REF_TRACK_SRVCALL
Definition: fcb.h:349
#define RX_PRINT_REF_TRACKING
Definition: fcb.h:355
struct _FOBX * PFOBX
#define PAGED_CODE()
Definition: video.h:57
ULONG RdbssReferenceTracingValue
Definition: rxce.c:130
struct _V_NET_ROOT * PV_NET_ROOT
#define RDBSS_REF_TRACK_SRVOPEN
Definition: fcb.h:354
FCB * PFCB
Definition: cdstruc.h:1046
#define RDBSS_REF_TRACK_NETFOBX
Definition: fcb.h:352
Definition: ncftp.h:79
struct _NET_ROOT * PNET_ROOT
#define RDBSS_REF_TRACK_VNETROOT
Definition: fcb.h:351
#define RX_LOG_REF_TRACKING
Definition: fcb.h:356
#define RDBSS_REF_TRACK_NETROOT
Definition: fcb.h:350
IN PVOID Instance
Definition: pci.h:359
#define DPRINT1
Definition: precomp.h:8
struct _SRV_OPEN * PSRV_OPEN
#define RDBSS_REF_TRACK_NETFCB
Definition: fcb.h:353
unsigned int ULONG
Definition: retypes.h:1
#define UNIMPLEMENTED
Definition: debug.h:114
const char * PCSTR
Definition: typedefs.h:52

◆ RxpTrackReference()

VOID RxpTrackReference ( _In_ ULONG  TraceType,
_In_ PCSTR  FileName,
_In_ ULONG  Line,
_In_ PVOID  Instance 
)

Definition at line 6796 of file rxce.c.

6801 {
6802  PCSTR InstanceType;
6803  ULONG ReferenceCount;
6804 
6805  if (!BooleanFlagOn(RdbssReferenceTracingValue, TraceType))
6806  {
6807  return;
6808  }
6809 
6810  switch (TraceType)
6811  {
6813  InstanceType = "SrvCall";
6814  ReferenceCount = ((PSRV_CALL)Instance)->NodeReferenceCount;
6815  break;
6816 
6818  InstanceType = "NetRoot";
6819  ReferenceCount = ((PNET_ROOT)Instance)->NodeReferenceCount;
6820  break;
6821 
6823  InstanceType = "VNetRoot";
6824  ReferenceCount = ((PV_NET_ROOT)Instance)->NodeReferenceCount;
6825  break;
6826 
6828  InstanceType = "NetFobx";
6829  ReferenceCount = ((PFOBX)Instance)->NodeReferenceCount;
6830  break;
6831 
6833  InstanceType = "NetFcb";
6834  ReferenceCount = ((PFCB)Instance)->NodeReferenceCount;
6835  break;
6836 
6838  InstanceType = "SrvOpen";
6839  ReferenceCount = ((PSRV_OPEN)Instance)->NodeReferenceCount;
6840  break;
6841 
6842  default:
6843  DPRINT1("Invalid node type!\n");
6844  return;
6845  }
6846 
6848  {
6849  UNIMPLEMENTED;
6850  }
6851 
6853  {
6854  DbgPrint("(%s:%d) %p (%s) referenced from %d\n", FileName, Line, Instance, InstanceType, ReferenceCount);
6855  }
6856 }
struct _SRV_CALL * PSRV_CALL
#define DbgPrint
Definition: loader.c:25
#define BooleanFlagOn(F, SF)
Definition: ext2fs.h:183
#define RDBSS_REF_TRACK_SRVCALL
Definition: fcb.h:349
#define RX_PRINT_REF_TRACKING
Definition: fcb.h:355
struct _FOBX * PFOBX
ULONG RdbssReferenceTracingValue
Definition: rxce.c:130
struct _V_NET_ROOT * PV_NET_ROOT
#define RDBSS_REF_TRACK_SRVOPEN
Definition: fcb.h:354
FCB * PFCB
Definition: cdstruc.h:1046
#define RDBSS_REF_TRACK_NETFOBX
Definition: fcb.h:352
Definition: ncftp.h:79
struct _NET_ROOT * PNET_ROOT
#define RDBSS_REF_TRACK_VNETROOT
Definition: fcb.h:351
#define RX_LOG_REF_TRACKING
Definition: fcb.h:356
#define RDBSS_REF_TRACK_NETROOT
Definition: fcb.h:350
IN PVOID Instance
Definition: pci.h:359
#define DPRINT1
Definition: precomp.h:8
struct _SRV_OPEN * PSRV_OPEN
#define RDBSS_REF_TRACK_NETFCB
Definition: fcb.h:353
unsigned int ULONG
Definition: retypes.h:1
#define UNIMPLEMENTED
Definition: debug.h:114
const char * PCSTR
Definition: typedefs.h:52

◆ RxRemoveNameNetFcb()

VOID RxRemoveNameNetFcb ( _Out_ PFCB  ThisFcb)

◆ RxSetFileSizeWithLock()

VOID RxSetFileSizeWithLock ( _Inout_ PFCB  Fcb,
_In_ PLONGLONG  FileSize 
)

Referenced by RxCommonWrite().

◆ RxUninitializeVNetRootParameters()

VOID RxUninitializeVNetRootParameters ( _In_ PUNICODE_STRING  UserName,
_In_ PUNICODE_STRING  UserDomainName,
_In_ PUNICODE_STRING  Password,
_Out_ PULONG  Flags 
)

Variable Documentation

◆ RdbssReferenceTracingValue

ULONG RdbssReferenceTracingValue

Definition at line 130 of file rxce.c.

Referenced by RxPrefixTableLookupName(), RxpTrackDereference(), and RxpTrackReference().