20 #define UDF_BUG_CHECK_ID UDF_FILE_FLUSH 68 Irp->IoStatus.Status = RC;
69 Irp->IoStatus.Information = 0;
164 #ifdef UDF_DELAYED_CLOSE 166 #endif //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 316 #endif //UDF_READ_ONLY_BUILD 320 Fcb->FileInfo->Dloc->SDirInfo &&
331 Fcb->NTRequiredFCB->SectionObject.DataSectionObject) {
336 MmPrint((
" CcFlushCache()\n"));
344 #ifndef UDF_READ_ONLY_BUILD 363 #endif //UDF_READ_ONLY_BUILD 370 #ifndef UDF_READ_ONLY_BUILD 381 #endif //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"));
556 #endif //UDF_READ_ONLY_BUILD 586 UDFPrint((
"UDFFlushCompletion: \n"));
588 if (
Irp->PendingReturned) {
#define KeQuerySystemTime(t)
#define UDFAcquireResourceExclusive(Resource, CanWait)
VOID UDFReleaseIrpContext(PtrUDFIrpContext PtrIrpContext)
PtrUDFIrpContext UDFAllocateIrpContext(PIRP Irp, PDEVICE_OBJECT PtrTargetDeviceObject)
LARGE_INTEGER LastWriteTime
struct _UDFContextControlBlock * PtrUDFCCB
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)
#define STATUS_INSUFFICIENT_RESOURCES
#define FsRtlEnterFileSystem
#define UDFGetFileAllocationSize(Vcb, FileInfo)
VOID NTAPI CcFlushCache(IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN OPTIONAL PLARGE_INTEGER FileOffset, IN ULONG Length, OUT OPTIONAL PIO_STATUS_BLOCK IoStatus)
#define FsRtlExitFileSystem
VOID UDFLogEvent(NTSTATUS UDFEventLogId, NTSTATUS RC)
#define UDF_NODE_TYPE_VCB
#define UDFReleaseResource(Resource)
NTSTATUS UDFWriteSecurity(IN PVCB Vcb, IN PtrUDFFCB Fcb, IN PSECURITY_DESCRIPTOR *SecurityDesc)
__inline PDIR_INDEX_ITEM UDFDirIndex(IN PDIR_INDEX_HDR hDirNdx, IN uint_di i)
#define UDF_FLUSH_FLAGS_LITE
#define STATUS_INVALID_DEVICE_REQUEST
struct _FCB::@709::@712 Fcb
#define UDF_FLUSH_FLAGS_INTERRUPTED
NTSTATUS UDFCommonFlush(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
void UDFSetFileSizeInDirNdx(IN PVCB Vcb, IN PUDF_FILE_INFO FileInfo, IN int64 *ASize)
#define UDF_IRP_CONTEXT_CAN_BLOCK
ULONG UDFFlushAFile(IN PtrUDFFCB Fcb, IN PtrUDFCCB Ccb, OUT PIO_STATUS_BLOCK PtrIoStatus, IN ULONG FlushFlags)
#define IoSetCompletionRoutine(_Irp, _CompletionRoutine, _Context, _InvokeOnSuccess, _InvokeOnError, _InvokeOnCancel)
#define UDF_VCB_FLAGS_RAW_DISK
#define FO_FILE_SIZE_CHANGED
VOID WCacheFlushAll__(IN PW_CACHE Cache, IN PVOID Context)
#define UDF_VCB_FLAGS_VOLUME_READ_ONLY
_In_ PDEVICE_OBJECT DeviceObject
#define IO_DISK_INCREMENT
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
PDIR_INDEX_HDR UDFGetDirIndexByFileInfo(IN PUDF_FILE_INFO FileInfo)
#define UDFIsADirectory(FileInfo)
#define _SEH2_GetExceptionInformation()
BOOLEAN UDFFlushIsBreaking(IN PVCB Vcb, IN ULONG FlushFlags)
BOOLEAN NTAPI ExIsResourceAcquiredExclusiveLite(IN PERESOURCE Resource)
#define _SEH2_AbnormalTermination()
#define IoCompleteRequest
OSSTATUS UDFFlushFile__(IN PVCB Vcb, IN PUDF_FILE_INFO FileInfo, IN ULONG FlushFlags)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
NTSTATUS UDFExceptionHandler(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
#define UDF_VCB_IC_UPDATE_MODIFY_TIME
#define UDF_VCB_SKIP_EJECT_CHECK
#define UDF_VCB_FLAGS_FLUSH_BREAK_REQ
#define EXCEPTION_EXECUTE_HANDLER
#define UDF_VCB_IC_UPDATE_ARCH_BIT
#define UDF_FCB_DIRECTORY
VOID UDFSetFileXTime(IN PUDF_FILE_INFO FileInfo, IN LONGLONG *CrtTime, IN LONGLONG *AccTime, IN LONGLONG *AttrTime, IN LONGLONG *ChgTime)
BOOLEAN __fastcall UDFIsIrpTopLevel(PIRP Irp)
OSSTATUS UDFUmount__(IN PVCB Vcb)
#define UDF_FCB_ROOT_DIRECTORY
#define FILE_ATTRIBUTE_ARCHIVE
PDIR_INDEX_ITEM UDFDirIndexScan(PUDF_DIR_SCAN_CONTEXT Context, PUDF_FILE_INFO *_FileInfo)
#define UDF_NTREQ_FCB_DELETED
#define UDF_VCB_FLAGS_VOLUME_MOUNTED
_In_ PLARGE_INTEGER NtTime
#define UDFIsSDirDeleted(FI)
VOID NTAPI IoSetTopLevelIrp(IN PIRP Irp)
long UDFExceptionFilter(PtrUDFIrpContext PtrIrpContext, PEXCEPTION_POINTERS PtrExceptionPointers)
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
#define UDFAcquireResourceShared(Resource, CanWait)
VOID UDFFlushTryBreak(IN PVCB Vcb)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
#define UDF_ERROR_INTERNAL_ERROR
NTSTATUS UDFPostRequest(IN PtrUDFIrpContext PtrIrpContext, IN PIRP Irp)
VOID UDFAttributesToUDF(IN PDIR_INDEX_ITEM FileDirNdx, IN tag *FileEntry, IN ULONG NTAttr)
_In_ PIO_STACK_LOCATION IrpSp
#define UDF_CHECK_PAGING_IO_RESOURCE(NTReqFCB)
#define UDF_CCB_WRITE_TIME_SET
NTSTATUS NTAPI IoCallDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
ULONG UDFAttributesToNT(IN PDIR_INDEX_ITEM FileDirNdx, IN tag *FileEntry)
ULONG UDFFlushLogicalVolume(IN PtrUDFIrpContext PtrIrpContext, IN PIRP Irp, IN PVCB Vcb, IN ULONG FlushFlags)
VOID UDFCloseAllDelayed(IN PVCB Vcb)
VOID UDFVFlush(IN PVCB Vcb)
BOOLEAN UDFDirIndexInitScan(IN PUDF_FILE_INFO DirInfo, OUT PUDF_DIR_SCAN_CONTEXT Context, IN uint_di Index)
OSSTATUS WCacheFlushBlocks__(IN PW_CACHE Cache, IN PVOID Context, IN lba_t Lba, IN ULONG BCount)
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
ULONG NTAPI ExIsResourceAcquiredSharedLite(IN PERESOURCE Resource)
NTSTATUS NTAPI UDFFlush(PDEVICE_OBJECT DeviceObject, PIRP Irp)
#define UDFHasAStreamDir(FI)
#define _SEH2_EXCEPT(...)
struct _UDFFileControlBlock * Fcb
#define UDF_NTREQ_FCB_MODIFIED
VOID UDFPreClrModified(IN PVCB Vcb)
VOID UDFClrModified(IN PVCB Vcb)