4 typedef struct _MRX_NORMAL_NODE_HEADER
6 NODE_TYPE_CODE NodeTypeCode
;
7 NODE_BYTE_SIZE NodeByteSize
;
8 volatile ULONG NodeReferenceCount
;
9 } MRX_NORMAL_NODE_HEADER
;
11 #define SRVCALL_FLAG_CASE_INSENSITIVE_NETROOTS 0x4
12 #define SRVCALL_FLAG_CASE_INSENSITIVE_FILENAMES 0x8
13 #define SRVCALL_FLAG_DFS_AWARE_SERVER 0x10
14 #define SRVCALL_FLAG_FORCE_FINALIZED 0x20
16 typedef struct _MRX_SRV_CALL_
18 MRX_NORMAL_NODE_HEADER
;
21 PRDBSS_DEVICE_OBJECT RxDeviceObject
;
22 PUNICODE_STRING pSrvCallName
;
23 PUNICODE_STRING pPrincipalName
;
24 PUNICODE_STRING pDomainName
;
26 LONG MaximumNumberOfCloseDelayedFiles
;
28 } MRX_SRV_CALL
, *PMRX_SRV_CALL
;
30 #define NET_ROOT_DISK ((UCHAR)0)
31 #define NET_ROOT_PIPE ((UCHAR)1)
32 #define NET_ROOT_PRINT ((UCHAR)3)
33 #define NET_ROOT_WILD ((UCHAR)4)
34 #define NET_ROOT_MAILSLOT ((UCHAR)5)
36 typedef UCHAR NET_ROOT_TYPE
, *PNET_ROOT_TYPE
;
38 #define MRX_NET_ROOT_STATE_GOOD ((UCHAR)0)
40 typedef UCHAR MRX_NET_ROOT_STATE
, *PMRX_NET_ROOT_STATE
;
41 typedef UCHAR MRX_PURGE_RELATIONSHIP
, *PMRX_PURGE_RELATIONSHIP
;
42 typedef UCHAR MRX_PURGE_SYNCLOCATION
, *PMRX_PURGE_SYNCLOCATION
;
44 #define NETROOT_FLAG_SUPPORTS_SYMBOLIC_LINKS 0x1
45 #define NETROOT_FLAG_DFS_AWARE_NETROOT 0x2
47 typedef struct _NETROOT_THROTTLING_PARAMETERS
51 } NETROOT_THROTTLING_PARAMETERS
, *PNETROOT_THROTTLING_PARAMETERS
;
53 typedef struct _MRX_NET_ROOT_
55 MRX_NORMAL_NODE_HEADER
;
56 PMRX_SRV_CALL pSrvCall
;
60 volatile ULONG NumberOfFcbs
;
61 volatile ULONG NumberOfSrvOpens
;
62 MRX_NET_ROOT_STATE MRxNetRootState
;
64 MRX_PURGE_RELATIONSHIP PurgeRelationship
;
65 MRX_PURGE_SYNCLOCATION PurgeSyncLocation
;
66 DEVICE_TYPE DeviceType
;
67 PUNICODE_STRING pNetRootName
;
68 UNICODE_STRING InnerNamePrefix
;
69 ULONG ParameterValidationStamp
;
74 ULONG DataCollectionSize
;
75 NETROOT_THROTTLING_PARAMETERS PipeReadThrottlingParameters
;
76 } NamedPipeParameters
;
80 ULONG ReadAheadGranularity
;
81 NETROOT_THROTTLING_PARAMETERS LockThrottlingParameters
;
82 ULONG RenameInfoOverallocationSize
;
86 } MRX_NET_ROOT
, *PMRX_NET_ROOT
;
88 #define VNETROOT_FLAG_CSCAGENT_INSTANCE 0x00000001
90 typedef struct _MRX_V_NET_ROOT_
92 MRX_NORMAL_NODE_HEADER
;
93 PMRX_NET_ROOT pNetRoot
;
98 volatile ULONG NumberOfFobxs
;
100 PUNICODE_STRING pUserDomainName
;
101 PUNICODE_STRING pUserName
;
102 PUNICODE_STRING pPassword
;
104 NTSTATUS ConstructionStatus
;
105 BOOLEAN IsExplicitConnection
;
106 } MRX_V_NET_ROOT
, *PMRX_V_NET_ROOT
;
108 typedef struct _MRX_FCB_
110 FSRTL_ADVANCED_FCB_HEADER Header
;
111 PMRX_NET_ROOT pNetRoot
;
114 volatile ULONG NodeReferenceCount
;
116 volatile CLONG UncleanCount
;
117 CLONG UncachedUncleanCount
;
118 volatile CLONG OpenCount
;
119 volatile ULONG OutstandingLockOperationsCount
;
120 ULONGLONG ActualAllocationLength
;
122 BOOLEAN IsFileWritten
;
123 BOOLEAN fShouldBeOrphaned
;
125 UCHAR CachedNetRootType
;
126 LIST_ENTRY SrvOpenList
;
127 ULONG SrvOpenListVersion
;
128 } MRX_FCB
, *PMRX_FCB
;
130 #define SRVOPEN_FLAG_DONTUSE_READ_CACHING 0x1
131 #define SRVOPEN_FLAG_DONTUSE_WRITE_CACHING 0x2
132 #define SRVOPEN_FLAG_CLOSED 0x4
133 #define SRVOPEN_FLAG_CLOSE_DELAYED 0x8
134 #define SRVOPEN_FLAG_FILE_RENAMED 0x10
135 #define SRVOPEN_FLAG_FILE_DELETED 0x20
136 #define SRVOPEN_FLAG_BUFFERING_STATE_CHANGE_PENDING 0x40
137 #define SRVOPEN_FLAG_COLLAPSING_DISABLED 0x80
138 #define SRVOPEN_FLAG_BUFFERING_STATE_CHANGE_REQUESTS_PURGED 0x100
139 #define SRVOPEN_FLAG_NO_BUFFERING_STATE_CHANGE 0x200
140 #define SRVOPEN_FLAG_ORPHANED 0x400
144 (NTAPI
*PMRX_SHADOW_CALLDOWN
) (
145 IN OUT PRX_CONTEXT RxContext
150 PFILE_OBJECT UnderlyingFileObject
;
151 PDEVICE_OBJECT UnderlyingDeviceObject
;
153 PFAST_IO_READ FastIoRead
;
154 PFAST_IO_WRITE FastIoWrite
;
155 PMRX_SHADOW_CALLDOWN DispatchRoutine
;
156 } MRXSHADOW_SRV_OPEN
, *PMRXSHADOW_SRV_OPEN
;
158 typedef struct _MRX_SRV_OPEN_
160 MRX_NORMAL_NODE_HEADER
;
162 PMRX_V_NET_ROOT pVNetRoot
;
165 #if (_WIN32_WINNT >= 0x0600)
166 PMRXSHADOW_SRV_OPEN ShadowContext
;
169 PUNICODE_STRING pAlreadyPrefixedName
;
170 CLONG UncleanFobxCount
;
173 ACCESS_MASK DesiredAccess
;
176 ULONG BufferingFlags
;
177 ULONG ulFileSizeVersion
;
178 LIST_ENTRY SrvOpenQLinks
;
179 } MRX_SRV_OPEN
, *PMRX_SRV_OPEN
;
181 #define FOBX_FLAG_DFS_OPEN 0x0001
182 #define FOBX_FLAG_BACKUP_INTENT 0x0004
184 typedef struct _MRX_PIPE_HANDLE_INFORMATION
188 ULONG CompletionMode
;
189 } MRX_PIPE_HANDLE_INFORMATION
, *PMRX_PIPE_HANDLE_INFORMATION
;
191 typedef struct _MRX_FOBX_
193 MRX_NORMAL_NODE_HEADER
;
194 PMRX_SRV_OPEN pSrvOpen
;
195 PFILE_OBJECT AssociatedFileObject
;
203 UNICODE_STRING UnicodeQueryTemplate
;
205 PMRX_PIPE_HANDLE_INFORMATION PipeHandleInformation
;
207 ULONG OffsetOfNextEaToReturn
;
208 } MRX_FOBX
, *PMRX_FOBX
;
212 RxAcquireExclusiveFcbResourceInMRx(
213 _Inout_ PMRX_FCB Fcb
);