ReactOS 0.4.15-dev-7994-gb388cb6
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
8
9typedef 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
33typedef struct _NET_ROOT
34{
35 union
36 {
38 struct
39 {
42 };
43 };
56
57typedef struct _V_NET_ROOT
58{
59 union
60 {
62 struct
63 {
66 };
67 };
80
81typedef 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
112typedef struct _FCB_LOCK
113{
114 struct _FCB_LOCK * Next;
120
122{
123 struct _FCB_LOCK * List;
127
128typedef 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)
186#endif
189#if DBG
190 PNON_PAGED_FCB CopyOfNonPaged;
191#endif
192#ifdef RDBSS_TRACKER
195#else
196#error tracker must be defined
197#endif
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
243typedef 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
260typedef 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 };
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
304typedef struct _FOBX
305{
306 union
307 {
309 struct
310 {
313 };
314 };
323 union
324 {
325 struct
326 {
327 union
328 {
331 };
338 struct {
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
360VOID
362 _In_ ULONG TraceType,
366
369 _In_ ULONG TraceType,
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
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)
456 _Out_ PSRV_CALL ThisSrvCall,
457 _In_ BOOLEAN ForceFinalize);
458#else
461 _Out_ PSRV_CALL ThisSrvCall,
462 _In_ BOOLEAN RecursiveFinalize,
463 _In_ BOOLEAN ForceFinalize);
464#endif
465
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
478 _Out_ PNET_ROOT ThisNetRoot,
479 _In_ BOOLEAN RecursiveFinalize,
480 _In_ BOOLEAN ForceFinalize);
481
484 _In_ PRX_CONTEXT RxContext,
487 _Out_ PUNICODE_STRING *UserNamePtr,
488 _Out_ PUNICODE_STRING *UserDomainNamePtr,
489 _Out_ PUNICODE_STRING *PasswordPtr,
491
492VOID
494 _In_ PUNICODE_STRING UserName,
495 _In_ PUNICODE_STRING UserDomainName,
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
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
517VOID
521
522VOID
524 _In_ PFCB Fcb,
526
527#if (_WIN32_WINNT >= 0x0600)
528PFCB
530 _In_ PRX_CONTEXT RxContext,
531 _In_ PIRP Irp,
532 _In_ PV_NET_ROOT VNetRoot,
534#else
535PFCB
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
570VOID
571NTAPI
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
580VOID
582 _Out_ PFCB ThisFcb);
583
584LONG
586 _In_ PFCB Fcb);
587
588LONG
590 _In_ PFCB Fcb);
591
594 _Out_ PFCB ThisFcb,
595 _In_ PRX_CONTEXT RxContext,
596 _In_ BOOLEAN RecursiveFinalize,
597 _In_ BOOLEAN ForceFinalize);
598
601 _In_ PV_NET_ROOT VNetRoot,
602 _In_ OUT PFCB Fcb);
603
606 _Out_ PSRV_OPEN ThisSrvOpen,
607 _In_ BOOLEAN RecursiveFinalize,
608 _In_ BOOLEAN ForceFinalize);
609
613 PMRX_SRV_OPEN SrvOpen,
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
634NTAPI
636 _Out_ PRX_CONTEXT RxContext,
637 _In_ PMRX_SRV_OPEN MrxSrvOpen);
638
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
PCWSTR FilePath
unsigned char BOOLEAN
LONG NTSTATUS
Definition: precomp.h:26
_In_ PFCB Fcb
Definition: cdprocs.h:159
_In_ PIRP Irp
Definition: csq.h:116
#define NULL
Definition: types.h:112
ULONG SessionId
Definition: dllmain.c:28
USHORT NODE_TYPE_CODE
Definition: nodetype.h:22
CSHORT NODE_BYTE_SIZE
Definition: nodetype.h:37
#define NodeType(P)
Definition: nodetype.h:51
ERESOURCE * PERESOURCE
Definition: env_spec_w32.h:595
ULONG ERESOURCE
Definition: env_spec_w32.h:594
struct _SRV_OPEN SRV_OPEN
VOID RxpTrackReference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6796
VOID RxGetFileSizeWithLock(_In_ PFCB Fcb, _Out_ PLONGLONG FileSize)
VOID RxSetFileSizeWithLock(_Inout_ PFCB Fcb, _In_ PLONGLONG FileSize)
BOOLEAN RxFinalizeNetFobx(_Out_ PFOBX ThisFobx, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
Definition: rxce.c:2964
BOOLEAN RxFinalizeVNetRoot(_Out_ PV_NET_ROOT ThisVNetRoot, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
struct _NET_ROOT NET_ROOT
struct _FOBX FOBX
struct _NON_PAGED_FCB NON_PAGED_FCB
struct _SRV_CALL * PSRV_CALL
struct _NON_PAGED_FCB * PNON_PAGED_FCB
PSRV_CALL RxCreateSrvCall(_In_ PRX_CONTEXT RxContext, _In_ PUNICODE_STRING Name, _In_opt_ PUNICODE_STRING InnerNamePrefix, _In_ PRX_CONNECTION_ID RxConnectionId)
struct _FCB_INIT_PACKET FCB_INIT_PACKET
FORCEINLINE PUNICODE_STRING GET_ALREADY_PREFIXED_NAME(PMRX_SRV_OPEN SrvOpen, PMRX_FCB Fcb)
Definition: fcb.h:612
struct _FCB_LOCK FCB_LOCK
struct _FCB_BUFFERED_LOCKS * PFCB_BUFFERED_LOCKS
struct _FOBX * PFOBX
struct _V_NET_ROOT V_NET_ROOT
_RX_FCBTRACKER_CASES
Definition: fcb.h:104
@ RX_FCBTRACKER_CASE_NULLCONTEXT
Definition: fcb.h:106
@ RX_FCBTRACKER_CASE_NORMAL
Definition: fcb.h:105
@ RX_FCBTRACKER_CASE_CBS_WAIT_CONTEXT
Definition: fcb.h:108
@ RX_FCBTRACKER_CASE_CBS_CONTEXT
Definition: fcb.h:107
@ RX_FCBTRACKER_CASE_MAXIMUM
Definition: fcb.h:109
struct _V_NET_ROOT * PV_NET_ROOT
BOOLEAN RxFinalizeSrvCall(_Out_ PSRV_CALL ThisSrvCall, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
struct _FCB * PFCB
VOID RxUninitializeVNetRootParameters(_In_ PUNICODE_STRING UserName, _In_ PUNICODE_STRING UserDomainName, _In_ PUNICODE_STRING Password, _Out_ PULONG Flags)
BOOLEAN RxFinalizeNetRoot(_Out_ PNET_ROOT ThisNetRoot, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
BOOLEAN RxpTrackDereference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
Definition: rxce.c:6729
PSRV_OPEN RxCreateSrvOpen(_In_ PV_NET_ROOT VNetRoot, _In_ OUT PFCB Fcb)
PNET_ROOT RxCreateNetRoot(_In_ PSRV_CALL SrvCall, _In_ PUNICODE_STRING Name, _In_ ULONG NetRootFlags, _In_opt_ PRX_CONNECTION_ID RxConnectionId)
struct _FCB_BUFFERED_LOCKS FCB_BUFFERED_LOCKS
BOOLEAN RxpDereferenceAndFinalizeNetFcb(_Out_ PFCB ThisFcb, _In_ PRX_CONTEXT RxContext, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
PMRX_FOBX NTAPI RxCreateNetFobx(_Out_ PRX_CONTEXT RxContext, _In_ PMRX_SRV_OPEN MrxSrvOpen)
struct _SRV_OPEN * PSRV_OPEN
ULONG RdbssReferenceTracingValue
Definition: rxce.c:130
struct _SRV_CALL SRV_CALL
struct _FCB_LOCK * PFCB_LOCK
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)
PFCB RxCreateNetFcb(_In_ PRX_CONTEXT RxContext, _In_ PV_NET_ROOT VNetRoot, _In_ PUNICODE_STRING Name)
struct _NET_ROOT * PNET_ROOT
enum _RX_FCBTRACKER_CASES RX_FCBTRACKER_CASES
LONG RxpDereferenceNetFcb(_In_ PFCB Fcb)
VOID RxRemoveNameNetFcb(_Out_ PFCB ThisFcb)
struct _FCB FCB
BOOLEAN RxFinalizeSrvOpen(_Out_ PSRV_OPEN ThisSrvOpen, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
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)
struct _FCB_INIT_PACKET * PFCB_INIT_PACKET
Definition: fcb.h:7
VOID NTAPI RxFinishFcbInitialization(_In_ OUT PMRX_FCB Fcb, _In_ RX_FILE_TYPE FileType, _In_opt_ PFCB_INIT_PACKET InitPacket)
LONG RxpReferenceNetFcb(_In_ PFCB Fcb)
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
Definition: fsrtlfuncs.h:108
#define ASSERT(a)
Definition: mode.c:44
enum _RX_BLOCK_CONDITION RX_BLOCK_CONDITION
LONGLONG RXVBO
Definition: mrx.h:252
#define _Inout_
Definition: ms_sal.h:378
#define _Out_
Definition: ms_sal.h:345
#define _In_
Definition: ms_sal.h:308
#define _In_opt_
Definition: ms_sal.h:309
__GNU_EXTENSION typedef __int64 * PLONGLONG
Definition: ntbasedef.h:382
_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
long LONG
Definition: pedump.c:60
enum _RX_FILE_TYPE RX_FILE_TYPE
#define RDBSS_NTC_SRVOPEN
Definition: nodetype.h:52
#define NodeTypeIsFcb(FCB)
Definition: nodetype.h:68
Definition: ncftp.h:79
struct _FCB_LOCK * List
Definition: fcb.h:123
volatile ULONG PendingLockOps
Definition: fcb.h:124
PERESOURCE Resource
Definition: fcb.h:125
PLARGE_INTEGER pFileSize
Definition: fcb.h:252
PLARGE_INTEGER pAllocationSize
Definition: fcb.h:251
PLARGE_INTEGER pLastWriteTime
Definition: fcb.h:249
PLARGE_INTEGER pLastChangeTime
Definition: fcb.h:250
PLARGE_INTEGER pValidDataLength
Definition: fcb.h:253
PULONG pNumLinks
Definition: fcb.h:246
PULONG pAttributes
Definition: fcb.h:245
PLARGE_INTEGER pLastAccessTime
Definition: fcb.h:248
PLARGE_INTEGER pCreationTime
Definition: fcb.h:247
Definition: fcb.h:113
LARGE_INTEGER BytesOffset
Definition: fcb.h:116
BOOLEAN ExclusiveLock
Definition: fcb.h:118
LARGE_INTEGER Length
Definition: fcb.h:115
struct _FCB_LOCK * Next
Definition: fcb.h:114
ULONG Key
Definition: fcb.h:117
Definition: cdstruc.h:902
LOWIO_PER_FCB_INFO LowIoPerFcbInfo
Definition: fcb.h:178
LONGLONG CreationTime
Definition: cdstruc.h:1030
RX_BLOCK_CONDITION Condition
Definition: fcb.h:147
PKEVENT pBufferingStateChangeCompletedEvent
Definition: fcb.h:142
ULONG NumberOfLinks
Definition: fcb.h:156
LONG NumberOfBufferingStateChangeWaiters
Definition: fcb.h:143
union _FCB::@720 Specific
SHARE_ACCESS ShareAccess
Definition: cdstruc.h:1009
PSRV_OPEN InternalSrvOpen
Definition: fcb.h:152
ULONG EaModificationCount
Definition: fatstruc.h:1107
PRX_FSD_DISPATCH_VECTOR PrivateDispatchVector
Definition: fcb.h:148
PVOID LazyWriteThread
Definition: fatstruc.h:1089
struct _FCB::@720::@723 Fcb
ULONG ulFileSizeVersion
Definition: fcb.h:164
PMINIRDR_DISPATCH MRxDispatch
Definition: fcb.h:150
PETHREAD CreateSectionThread
Definition: fcb.h:162
BOOLEAN UpperFinalizationDone
Definition: fcb.h:146
PFAST_IO_DISPATCH MRxFastIoDispatch
Definition: fcb.h:151
LARGE_INTEGER LastWriteTime
Definition: fatstruc.h:922
PV_NET_ROOT VNetRoot
Definition: fcb.h:139
FILE_LOCK FileLock
Definition: fatstruc.h:1071
PFOBX InternalFobx
Definition: fcb.h:153
LOWIO_PER_FCB_INFO
Definition: fcb.h:177
MRX_FCB
Definition: fcb.h:132
LARGE_INTEGER LastAccessTime
Definition: fatstruc.h:921
FCB_BUFFERED_LOCKS BufferedLocks
Definition: fcb.h:188
PRDBSS_DEVICE_OBJECT RxDeviceObject
Definition: fcb.h:149
LARGE_INTEGER LastChangeTime
Definition: fcb.h:160
RX_FCB_TABLE_ENTRY FcbTableEntry
Definition: fcb.h:144
PNON_PAGED_FCB NonPaged
Definition: fatstruc.h:811
PCHAR PagingIoResourceFile
Definition: fcb.h:198
FSRTL_ADVANCED_FCB_HEADER spacer
Definition: fcb.h:135
SHARE_ACCESS ShareAccessPerSrvOpens
Definition: fcb.h:155
PNET_ROOT NetRoot
Definition: fcb.h:136
UNICODE_STRING PrivateAlreadyPrefixedName
Definition: fcb.h:145
ULONG PagingIoResourceLine
Definition: fcb.h:199
LIST_ENTRY ScavengerFinalizationList
Definition: fcb.h:141
Definition: fcb.h:305
volatile ULONG FobxSerialNumber
Definition: fcb.h:315
struct _FOBX::@1959::@1963 DiskFile
MRX_PIPE_HANDLE_INFORMATION PipeHandleInformation
Definition: fcb.h:330
BOOLEAN UpperFinalizationDone
Definition: fcb.h:320
ULONG CollectDataSize
Definition: fcb.h:333
MRX_FOBX
Definition: fcb.h:308
THROTTLING_STATE LockThrottlingState
Definition: fcb.h:341
LIST_ENTRY FobxQLinks
Definition: fcb.h:316
MRX_PIPE_HANDLE_INFORMATION
Definition: fcb.h:329
BOOLEAN ContainsWildCards
Definition: fcb.h:321
LARGE_INTEGER LastLockRange
Definition: fcb.h:343
union _FOBX::@1959 Specific
THROTTLING_STATE ThrottlingState
Definition: fcb.h:334
LIST_ENTRY ClosePendingList
Definition: fcb.h:318
MRX_NORMAL_NODE_HEADER spacer
Definition: fcb.h:311
LIST_ENTRY ReadSerializationQueue
Definition: fcb.h:335
LIST_ENTRY WriteSerializationQueue
Definition: fcb.h:336
BOOLEAN fOpenCountDecremented
Definition: fcb.h:322
RXVBO PredictedWriteOffset
Definition: fcb.h:340
LARGE_INTEGER LastLockOffset
Definition: fcb.h:342
PSRV_OPEN SrvOpen
Definition: fcb.h:312
RXVBO PredictedReadOffset
Definition: fcb.h:339
LARGE_INTEGER CloseTime
Definition: fcb.h:319
struct _FOBX::@1959::@1962 NamedPipe
LIST_ENTRY ScavengerFinalizationList
Definition: fcb.h:317
LARGE_INTEGER CollectDataTime
Definition: fcb.h:332
PRDBSS_DEVICE_OBJECT RxDeviceObject
Definition: fcb.h:346
Definition: typedefs.h:120
PMRX_FCB pFcb
Definition: mrxfcb.h:161
PUNICODE_STRING pAlreadyPrefixedName
Definition: mrxfcb.h:169
Definition: fcb.h:34
PV_NET_ROOT DefaultVNetRoot
Definition: fcb.h:49
MRX_NORMAL_NODE_HEADER spacer
Definition: fcb.h:40
LIST_ENTRY ScavengerFinalizationList
Definition: fcb.h:47
RX_FCB_TABLE FcbTable
Definition: fcb.h:54
BOOLEAN UpperFinalizationDone
Definition: fcb.h:44
PSRV_CALL SrvCall
Definition: fcb.h:41
MRX_NET_ROOT
Definition: fcb.h:37
PURGE_SYNCHRONIZATION_CONTEXT PurgeSyncronizationContext
Definition: fcb.h:48
ULONG NumberOfVirtualNetRoots
Definition: fcb.h:51
RX_BLOCK_CONDITION Condition
Definition: fcb.h:45
ULONG SerialNumberForEnum
Definition: fcb.h:52
LIST_ENTRY TransitionWaitList
Definition: fcb.h:46
RX_PREFIX_ENTRY PrefixEntry
Definition: fcb.h:53
LIST_ENTRY VirtualNetRoots
Definition: fcb.h:50
KEVENT TheActualEvent
Definition: fcb.h:94
ERESOURCE BufferedLocksResource
Definition: fcb.h:97
PKEVENT OutstandingAsyncEvent
Definition: fatstruc.h:743
ULONG OutstandingAsyncWrites
Definition: fatstruc.h:737
ERESOURCE HeaderResource
Definition: fcb.h:86
NODE_BYTE_SIZE NodeByteSize
Definition: fcb.h:84
ERESOURCE PagingIoResource
Definition: fcb.h:87
NODE_TYPE_CODE NodeTypeCode
Definition: fcb.h:83
PVOID MiniRdrContext[2]
Definition: fcb.h:95
FAST_MUTEX AdvancedFcbHeaderMutex
Definition: fatstruc.h:750
LIST_ENTRY TransitionWaitList
Definition: fcb.h:91
SECTION_OBJECT_POINTERS SectionObjectPointers
Definition: fatstruc.h:729
Definition: fcbtable.h:4
Definition: prefix.h:45
Definition: fcb.h:10
MRX_SRV_CALL
Definition: fcb.h:13
LIST_ENTRY TransitionWaitList
Definition: fcb.h:24
RX_BUFFERING_MANAGER BufferingManager
Definition: fcb.h:27
LIST_ENTRY ScavengerFinalizationList
Definition: fcb.h:25
BOOLEAN UpperFinalizationDone
Definition: fcb.h:19
RX_PREFIX_ENTRY PrefixEntry
Definition: fcb.h:20
PURGE_SYNCHRONIZATION_CONTEXT PurgeSyncronizationContext
Definition: fcb.h:26
RX_BLOCK_CONDITION Condition
Definition: fcb.h:21
ULONG SerialNumberForEnum
Definition: fcb.h:22
volatile LONG NumberOfCloseDelayedFiles
Definition: fcb.h:23
MRX_NORMAL_NODE_HEADER spacer
Definition: fcb.h:16
Definition: fcb.h:261
LIST_ENTRY ScavengerFinalizationList
Definition: fcb.h:277
LIST_ENTRY SrvOpenKeyList
Definition: fcb.h:283
NTSTATUS OpenStatus
Definition: fcb.h:286
LIST_ENTRY FobxList
Definition: fcb.h:279
PFCB Fcb
Definition: fcb.h:268
MRX_SRV_OPEN
Definition: fcb.h:264
RX_BLOCK_CONDITION Condition
Definition: fcb.h:275
volatile LONG BufferingToken
Definition: fcb.h:276
BOOLEAN UpperFinalizationDone
Definition: fcb.h:274
PFOBX InternalFobx
Definition: fcb.h:280
MRX_NORMAL_NODE_HEADER spacer
Definition: fcb.h:267
LIST_ENTRY TransitionWaitList
Definition: fcb.h:278
ULONG SequenceNumber
Definition: fcb.h:284
PNET_ROOT NetRoot
Definition: fcb.h:65
ULONG SerialNumberForEnum
Definition: fcb.h:76
LIST_ENTRY NetRootListEntry
Definition: fcb.h:75
MRX_V_NET_ROOT
Definition: fcb.h:61
BOOLEAN UpperFinalizationDone
Definition: fcb.h:68
BOOLEAN ConnectionFinalizationDone
Definition: fcb.h:69
ULONG PrefixOffsetInBytes
Definition: fcb.h:74
LIST_ENTRY ScavengerFinalizationList
Definition: fcb.h:78
UNICODE_STRING NamePrefix
Definition: fcb.h:73
RX_PREFIX_ENTRY PrefixEntry
Definition: fcb.h:72
volatile LONG AdditionalReferenceForDeleteFsctlTaken
Definition: fcb.h:71
RX_BLOCK_CONDITION Condition
Definition: fcb.h:70
LIST_ENTRY TransitionWaitList
Definition: fcb.h:77
MRX_NORMAL_NODE_HEADER spacer
Definition: fcb.h:64
@ Password
Definition: telnetd.h:65
uint32_t * PULONG
Definition: typedefs.h:59
#define NTAPI
Definition: typedefs.h:36
const char * PCSTR
Definition: typedefs.h:52
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
char * PCHAR
Definition: typedefs.h:51
_In_ WDFDEVICE _In_ WDF_SPECIAL_FILE_TYPE FileType
Definition: wdfdevice.h:2741
#define FORCEINLINE
Definition: wdftypes.h:67
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_WMI_INSTANCE_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_opt_ WDFWMIINSTANCE * Instance
Definition: wdfwmi.h:481
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
* PFAST_MUTEX
Definition: extypes.h:17
FAST_MUTEX
Definition: extypes.h:17