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))
struct _SRV_OPEN SRV_OPEN
VOID RxpTrackReference(_In_ ULONG TraceType, _In_ PCSTR FileName, _In_ ULONG Line, _In_ PVOID Instance)
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)
BOOLEAN RxFinalizeVNetRoot(_Out_ PV_NET_ROOT ThisVNetRoot, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
struct _NET_ROOT NET_ROOT
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)
struct _FCB_LOCK FCB_LOCK
struct _FCB_BUFFERED_LOCKS * PFCB_BUFFERED_LOCKS
struct _V_NET_ROOT V_NET_ROOT
@ RX_FCBTRACKER_CASE_NULLCONTEXT
@ RX_FCBTRACKER_CASE_NORMAL
@ RX_FCBTRACKER_CASE_CBS_WAIT_CONTEXT
@ RX_FCBTRACKER_CASE_CBS_CONTEXT
@ RX_FCBTRACKER_CASE_MAXIMUM
struct _V_NET_ROOT * PV_NET_ROOT
BOOLEAN RxFinalizeSrvCall(_Out_ PSRV_CALL ThisSrvCall, _In_ BOOLEAN RecursiveFinalize, _In_ BOOLEAN ForceFinalize)
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)
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
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)
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
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
enum _RX_BLOCK_CONDITION RX_BLOCK_CONDITION
__GNU_EXTENSION typedef __int64 * PLONGLONG
_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
enum _RX_FILE_TYPE RX_FILE_TYPE
#define RDBSS_NTC_SRVOPEN
#define NodeTypeIsFcb(FCB)
volatile ULONG PendingLockOps
PLARGE_INTEGER pAllocationSize
PLARGE_INTEGER pLastWriteTime
PLARGE_INTEGER pLastChangeTime
PLARGE_INTEGER pValidDataLength
PLARGE_INTEGER pLastAccessTime
PLARGE_INTEGER pCreationTime
LARGE_INTEGER BytesOffset
LOWIO_PER_FCB_INFO LowIoPerFcbInfo
RX_BLOCK_CONDITION Condition
PKEVENT pBufferingStateChangeCompletedEvent
LONG NumberOfBufferingStateChangeWaiters
union _FCB::@729 Specific
PSRV_OPEN InternalSrvOpen
ULONG EaModificationCount
PRX_FSD_DISPATCH_VECTOR PrivateDispatchVector
struct _FCB::@729::@732 Fcb
PMINIRDR_DISPATCH MRxDispatch
PETHREAD CreateSectionThread
BOOLEAN UpperFinalizationDone
PFAST_IO_DISPATCH MRxFastIoDispatch
LARGE_INTEGER LastWriteTime
LARGE_INTEGER LastAccessTime
FCB_BUFFERED_LOCKS BufferedLocks
PRDBSS_DEVICE_OBJECT RxDeviceObject
LARGE_INTEGER LastChangeTime
RX_FCB_TABLE_ENTRY FcbTableEntry
PCHAR PagingIoResourceFile
FSRTL_ADVANCED_FCB_HEADER spacer
SHARE_ACCESS ShareAccessPerSrvOpens
UNICODE_STRING PrivateAlreadyPrefixedName
ULONG PagingIoResourceLine
LIST_ENTRY ScavengerFinalizationList
volatile ULONG FobxSerialNumber
MRX_PIPE_HANDLE_INFORMATION PipeHandleInformation
BOOLEAN UpperFinalizationDone
union _FOBX::@1962 Specific
THROTTLING_STATE LockThrottlingState
MRX_PIPE_HANDLE_INFORMATION
BOOLEAN ContainsWildCards
LARGE_INTEGER LastLockRange
THROTTLING_STATE ThrottlingState
LIST_ENTRY ClosePendingList
MRX_NORMAL_NODE_HEADER spacer
LIST_ENTRY ReadSerializationQueue
LIST_ENTRY WriteSerializationQueue
BOOLEAN fOpenCountDecremented
RXVBO PredictedWriteOffset
LARGE_INTEGER LastLockOffset
RXVBO PredictedReadOffset
struct _FOBX::@1962::@1966 DiskFile
struct _FOBX::@1962::@1965 NamedPipe
LIST_ENTRY ScavengerFinalizationList
LARGE_INTEGER CollectDataTime
PRDBSS_DEVICE_OBJECT RxDeviceObject
PUNICODE_STRING pAlreadyPrefixedName
PV_NET_ROOT DefaultVNetRoot
MRX_NORMAL_NODE_HEADER spacer
LIST_ENTRY ScavengerFinalizationList
BOOLEAN UpperFinalizationDone
PURGE_SYNCHRONIZATION_CONTEXT PurgeSyncronizationContext
ULONG NumberOfVirtualNetRoots
RX_BLOCK_CONDITION Condition
ULONG SerialNumberForEnum
LIST_ENTRY TransitionWaitList
RX_PREFIX_ENTRY PrefixEntry
LIST_ENTRY VirtualNetRoots
ERESOURCE BufferedLocksResource
PKEVENT OutstandingAsyncEvent
ULONG OutstandingAsyncWrites
NODE_BYTE_SIZE NodeByteSize
ERESOURCE PagingIoResource
NODE_TYPE_CODE NodeTypeCode
FAST_MUTEX AdvancedFcbHeaderMutex
LIST_ENTRY TransitionWaitList
SECTION_OBJECT_POINTERS SectionObjectPointers
LIST_ENTRY TransitionWaitList
RX_BUFFERING_MANAGER BufferingManager
LIST_ENTRY ScavengerFinalizationList
BOOLEAN UpperFinalizationDone
RX_PREFIX_ENTRY PrefixEntry
PURGE_SYNCHRONIZATION_CONTEXT PurgeSyncronizationContext
RX_BLOCK_CONDITION Condition
ULONG SerialNumberForEnum
volatile LONG NumberOfCloseDelayedFiles
MRX_NORMAL_NODE_HEADER spacer
LIST_ENTRY ScavengerFinalizationList
LIST_ENTRY SrvOpenKeyList
RX_BLOCK_CONDITION Condition
volatile LONG BufferingToken
BOOLEAN UpperFinalizationDone
MRX_NORMAL_NODE_HEADER spacer
LIST_ENTRY TransitionWaitList
ULONG SerialNumberForEnum
LIST_ENTRY NetRootListEntry
BOOLEAN UpperFinalizationDone
BOOLEAN ConnectionFinalizationDone
ULONG PrefixOffsetInBytes
LIST_ENTRY ScavengerFinalizationList
UNICODE_STRING NamePrefix
RX_PREFIX_ENTRY PrefixEntry
volatile LONG AdditionalReferenceForDeleteFsctlTaken
RX_BLOCK_CONDITION Condition
LIST_ENTRY TransitionWaitList
MRX_NORMAL_NODE_HEADER spacer
_In_ WDFDEVICE _In_ WDF_SPECIAL_FILE_TYPE FileType
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_WMI_INSTANCE_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_opt_ WDFWMIINSTANCE * Instance
_Must_inspect_result_ _In_ ULONG Flags