1 #ifndef _FCB_STRUCTS_DEFINED_ 2 #define _FCB_STRUCTS_DEFINED_ 30 #define NETROOT_FLAG_FINALIZATION_IN_PROGRESS 0x00040000 31 #define NETROOT_FLAG_NAME_ALREADY_REMOVED 0x00080000 88 #ifdef USE_FILESIZE_LOCK 161 #if (_WIN32_WINNT < 0x0600) 165 #if (_WIN32_WINNT < 0x0600) 172 #if (_WIN32_WINNT < 0x0600) 180 #ifdef USE_FILESIZE_LOCK 183 #if (_WIN32_WINNT < 0x0600) 196 #error tracker must be defined 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 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)) 256 #define SRVOPEN_FLAG_ENCLOSED_ALLOCATED 0x10000 257 #define SRVOPEN_FLAG_FOBX_USED 0x20000 258 #define SRVOPEN_FLAG_SHAREACCESS_UPDATED 0x40000 269 #if (_WIN32_WINNT >= 0x600) 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 301 #define FOBX_FLAG_DISABLE_COLLAPSING 0x20000000 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 374 #define REF_TRACING_ON(TraceMask) (TraceMask & RdbssReferenceTracingValue) 376 #define PRINT_REF_COUNT(TYPE, Count) \ 377 if (REF_TRACING_ON( RDBSS_REF_TRACK_ ## TYPE) && \ 378 (RdbssReferenceTracingValue & RX_PRINT_REF_TRACKING)) \ 380 DbgPrint("%ld\n", Count); \ 383 #define PRINT_REF_COUNT(TYPE, Count) \ 384 if (REF_TRACING_ON( RDBSS_REF_TRACK_ ## TYPE) && \ 385 (RdbssReferenceTracingValue & RX_PRINT_REF_TRACKING)) \ 387 DbgPrint("(%s:%d) %s: %ld\n", __FILE__, __LINE__, #TYPE, Count); \ 391 #define RxReferenceSrvCall(SrvCall) \ 392 RxpTrackReference(RDBSS_REF_TRACK_SRVCALL, __FILE__, __LINE__, SrvCall); \ 395 #define RxDereferenceSrvCall(SrvCall, LockHoldingState) \ 396 RxpTrackDereference(RDBSS_REF_TRACK_SRVCALL, __FILE__, __LINE__, SrvCall); \ 397 RxDereference(SrvCall, LockHoldingState) 399 #define RxReferenceNetRoot(NetRoot) \ 400 RxpTrackReference(RDBSS_REF_TRACK_NETROOT, __FILE__, __LINE__, NetRoot); \ 403 #define RxDereferenceNetRoot(NetRoot, LockHoldingState) \ 404 RxpTrackDereference(RDBSS_REF_TRACK_NETROOT, __FILE__, __LINE__, NetRoot); \ 405 RxDereference(NetRoot, LockHoldingState) 407 #define RxReferenceVNetRoot(VNetRoot) \ 408 RxpTrackReference(RDBSS_REF_TRACK_VNETROOT, __FILE__, __LINE__, VNetRoot); \ 409 RxReference(VNetRoot) 411 #define RxDereferenceVNetRoot(VNetRoot, LockHoldingState) \ 412 RxpTrackDereference(RDBSS_REF_TRACK_VNETROOT, __FILE__, __LINE__, VNetRoot); \ 413 RxDereference(VNetRoot, LockHoldingState) 415 #define RxReferenceNetFobx(Fobx) \ 416 RxpTrackReference(RDBSS_REF_TRACK_NETFOBX, __FILE__, __LINE__, Fobx); \ 419 #define RxDereferenceNetFobx(Fobx, LockHoldingState) \ 420 RxpTrackDereference(RDBSS_REF_TRACK_NETFOBX, __FILE__, __LINE__, Fobx); \ 421 RxDereference(Fobx, LockHoldingState) 423 #define RxReferenceSrvOpen(SrvOpen) \ 424 RxpTrackReference(RDBSS_REF_TRACK_SRVOPEN, __FILE__, __LINE__, SrvOpen); \ 427 #define RxDereferenceSrvOpen(SrvOpen, LockHoldingState) \ 428 RxpTrackDereference(RDBSS_REF_TRACK_SRVOPEN, __FILE__, __LINE__, SrvOpen); \ 429 RxDereference(SrvOpen, LockHoldingState) 431 #define RxReferenceNetFcb(Fcb) \ 432 (RxpTrackReference(RDBSS_REF_TRACK_NETFCB, __FILE__, __LINE__, Fcb), \ 433 RxpReferenceNetFcb(Fcb)) 435 #define RxDereferenceNetFcb(Fcb) \ 436 ((LONG)RxpTrackDereference(RDBSS_REF_TRACK_NETFCB, __FILE__, __LINE__, Fcb), \ 437 RxpDereferenceNetFcb(Fcb)) 439 #define RxDereferenceAndFinalizeNetFcb(Fcb, RxContext, RecursiveFinalize, ForceFinalize) \ 440 (RxpTrackDereference(RDBSS_REF_TRACK_NETFCB, __FILE__, __LINE__, Fcb), \ 441 RxpDereferenceAndFinalizeNetFcb(Fcb, RxContext, RecursiveFinalize, ForceFinalize)) 450 #define RxWaitForStableSrvCall(S, R) RxWaitForStableCondition(&(S)->Condition, &(S)->TransitionWaitList, (R), NULL) 451 #define RxTransitionSrvCall(S, C) RxUpdateCondition((C), &(S)->Condition, &(S)->TransitionWaitList) 453 #if (_WIN32_WINNT >= 0x0600) 473 #define RxWaitForStableNetRoot(N, R) RxWaitForStableCondition(&(N)->Condition, &(N)->TransitionWaitList, (R), NULL) 474 #define RxTransitionNetRoot(N, C) RxUpdateCondition((C), &(N)->Condition, &(N)->TransitionWaitList) 514 #define RxWaitForStableVNetRoot(V, R) RxWaitForStableCondition(&(V)->Condition, &(V)->TransitionWaitList, (R), NULL) 515 #define RxTransitionVNetRoot(V, C) RxUpdateCondition((C), &(V)->Condition, &(V)->TransitionWaitList) 527 #if (_WIN32_WINNT >= 0x0600) 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) 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) 553 #define ASSERT_CORRECT_FCB_STRUCTURE_DBG_ONLY(Fcb) \ 555 ASSERT(Fcb->NonPaged == Fcb->CopyOfNonPaged); \ 556 ASSERT(Fcb->NonPaged->FcbBackPointer == Fcb); \ 559 #define ASSERT_CORRECT_FCB_STRUCTURE_DBG_ONLY(Fcb) 562 #define ASSERT_CORRECT_FCB_STRUCTURE(Fcb) \ 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); \ 577 #define RxWaitForStableSrvOpen(S, R) RxWaitForStableCondition(&(S)->Condition, &(S)->TransitionWaitList, (R), NULL) 578 #define RxTransitionSrvOpen(S, C) RxUpdateCondition((C), &(S)->Condition, &(S)->TransitionWaitList) 631 #define GET_ALREADY_PREFIXED_NAME_FROM_CONTEXT(Rxcontext) GET_ALREADY_PREFIXED_NAME((Rxcontext)->pRelevantSrvOpen, (Rxcontext)->pFcb) 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) 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 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))
ERESOURCE BufferedLocksResource
PETHREAD CreateSectionThread
volatile ULONG FobxSerialNumber
LOWIO_PER_FCB_INFO LowIoPerFcbInfo
BOOLEAN RxFinalizeSrvCall(_Out_ PSRV_CALL ThisSrvCall, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
PKEVENT pBufferingStateChangeCompletedEvent
struct _FCB_LOCK FCB_LOCK
LARGE_INTEGER LastWriteTime
struct _SRV_CALL * PSRV_CALL
PFAST_IO_DISPATCH MRxFastIoDispatch
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)
NODE_BYTE_SIZE NodeByteSize
ULONG PagingIoResourceLine
LIST_ENTRY ScavengerFinalizationList
RX_BLOCK_CONDITION Condition
RX_BUFFERING_MANAGER BufferingManager
FCB_BUFFERED_LOCKS BufferedLocks
LIST_ENTRY SrvOpenKeyList
volatile LONG NumberOfCloseDelayedFiles
PURGE_SYNCHRONIZATION_CONTEXT PurgeSyncronizationContext
MRX_NORMAL_NODE_HEADER spacer
#define NodeTypeIsFcb(FCB)
VOID NTAPI RxFinishFcbInitialization(_In_ OUT PMRX_FCB Fcb, _In_ RX_FILE_TYPE FileType, _In_opt_ PFCB_INIT_PACKET InitPacket)
ERESOURCE PagingIoResource
LIST_ENTRY ScavengerFinalizationList
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)
ULONG NumberOfVirtualNetRoots
#define RDBSS_NTC_SRVOPEN
ULONG SerialNumberForEnum
struct _FCB_LOCK * PFCB_LOCK
LIST_ENTRY TransitionWaitList
SECTION_OBJECT_POINTERS SectionObjectPointers
PLARGE_INTEGER pCreationTime
volatile ULONG PendingLockOps
ULONG EaModificationCount
RX_BLOCK_CONDITION Condition
BOOLEAN RxFinalizeSrvOpen(_Out_ PSRV_OPEN ThisSrvOpen, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
BOOLEAN UpperFinalizationDone
BOOLEAN UpperFinalizationDone
__GNU_EXTENSION typedef __int64 * PLONGLONG
LARGE_INTEGER BytesOffset
ULONG SerialNumberForEnum
VOID RxSetFileSizeWithLock(_Inout_ PFCB Fcb, _In_ PLONGLONG FileSize)
ULONG PrefixOffsetInBytes
THROTTLING_STATE LockThrottlingState
LIST_ENTRY ScavengerFinalizationList
LARGE_INTEGER LastAccessTime
PLARGE_INTEGER pLastAccessTime
LIST_ENTRY VirtualNetRoots
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
struct _FCB_INIT_PACKET * PFCB_INIT_PACKET
_In_ WDFDEVICE _In_ WDF_SPECIAL_FILE_TYPE FileType
LIST_ENTRY WriteSerializationQueue
struct _FCB_BUFFERED_LOCKS * PFCB_BUFFERED_LOCKS
MRX_NORMAL_NODE_HEADER spacer
RXVBO PredictedWriteOffset
LIST_ENTRY TransitionWaitList
LIST_ENTRY ReadSerializationQueue
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)
struct _FOBX::@1916::@1920 DiskFile
LIST_ENTRY ScavengerFinalizationList
RX_FCB_TABLE_ENTRY FcbTableEntry
PRDBSS_DEVICE_OBJECT RxDeviceObject
VOID RxpTrackReference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
RX_BLOCK_CONDITION Condition
PV_NET_ROOT DefaultVNetRoot
BOOLEAN RxFinalizeNetFobx(_Out_ PFOBX ThisFobx, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
struct _NON_PAGED_FCB * PNON_PAGED_FCB
BOOLEAN fOpenCountDecremented
MRX_PIPE_HANDLE_INFORMATION
VOID RxGetFileSizeWithLock(_In_ PFCB Fcb, _Out_ PLONGLONG FileSize)
struct _V_NET_ROOT * PV_NET_ROOT
LARGE_INTEGER CollectDataTime
BOOLEAN ConnectionFinalizationDone
_Must_inspect_result_ _In_ ULONG Flags
LARGE_INTEGER LastChangeTime
SHARE_ACCESS ShareAccessPerSrvOpens
struct _FCB_INIT_PACKET FCB_INIT_PACKET
VOID RxRemoveNameNetFcb(_Out_ PFCB ThisFcb)
PCHAR PagingIoResourceFile
PLARGE_INTEGER pValidDataLength
LONG RxpReferenceNetFcb(_In_ PFCB Fcb)
LARGE_INTEGER LastLockOffset
LIST_ENTRY NetRootListEntry
LARGE_INTEGER LastLockRange
FSRTL_ADVANCED_FCB_HEADER spacer
RX_PREFIX_ENTRY PrefixEntry
PURGE_SYNCHRONIZATION_CONTEXT PurgeSyncronizationContext
THROTTLING_STATE ThrottlingState
struct _NON_PAGED_FCB NON_PAGED_FCB
UNICODE_STRING PrivateAlreadyPrefixedName
LIST_ENTRY ScavengerFinalizationList
enum _RX_FILE_TYPE RX_FILE_TYPE
PUNICODE_STRING pAlreadyPrefixedName
enum _RX_FCBTRACKER_CASES RX_FCBTRACKER_CASES
volatile LONG AdditionalReferenceForDeleteFsctlTaken
ULONG SerialNumberForEnum
BOOLEAN UpperFinalizationDone
FAST_MUTEX AdvancedFcbHeaderMutex
LIST_ENTRY ClosePendingList
LIST_ENTRY ScavengerFinalizationList
PSRV_CALL RxCreateSrvCall(_In_ PRX_CONTEXT RxContext, _In_ PUNICODE_STRING Name, _In_opt_ PUNICODE_STRING InnerNamePrefix, _In_ PRX_CONNECTION_ID RxConnectionId)
struct _SRV_OPEN SRV_OPEN
UNICODE_STRING NamePrefix
PMINIRDR_DISPATCH MRxDispatch
PSRV_OPEN InternalSrvOpen
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
VOID RxUninitializeVNetRootParameters(_In_ PUNICODE_STRING UserName, _In_ PUNICODE_STRING UserDomainName, _In_ PUNICODE_STRING Password, _Out_ PULONG Flags)
LIST_ENTRY TransitionWaitList
MRX_PIPE_HANDLE_INFORMATION PipeHandleInformation
RX_BLOCK_CONDITION Condition
PSRV_OPEN RxCreateSrvOpen(_In_ PV_NET_ROOT VNetRoot, _In_ OUT PFCB Fcb)
struct _NET_ROOT * PNET_ROOT
volatile LONG BufferingToken
struct _SRV_CALL SRV_CALL
PRDBSS_DEVICE_OBJECT RxDeviceObject
RX_BLOCK_CONDITION Condition
RX_PREFIX_ENTRY PrefixEntry
struct _FCB_BUFFERED_LOCKS FCB_BUFFERED_LOCKS
struct _FCB::@706::@709 Fcb
RXVBO PredictedReadOffset
PLARGE_INTEGER pLastChangeTime
PKEVENT OutstandingAsyncEvent
LONG RxpDereferenceNetFcb(_In_ PFCB Fcb)
union _FCB::@706 Specific
MRX_NORMAL_NODE_HEADER spacer
BOOLEAN RxpTrackDereference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
BOOLEAN ContainsWildCards
_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)
ULONG RdbssReferenceTracingValue
PLARGE_INTEGER pAllocationSize
MRX_NORMAL_NODE_HEADER spacer
RX_PREFIX_ENTRY PrefixEntry
struct _SRV_OPEN * PSRV_OPEN
NODE_TYPE_CODE NodeTypeCode
LIST_ENTRY TransitionWaitList
MRX_NORMAL_NODE_HEADER spacer
enum _RX_BLOCK_CONDITION RX_BLOCK_CONDITION
BOOLEAN UpperFinalizationDone
PMRX_FOBX NTAPI RxCreateNetFobx(_Out_ PRX_CONTEXT RxContext, _In_ PMRX_SRV_OPEN MrxSrvOpen)
PLARGE_INTEGER pLastWriteTime
BOOLEAN RxpDereferenceAndFinalizeNetFcb(_Out_ PFCB ThisFcb, _In_ PRX_CONTEXT RxContext, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
struct _V_NET_ROOT V_NET_ROOT
FORCEINLINE PUNICODE_STRING GET_ALREADY_PREFIXED_NAME(PMRX_SRV_OPEN SrvOpen, PMRX_FCB Fcb)
struct _NET_ROOT NET_ROOT
struct _FOBX::@1916::@1919 NamedPipe
union _FOBX::@1916 Specific
BOOLEAN RxFinalizeVNetRoot(_Out_ PV_NET_ROOT ThisVNetRoot, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
LIST_ENTRY TransitionWaitList
PRX_FSD_DISPATCH_VECTOR PrivateDispatchVector
BOOLEAN UpperFinalizationDone
BOOLEAN UpperFinalizationDone
LONG NumberOfBufferingStateChangeWaiters
ULONG OutstandingAsyncWrites