277 PSHARED_CACHE_MAP SharedCacheMap;
333 if ((FileOffsetAppend ==
FALSE) &&
337 ResourceAcquiredShared =
TRUE;
348 if (FileOffsetAppend !=
FALSE)
380 if (ResourceAcquiredShared &&
386 if (FileOffsetAppend !=
FALSE)
441 &FastIoCheckIfPossibleStatus,
454 FileSizeModified =
TRUE;
500 if (FileSizeModified)
503 (PSHARED_CACHE_MAP)
FileObject->SectionObjectPointer->SharedCacheMap;
504 SharedCacheMap->FileSize.LowPart =
NewSize.LowPart;
515 if (FileSizeModified)
553 if ((FileOffsetAppend ==
FALSE) &&
554 (
FileOffset->QuadPart + Length <= FcbHeader->ValidDataLength.QuadPart))
559 goto LeaveCriticalAndFail;
561 ResourceAcquiredShared =
TRUE;
568 goto LeaveCriticalAndFail;
573 if (FileOffsetAppend !=
FALSE)
597 if (ResourceAcquiredShared &&
603 goto LeaveCriticalAndFail;
607 if (FileOffsetAppend)
651 &FastIoCheckIfPossibleStatus,
664 FileSizeModified =
TRUE;
750 if (FileSizeModified)
754 (PSHARED_CACHE_MAP)
FileObject->SectionObjectPointer->SharedCacheMap;
755 SharedCacheMap->FileSize.QuadPart =
NewSize.QuadPart;
767 if (FileSizeModified)
832 FastDispatch =
DeviceObject->DriverObject->FastIoDispatch;
868 Irp->AssociatedIrp.SystemBuffer = &
Info;
871 IoStackLocation =
Irp->Tail.Overlay.CurrentStackLocation;
933 FastDispatch =
DeviceObject->DriverObject->FastIoDispatch;
936 if (FastDispatch && FastDispatch->
MdlRead)
950 FastDispatch = BaseDeviceObject->DriverObject->FastIoDispatch;
981 FastDispatch =
DeviceObject->DriverObject->FastIoDispatch;
992 FastDispatch = BaseDeviceObject->DriverObject->FastIoDispatch;
1162 FastDispatch =
DeviceObject->DriverObject->FastIoDispatch;
1176 FastDispatch = BaseDeviceObject->DriverObject->FastIoDispatch;
1230 FastDispatch =
DeviceObject->DriverObject->FastIoDispatch;
1247 FastDispatch = BaseDeviceObject->DriverObject->FastIoDispatch;
1284 PSHARED_CACHE_MAP SharedCacheMap;
1329 if ((FileOffsetAppend ==
FALSE) &&
1334 ResourceAcquiredShared =
TRUE;
1343 if (FileOffsetAppend !=
FALSE)
1356 (Length <= MAXLONGLONG - FileOffset->
QuadPart) &&
1360 if (ResourceAcquiredShared &&
1367 if (FileOffsetAppend)
1382 goto FailAndCleanup;
1411 goto FailAndCleanup;
1420 FileSizeModified =
TRUE;
1505 if (FileSizeModified)
1508 (PSHARED_CACHE_MAP)
FileObject->SectionObjectPointer->SharedCacheMap;
1509 SharedCacheMap->FileSize.QuadPart =
NewSize.QuadPart;
1518 if (FileSizeModified)
1539 goto FailAndCleanup;
1617 FastDispatch =
DeviceObject->DriverObject->FastIoDispatch;
1674 FastDispatch =
DeviceObject->DriverObject->FastIoDispatch;
1709 FastDispatch =
DeviceObject->DriverObject->FastIoDispatch;
1728 DPRINT1(
"STATUS_CANT_WAIT\n");
1782 FastDispatch =
DeviceObject->DriverObject->FastIoDispatch;
1827 *ResourceToAcquire = FcbHeader->Resource;
1834 *ResourceToAcquire = FcbHeader->Resource;
1838 *ResourceToAcquire = FcbHeader->PagingIoResource;
1874 FastDispatch =
DeviceObject->DriverObject->FastIoDispatch;
1904 if (ResourceToAcquire ==
NULL)
1929 OldResourceToAcquire = ResourceToAcquire;
1932 if ((OldExclusive ==
Exclusive) && (OldResourceToAcquire == ResourceToAcquire))
1939 if ((OldResourceToAcquire == ResourceToAcquire) && !
Exclusive)
1975 FastDispatch =
DeviceObject->DriverObject->FastIoDispatch;
2032 if (NewCallbacks ==
NULL)
const struct winhelp_callbacks Callbacks
VOID NTAPI CcMdlReadComplete2(IN PFILE_OBJECT FileObject, IN PMDL MdlChain)
VOID NTAPI CcPrepareMdlWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus)
VOID NTAPI CcMdlWriteComplete2(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain)
VOID NTAPI CcMdlRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus)
NTKERNELAPI BOOLEAN NTAPI CcCopyWriteWontFlush(_In_ PFILE_OBJECT FileObject, _In_ PLARGE_INTEGER FileOffset, _In_ ULONG Length)
_In_ PFCB _In_ LONGLONG FileOffset
#define NT_SUCCESS(StatCode)
static const WCHAR Cleanup[]
BOOLEAN NTAPI KeIsExecutingDpc(VOID)
FAST_IO_DISPATCH FastIoDispatch
#define ExAllocatePoolWithTag(hernya, size, tag)
#define PsGetCurrentThread()
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
struct _FSRTL_COMMON_FCB_HEADER * PFSRTL_COMMON_FCB_HEADER
#define KeInitializeEvent(pEvt, foo, foo2)
#define ExConvertExclusiveToSharedLite(res)
#define ExAcquireResourceExclusiveLite(res, wait)
#define ExAcquireResourceSharedLite(res, wait)
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
_Must_inspect_result_ _In_ USHORT NewSize
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL * MdlChain
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
#define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX
#define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH
#define FSRTL_FAST_IO_TOP_LEVEL_IRP
BOOLEAN NTAPI CcZeroData(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER StartOffset, IN PLARGE_INTEGER EndOffset, IN BOOLEAN Wait)
__in PWDFDEVICE_INIT __in BOOLEAN Exclusive
#define EXCEPTION_EXECUTE_HANDLER
#define EXCEPTION_CONTINUE_SEARCH
#define FILE_STANDARD_INFORMATION
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
struct _EXTENDED_DRIVER_EXTENSION * PEXTENDED_DRIVER_EXTENSION
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER _In_ ULONG SectionPageProtection
#define _Outptr_result_maybenull_
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
VOID NTAPI CcFastCopyWrite(IN PFILE_OBJECT FileObject, IN ULONG FileOffset, IN ULONG Length, IN PVOID Buffer)
ULONG CcFastMdlReadNotPossible
ULONG CcFastReadResourceMiss
BOOLEAN NTAPI CcCopyWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN PVOID Buffer)
BOOLEAN NTAPI CcCanIWrite(IN PFILE_OBJECT FileObject, IN ULONG BytesToWrite, IN BOOLEAN Wait, IN UCHAR Retrying)
BOOLEAN NTAPI CcCopyRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus)
ULONG CcFastReadNotPossible
VOID NTAPI CcFastCopyRead(IN PFILE_OBJECT FileObject, IN ULONG FileOffset, IN ULONG Length, IN ULONG PageCount, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus)
BOOLEAN NTAPI ExAcquireSharedWaitForExclusive(IN PERESOURCE Resource, IN BOOLEAN Wait)
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
ULONG NTAPI ExIsResourceAcquiredSharedLite(IN PERESOURCE Resource)
BOOLEAN NTAPI FsRtlMdlWriteComplete(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain)
BOOLEAN NTAPI FsRtlPrepareMdlWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN ULONG LockKey, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus)
BOOLEAN NTAPI FsRtlMdlWriteCompleteDev(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain, IN PDEVICE_OBJECT DeviceObject)
static BOOLEAN FsRtlpGetResourceForModWrite(_In_ PFSRTL_COMMON_FCB_HEADER FcbHeader, _In_ PLARGE_INTEGER EndingOffset, _Outptr_result_maybenull_ PERESOURCE *ResourceToAcquire)
Get the resource to acquire when Mod Writer flushes data to disk.
NTSTATUS NTAPI FsRtlAcquireFileExclusiveCommon(IN PFILE_OBJECT FileObject, IN FS_FILTER_SECTION_SYNC_TYPE SyncType, IN ULONG Reserved)
BOOLEAN NTAPI FsRtlMdlReadCompleteDev(IN PFILE_OBJECT FileObject, IN PMDL MemoryDescriptorList, IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI FsRtlIncrementCcFastReadWait(VOID)
BOOLEAN NTAPI FsRtlCopyRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI FsRtlIncrementCcFastReadNotPossible(VOID)
BOOLEAN NTAPI FsRtlMdlReadComplete(IN PFILE_OBJECT FileObject, IN OUT PMDL MdlChain)
NTSTATUS NTAPI FsRtlGetFileSize(IN PFILE_OBJECT FileObject, IN OUT PLARGE_INTEGER FileSize)
BOOLEAN NTAPI FsRtlCopyWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
_Check_return_ NTSTATUS NTAPI FsRtlAcquireFileForModWriteEx(_In_ PFILE_OBJECT FileObject, _In_ PLARGE_INTEGER EndingOffset, _Outptr_result_maybenull_ PERESOURCE *ResourceToRelease)
Lock a file object before flushing pages to disk. To be called by the Modified Page Writer (MPW)
VOID NTAPI FsRtlIncrementCcFastReadResourceMiss(VOID)
VOID NTAPI FsRtlReleaseFileForModWrite(_In_ PFILE_OBJECT FileObject, _In_ PERESOURCE ResourceToRelease)
Unlock a file object after flushing pages to disk. To be called by the Modified Page Writer (MPW) aft...
VOID NTAPI FsRtlReleaseFile(IN PFILE_OBJECT FileObject)
BOOLEAN NTAPI FsRtlPrepareMdlWriteDev(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN ULONG LockKey, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI FsRtlRegisterFileSystemFilterCallbacks(PDRIVER_OBJECT FilterDriverObject, PFS_FILTER_CALLBACKS Callbacks)
BOOLEAN NTAPI FsRtlMdlRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN ULONG LockKey, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus)
NTSTATUS NTAPI FsRtlAcquireFileForCcFlushEx(IN PFILE_OBJECT FileObject)
VOID NTAPI FsRtlReleaseFileForCcFlush(IN PFILE_OBJECT FileObject)
BOOLEAN NTAPI FsRtlMdlReadDev(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN ULONG LockKey, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI FsRtlIncrementCcFastReadNoWait(VOID)
VOID NTAPI FsRtlAcquireFileForCcFlush(IN PFILE_OBJECT FileObject)
VOID NTAPI FsRtlAcquireFileExclusive(IN PFILE_OBJECT FileObject)
NTSTATUS NTAPI FsRtlAcquireToCreateMappedSection(_In_ PFILE_OBJECT FileObject, _In_ ULONG SectionPageProtection)
BOOLEAN NTAPI FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus)
PDEVICE_OBJECT NTAPI IoGetRelatedDeviceObject(IN PFILE_OBJECT FileObject)
PDEVICE_OBJECT NTAPI IoGetBaseFileSystemDeviceObject(IN PFILE_OBJECT FileObject)
BOOLEAN NTAPI IoSetThreadHardErrorMode(IN BOOLEAN HardErrorEnabled)
PIRP NTAPI IoAllocateIrp(IN CCHAR StackSize, IN BOOLEAN ChargeQuota)
#define STATUS_FILE_LOCKED_WITH_ONLY_READERS
#define STATUS_FILE_LOCKED_WITH_WRITERS
#define STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY
PPCI_DRIVER_EXTENSION DriverExtension
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define IRP_MJ_QUERY_INFORMATION
#define FileStandardInformation
#define STATUS_END_OF_FILE
PDRIVER_EXTENSION DriverExtension
PFAST_IO_ACQUIRE_FOR_MOD_WRITE AcquireForModWrite
PFAST_IO_QUERY_STANDARD_INFO FastIoQueryStandardInfo
PFAST_IO_RELEASE_FOR_CCFLUSH ReleaseForCcFlush
PFAST_IO_MDL_READ_COMPLETE MdlReadComplete
PFAST_IO_MDL_READ MdlRead
PFAST_IO_ACQUIRE_FOR_CCFLUSH AcquireForCcFlush
PFAST_IO_MDL_WRITE_COMPLETE MdlWriteComplete
PFAST_IO_ACQUIRE_FILE AcquireFileForNtCreateSection
PFAST_IO_RELEASE_FILE ReleaseFileForNtCreateSection
PFAST_IO_PREPARE_MDL_WRITE PrepareMdlWrite
PFAST_IO_RELEASE_FOR_MOD_WRITE ReleaseForModWrite
PFAST_IO_CHECK_IF_POSSIBLE FastIoCheckIfPossible
PFS_FILTER_COMPLETION_CALLBACK PostAcquireForSectionSynchronization
PFS_FILTER_CALLBACK PreAcquireForSectionSynchronization
FS_FILTER_PARAMETERS Parameters
struct _DEVICE_OBJECT * DeviceObject
ULONG SizeOfFsFilterCallbackData
struct _FILE_OBJECT * FileObject
PDEVICE_OBJECT DeviceObject
struct _IO_STACK_LOCATION::@4065::@4074 QueryFile
union _IO_STACK_LOCATION::@1605 Parameters
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_FILE_IS_A_DIRECTORY
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
struct _FS_FILTER_PARAMETERS::@4182 AcquireForSectionSynchronization
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_In_ WDFDPC _In_ BOOLEAN Wait
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE _In_opt_ __drv_aliasesMem WDFCONTEXT CompletionContext
_Reserved_ PVOID Reserved
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
#define ExAcquireResourceShared
enum _FS_FILTER_SECTION_SYNC_TYPE FS_FILTER_SECTION_SYNC_TYPE
_In_ PLARGE_INTEGER _Out_ struct _ERESOURCE ** ResourceToRelease
#define FO_FILE_FAST_IO_READ
#define FO_FILE_SIZE_CHANGED
_In_ PLARGE_INTEGER EndingOffset
#define IRP_SYNCHRONOUS_PAGING_IO
#define FS_FILTER_ACQUIRE_FOR_SECTION_SYNCHRONIZATION
_Inout_ PMDL MemoryDescriptorList
#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size)