20#define UDF_BUG_CHECK_ID UDF_FILE_FLUSH
68 Irp->IoStatus.Status = RC;
69 Irp->IoStatus.Information = 0;
164#ifdef UDF_DELAYED_CLOSE
201 RC =
Irp->IoStatus.Status;
234 if(
Vcb->FlushMedia) {
244 *PtrNextIoStackLocation = *
IrpSp;
258 Irp->IoStatus.Status = RC;
259 Irp->IoStatus.Information = 0;
309#ifndef UDF_READ_ONLY_BUILD
320 Fcb->FileInfo->Dloc->SDirInfo &&
331 Fcb->NTRequiredFCB->SectionObject.DataSectionObject) {
336 MmPrint((
" CcFlushCache()\n"));
344#ifndef UDF_READ_ONLY_BUILD
370#ifndef UDF_READ_ONLY_BUILD
422 UDFPrint((
"UDFFlushADirectory: \n"));
431 if(!FI || !FI->Dloc || !FI->Dloc->DirIndex)
goto SkipFlushDir;
443 FI->Dloc->SDirInfo &&
461 if(!tempFI)
continue;
514#ifndef UDF_READ_ONLY_BUILD
517 UDFPrint((
"UDFFlushLogicalVolume: \n"));
537 UDFPrint((
" Lite flush, keep Modified=%d.\n",
Vcb->Modified));
539 if(
Vcb->VerifyOnWrite) {
540 UDFPrint((
"UDF: Flushing cache for verify\n"));
586 UDFPrint((
"UDFFlushCompletion: \n"));
588 if (
Irp->PendingReturned) {
615 Vcb->VCBFlags &= ~UDF_VCB_FLAGS_FLUSH_BREAK_REQ;
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
VOID UDFSetFileXTime(IN PUDF_FILE_INFO FileInfo, IN LONGLONG *CrtTime, IN LONGLONG *AccTime, IN LONGLONG *AttrTime, IN LONGLONG *ChgTime)
VOID UDFAttributesToUDF(IN PDIR_INDEX_ITEM FileDirNdx, IN tag *FileEntry, IN ULONG NTAttr)
ULONG UDFAttributesToNT(IN PDIR_INDEX_ITEM FileDirNdx, IN tag *FileEntry)
VOID NTAPI CcFlushCache(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, OUT OPTIONAL PIO_STATUS_BLOCK IoStatus)
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
VOID UDFCloseAllDelayed(IN PVCB Vcb)
PDIR_INDEX_HDR UDFGetDirIndexByFileInfo(IN PUDF_FILE_INFO FileInfo)
PDIR_INDEX_ITEM UDFDirIndexScan(PUDF_DIR_SCAN_CONTEXT Context, PUDF_FILE_INFO *_FileInfo)
BOOLEAN UDFDirIndexInitScan(IN PUDF_FILE_INFO DirInfo, OUT PUDF_DIR_SCAN_CONTEXT Context, IN uint_di Index)
_In_ PIO_STACK_LOCATION IrpSp
NTSTATUS UDFExceptionHandler(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
BOOLEAN __fastcall UDFIsIrpTopLevel(PIRP Irp)
VOID UDFLogEvent(NTSTATUS UDFEventLogId, NTSTATUS RC)
NTSTATUS UDFPostRequest(IN PtrUDFIrpContext PtrIrpContext, IN PIRP Irp)
PtrUDFIrpContext UDFAllocateIrpContext(PIRP Irp, PDEVICE_OBJECT PtrTargetDeviceObject)
VOID UDFReleaseIrpContext(PtrUDFIrpContext PtrIrpContext)
long UDFExceptionFilter(PtrUDFIrpContext PtrIrpContext, PEXCEPTION_POINTERS PtrExceptionPointers)
#define UDFReleaseResource(Resource)
#define UDFAcquireResourceShared(Resource, CanWait)
#define UDFAcquireResourceExclusive(Resource, CanWait)
#define KeQuerySystemTime(t)
#define UDF_ERROR_INTERNAL_ERROR
_In_ PLARGE_INTEGER NtTime
VOID UDFFlushTryBreak(IN PVCB Vcb)
ULONG UDFFlushLogicalVolume(IN PtrUDFIrpContext PtrIrpContext, IN PIRP Irp, IN PVCB Vcb, IN ULONG FlushFlags)
NTSTATUS NTAPI UDFFlush(PDEVICE_OBJECT DeviceObject, PIRP Irp)
ULONG UDFFlushADirectory(IN PVCB Vcb, IN PUDF_FILE_INFO FI, OUT PIO_STATUS_BLOCK PtrIoStatus, IN ULONG FlushFlags)
NTSTATUS NTAPI UDFFlushCompletion(PDEVICE_OBJECT PtrDeviceObject, PIRP Irp, PVOID Context)
ULONG UDFFlushAFile(IN PtrUDFFCB Fcb, IN PtrUDFCCB Ccb, OUT PIO_STATUS_BLOCK PtrIoStatus, IN ULONG FlushFlags)
NTSTATUS UDFCommonFlush(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
BOOLEAN UDFFlushIsBreaking(IN PVCB Vcb, IN ULONG FlushFlags)
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
#define EXCEPTION_EXECUTE_HANDLER
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
VOID UDFPreClrModified(IN PVCB Vcb)
VOID UDFClrModified(IN PVCB Vcb)
OSSTATUS UDFUmount__(IN PVCB Vcb)
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
#define FILE_ATTRIBUTE_ARCHIVE
BOOLEAN NTAPI ExIsResourceAcquiredExclusiveLite(IN PERESOURCE Resource)
ULONG NTAPI ExIsResourceAcquiredSharedLite(IN PERESOURCE Resource)
#define IoCompleteRequest
VOID NTAPI IoSetTopLevelIrp(IN PIRP Irp)
NTSTATUS UDFWriteSecurity(IN PVCB Vcb, IN PtrUDFFCB Fcb, IN PSECURITY_DESCRIPTOR *SecurityDesc)
#define _SEH2_AbnormalTermination()
#define _SEH2_EXCEPT(...)
#define _SEH2_GetExceptionInformation()
VOID UDFVFlush(IN PVCB Vcb)
#define UDF_IRP_CONTEXT_CAN_BLOCK
#define UDF_FLUSH_FLAGS_LITE
struct _UDFContextControlBlock * PtrUDFCCB
#define UDF_FCB_ROOT_DIRECTORY
#define UDF_NTREQ_FCB_DELETED
#define UDF_NTREQ_FCB_MODIFIED
#define UDF_NODE_TYPE_VCB
#define UDF_FLUSH_FLAGS_INTERRUPTED
#define UDF_FCB_DIRECTORY
#define UDF_CCB_WRITE_TIME_SET
struct _FCB::@729::@732 Fcb
LARGE_INTEGER LastWriteTime
struct _UDFFileControlBlock * Fcb
#define UDF_VCB_IC_UPDATE_MODIFY_TIME
#define UDF_VCB_FLAGS_VOLUME_MOUNTED
#define UDF_VCB_FLAGS_VOLUME_READ_ONLY
#define UDF_VCB_FLAGS_RAW_DISK
#define UDF_VCB_IC_UPDATE_ARCH_BIT
#define UDF_VCB_FLAGS_FLUSH_BREAK_REQ
#define UDF_VCB_SKIP_EJECT_CHECK
OSSTATUS UDFFlushFile__(IN PVCB Vcb, IN PUDF_FILE_INFO FileInfo, IN ULONG FlushFlags)
void UDFSetFileSizeInDirNdx(IN PVCB Vcb, IN PUDF_FILE_INFO FileInfo, IN int64 *ASize)
#define UDFIsSDirDeleted(FI)
#define UDFGetFileAllocationSize(Vcb, FileInfo)
#define UDFHasAStreamDir(FI)
__inline PDIR_INDEX_ITEM UDFDirIndex(IN PDIR_INDEX_HDR hDirNdx, IN uint_di i)
#define UDFIsADirectory(FileInfo)
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_INSUFFICIENT_RESOURCES
#define UDF_CHECK_PAGING_IO_RESOURCE(NTReqFCB)
VOID WCacheFlushAll__(IN PW_CACHE Cache, IN PVOID Context)
OSSTATUS WCacheFlushBlocks__(IN PW_CACHE Cache, IN PVOID Context, IN lba_t Lba, IN ULONG BCount)
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
#define FO_FILE_SIZE_CHANGED
#define IO_DISK_INCREMENT