10#define FSRTL_COMMON_FCB_HEADER_LAYOUT \
11 CSHORT NodeTypeCode; \
12 CSHORT NodeByteSize; \
14 UCHAR IsFastIoPossible; \
18 PERESOURCE Resource; \
19 PERESOURCE PagingIoResource; \
20 LARGE_INTEGER AllocationSize; \
21 LARGE_INTEGER FileSize; \
22 LARGE_INTEGER ValidDataLength;
36#if (NTDDI_VERSION >= NTDDI_VISTA)
42#define FSRTL_FCB_HEADER_V0 (0x00)
43#define FSRTL_FCB_HEADER_V1 (0x01)
45#define FSRTL_FLAG_FILE_MODIFIED (0x01)
46#define FSRTL_FLAG_FILE_LENGTH_CHANGED (0x02)
47#define FSRTL_FLAG_LIMIT_MODIFIED_PAGES (0x04)
48#define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX (0x08)
49#define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH (0x10)
50#define FSRTL_FLAG_USER_MAPPED_FILE (0x20)
51#define FSRTL_FLAG_ADVANCED_HEADER (0x40)
52#define FSRTL_FLAG_EOF_ADVANCE_ACTIVE (0x80)
54#define FSRTL_FLAG2_DO_MODIFIED_WRITE (0x01)
55#define FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS (0x02)
56#define FSRTL_FLAG2_PURGE_WHEN_MAPPED (0x04)
57#define FSRTL_FLAG2_IS_PAGING_FILE (0x08)
59#define FSRTL_FSP_TOP_LEVEL_IRP (0x01)
60#define FSRTL_CACHE_TOP_LEVEL_IRP (0x02)
61#define FSRTL_MOD_WRITE_TOP_LEVEL_IRP (0x03)
62#define FSRTL_FAST_IO_TOP_LEVEL_IRP (0x04)
63#define FSRTL_NETWORK1_TOP_LEVEL_IRP ((LONG_PTR)0x05)
64#define FSRTL_NETWORK2_TOP_LEVEL_IRP ((LONG_PTR)0x06)
65#define FSRTL_MAX_TOP_LEVEL_IRP_FLAG ((LONG_PTR)0xFFFF)
74#define FSRTL_AUXILIARY_FLAG_DEALLOCATE 0x00000001
82#define FSRTL_FAT_LEGAL 0x01
83#define FSRTL_HPFS_LEGAL 0x02
84#define FSRTL_NTFS_LEGAL 0x04
85#define FSRTL_WILD_CHARACTER 0x08
86#define FSRTL_OLE_LEGAL 0x10
87#define FSRTL_NTFS_STREAM_LEGAL (FSRTL_NTFS_LEGAL | FSRTL_OLE_LEGAL)
89#define FSRTL_VOLUME_DISMOUNT 1
90#define FSRTL_VOLUME_DISMOUNT_FAILED 2
91#define FSRTL_VOLUME_LOCK 3
92#define FSRTL_VOLUME_LOCK_FAILED 4
93#define FSRTL_VOLUME_UNLOCK 5
94#define FSRTL_VOLUME_MOUNT 6
95#define FSRTL_VOLUME_NEEDS_CHKDSK 7
96#define FSRTL_VOLUME_WORM_NEAR_FULL 8
97#define FSRTL_VOLUME_WEARING_OUT 9
98#define FSRTL_VOLUME_FORCED_CLOSED 10
99#define FSRTL_VOLUME_INFO_MAKE_COMPAT 11
100#define FSRTL_VOLUME_PREPARING_EJECT 12
101#define FSRTL_VOLUME_CHANGE_SIZE 13
102#define FSRTL_VOLUME_BACKGROUND_FORMAT 14
109#if (NTDDI_VERSION >= NTDDI_VISTA)
111#define FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED 0x00000001
112#define FSRTL_UNC_PROVIDER_FLAGS_CSC_ENABLED 0x00000002
113#define FSRTL_UNC_PROVIDER_FLAGS_DOMAIN_SVC_AWARE 0x00000004
115#define FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA 0x00000001
117#define FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA 0x00000001
118#define FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL 0x00000002
120#define FSRTL_ECP_LOOKASIDE_FLAG_NONPAGED_POOL 0x00000002
122#define FSRTL_VIRTDISK_FULLY_ALLOCATED 0x00000001
123#define FSRTL_VIRTDISK_NO_DRIVE_LETTER 0x00000002
167#if (NTDDI_VERSION >= NTDDI_WIN2K)
179#define FSRTL_CC_FLUSH_ERROR_FLAG_NO_HARD_ERROR 0x1
180#define FSRTL_CC_FLUSH_ERROR_FLAG_NO_LOG_ENTRY 0x2
233#define MCB_FLAG_RAISE_ON_ALLOCATION_FAILURE 1
262#if (NTDDI_VERSION >= NTDDI_VISTASP1)
263#define OPLOCK_FLAG_COMPLETE_IF_OPLOCKED 0x00000001
266#if (NTDDI_VERSION >= NTDDI_WIN7)
267#define OPLOCK_FLAG_OPLOCK_KEY_CHECK_ONLY 0x00000002
268#define OPLOCK_FLAG_BACK_OUT_ATOMIC_OPLOCK 0x00000004
269#define OPLOCK_FLAG_IGNORE_OPLOCK_KEYS 0x00000008
270#define OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH 0x00000001
273#if (NTDDI_VERSION >= NTDDI_WIN7)
280DEFINE_GUID(GUID_ECP_OPLOCK_KEY, 0x48850596, 0x3050, 0x4be7, 0x98, 0x63, 0xfe, 0xc3, 0x50, 0xce, 0x8d, 0x7f);
286#if (NTDDI_VERSION >= NTDDI_WIN7)
_Inout_ PLIST_ENTRY _In_ PVOID _In_ PSTRING _In_ BOOLEAN _In_ BOOLEAN _In_ ULONG _In_ PFLT_CALLBACK_DATA _In_opt_ PCHECK_FOR_TRAVERSE_ACCESS _In_opt_ PSECURITY_SUBJECT_CONTEXT SubjectContext
_Must_inspect_result_ _In_ LPCGUID ULONG _In_ FSRTL_ALLOCATE_ECP_FLAGS _In_opt_ PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK _In_ ULONG _Outptr_ PVOID * EcpContext
_Must_inspect_result_ _In_ LPCGUID EcpType
_In_ PLIST_ENTRY _In_ PSTRING _In_ USHORT _In_opt_ PSTRING _In_opt_ PSTRING _In_ ULONG _In_ ULONG _In_opt_ PVOID TargetContext
_In_ PLIST_ENTRY _In_ PSTRING _In_ USHORT _In_opt_ PSTRING _In_opt_ PSTRING _In_ ULONG _In_ ULONG _In_opt_ PVOID _In_opt_ PVOID FilterContext
VOID(* PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK)(_Inout_ PVOID EcpContext, _In_ LPCGUID EcpType)
struct _LARGE_MCB * PLARGE_MCB
struct _FSRTL_AUXILIARY_BUFFER * PFSRTL_AUXILIARY_BUFFER
struct _ECP_LIST * PECP_LIST
VOID(* PFN_FSRTLTEARDOWNPERSTREAMCONTEXTS)(_In_ PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader)
$if(_NTIFS_) typedef ULONG LBN
NTSTATUS(NTAPI * PCOMPLETE_LOCK_IRP_ROUTINE)(_In_ PVOID Context, _In_ PIRP Irp)
struct _FSRTL_ADVANCED_FCB_HEADER * PFSRTL_ADVANCED_FCB_HEADER
ULONG FSRTL_ECP_LOOKASIDE_FLAGS
struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_1 FSRTL_MUP_PROVIDER_INFO_LEVEL_1
VOID(NTAPI * PUNLOCK_ROUTINE)(_In_ PVOID Context, _In_ PFILE_LOCK_INFO FileLockInfo)
enum _FSRTL_COMPARISON_RESULT FSRTL_COMPARISON_RESULT
enum _FAST_IO_POSSIBLE FAST_IO_POSSIBLE
struct _FSRTL_COMMON_FCB_HEADER * PFSRTL_COMMON_FCB_HEADER
struct _FSRTL_PER_FILEOBJECT_CONTEXT * PFSRTL_PER_FILEOBJECT_CONTEXT
BOOLEAN(NTAPI * PCHECK_FOR_TRAVERSE_ACCESS)(_In_ PVOID NotifyContext, _In_opt_ PVOID TargetContext, _In_ PSECURITY_SUBJECT_CONTEXT SubjectContext)
struct _EOF_WAIT_BLOCK EOF_WAIT_BLOCK
struct _FSRTL_PER_FILEOBJECT_CONTEXT FSRTL_PER_FILEOBJECT_CONTEXT
struct _LARGE_MCB LARGE_MCB
struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_2 * PFSRTL_MUP_PROVIDER_INFO_LEVEL_2
VOID(NTAPI * PFSRTL_STACK_OVERFLOW_ROUTINE)(_In_ PVOID Context, _In_ PKEVENT Event)
struct _FSRTL_COMMON_FCB_HEADER FSRTL_COMMON_FCB_HEADER
BOOLEAN(NTAPI * PFILTER_REPORT_CHANGE)(_In_ PVOID NotifyContext, _In_ PVOID FilterContext)
VOID(NTAPI * POPLOCK_FS_PREPOST_IRP)(_In_ PVOID Context, _In_ PIRP Irp)
struct _FSRTL_AUXILIARY_BUFFER FSRTL_AUXILIARY_BUFFER
struct _ECP_HEADER * PECP_HEADER
struct _FILE_LOCK * PFILE_LOCK
struct _FSRTL_PER_STREAM_CONTEXT * PFSRTL_PER_STREAM_CONTEXT
struct _FSRTL_PER_FILE_CONTEXT * PFSRTL_PER_FILE_CONTEXT
struct _OPLOCK_KEY_ECP_CONTEXT * POPLOCK_KEY_ECP_CONTEXT
struct _FSRTL_PER_STREAM_CONTEXT FSRTL_PER_STREAM_CONTEXT
VOID(NTAPI * POPLOCK_WAIT_COMPLETE_ROUTINE)(_In_ PVOID Context, _In_ PIRP Irp)
enum _FSRTL_CHANGE_BACKING_TYPE FSRTL_CHANGE_BACKING_TYPE
enum _FSRTL_CHANGE_BACKING_TYPE * PFSRTL_CHANGE_BACKING_TYPE
ULONG FSRTL_ALLOCATE_ECP_FLAGS
struct _FILE_LOCK FILE_LOCK
struct _OPLOCK_KEY_ECP_CONTEXT OPLOCK_KEY_ECP_CONTEXT
struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_1 * PFSRTL_MUP_PROVIDER_INFO_LEVEL_1
_FSRTL_CHANGE_BACKING_TYPE
struct _FILE_LOCK_INFO FILE_LOCK_INFO
struct _FSRTL_ADVANCED_FCB_HEADER FSRTL_ADVANCED_FCB_HEADER
struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_2 FSRTL_MUP_PROVIDER_INFO_LEVEL_2
ULONG FSRTL_ALLOCATE_ECPLIST_FLAGS
struct _BASE_MCB BASE_MCB
struct _EOF_WAIT_BLOCK * PEOF_WAIT_BLOCK
#define FSRTL_COMMON_FCB_HEADER_LAYOUT
struct _FILE_LOCK_INFO * PFILE_LOCK_INFO
struct _FSRTL_PER_FILE_CONTEXT FSRTL_PER_FILE_CONTEXT
struct _BASE_MCB * PBASE_MCB
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
$endif(_WDMDDK_) $if(_NTDDK_) typedef struct _NEON128
LARGE_INTEGER StartingByte
LONG volatile LockRequestsInProgress
BOOLEAN FastIoIsQuestionable
PUNLOCK_ROUTINE UnlockRoutine
PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine
FILE_LOCK_INFO LastReturnedLockInfo
UNICODE_STRING ProviderName
PFREE_FUNCTION FreeCallback
PFREE_FUNCTION FreeCallback
PKGUARDED_MUTEX GuardedMutex
LARGE_MCB DummyFieldThatSizesThisStructureCorrectly