20#define UDF_BUG_CHECK_ID UDF_FILE_FAST_IO
71 MmPrint((
" UDFFastIoCheckIfPossible() TRUE, Failed\n"));
108 MmPrint((
" UDFFastIoCheckIfPossible() %s\n", ReturnedStatus ?
"TRUE" :
"FALSE"));
109 return(ReturnedStatus);
124 UDFPrint((
" FastIoIsNotPossible\n"));
135 UDFPrint((
" FastIoIsQuestionable\n"));
199 MainResourceAcquired =
TRUE;
214 if (MainResourceAcquired) {
217 MainResourceAcquired =
FALSE;
229 return(ReturnedStatus);
321 return(ReturnedStatus);
348 MmPrint((
" AcqForCreateSection()\n"));
354 MmPrint((
" already acquired\n"));
392 MmPrint((
" RelFromCreateSection()\n"));
432 MmPrint((
" UDFAcqLazyWrite()\n"));
480 MmPrint((
" UDFRelLazyWrite()\n"));
522#define NtReqFcb ((PtrUDFNTRequiredFCB)Context)
524 MmPrint((
" AcqForReadAhead()\n"));
564#define NtReqFcb ((PtrUDFNTRequiredFCB)Context)
566 MmPrint((
" RelFromReadAhead()\n"));
581#if(_WIN32_WINNT >= 0x0400)
601UDFFastIoQueryNetInfo(
640 MainResourceAcquired =
TRUE;
655 if (MainResourceAcquired) {
658 MainResourceAcquired =
FALSE;
670 return(ReturnedStatus);
932#define NtReqFcb ((PtrUDFNTRequiredFCB)(FileObject->FsContext))
960 (*ResourceToRelease) = &(
NtReqFcb->PagingIoResource);
1001#define NtReqFcb ((PtrUDFNTRequiredFCB)(FileObject->FsContext))
1052#define NtReqFcb ((PtrUDFNTRequiredFCB)(FileObject->FsContext))
1096#define NtReqFcb ((PtrUDFNTRequiredFCB)(FileObject->FsContext))
1181 if(
Fcb->
Vcb->VerifyCtx.QueuedCount ||
1183 AdPrint((
" Verify queue overflow -> UDFFastIoCopyWrite() = FALSE\n"));
1186 if(
Fcb->NTRequiredFCB->SectionObject.DataSectionObject &&
1191 MmPrint((
" no FastIo 16Mb\n"));
_In_ PFCB _In_ LONGLONG FileOffset
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
NTSTATUS UDFExceptionHandler(PtrUDFIrpContext PtrIrpContext, PIRP Irp)
VOID UDFLogEvent(NTSTATUS UDFEventLogId, NTSTATUS RC)
long UDFExceptionFilter(PtrUDFIrpContext PtrIrpContext, PEXCEPTION_POINTERS PtrExceptionPointers)
#define UDFReleaseResource(Resource)
#define UDFAcquireResourceShared(Resource, CanWait)
#define UDFAcquireResourceExclusive(Resource, CanWait)
#define UDF_ERROR_INTERNAL_ERROR
BOOLEAN NTAPI UDFAcqReadAhead(IN PVOID Context, IN BOOLEAN Wait)
VOID NTAPI UDFFastIoRelCreateSec(IN PFILE_OBJECT FileObject)
BOOLEAN NTAPI UDFFastIoCopyWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, IN PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
FAST_IO_POSSIBLE NTAPI UDFIsFastIoPossible(IN PtrUDFFCB Fcb)
VOID NTAPI UDFRelReadAhead(IN PVOID Context)
BOOLEAN NTAPI UDFAcqLazyWrite(IN PVOID Context, IN BOOLEAN Wait)
BOOLEAN NTAPI UDFFastIoQueryStdInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_STANDARD_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
VOID NTAPI UDFRelLazyWrite(IN PVOID Context)
VOID NTAPI UDFFastIoAcqCreateSec(IN PFILE_OBJECT FileObject)
BOOLEAN NTAPI UDFFastIoQueryBasicInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, OUT PFILE_BASIC_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
BOOLEAN NTAPI UDFFastIoCheckIfPossible(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, IN BOOLEAN CheckForReadOperation, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG LockKey
IN PLARGE_INTEGER IN ULONG IN BOOLEAN IN ULONG IN BOOLEAN CheckForReadOperation
NTSTATUS UDFGetBasicInformation(IN PFILE_OBJECT FileObject, IN PtrUDFFCB Fcb, IN PFILE_BASIC_INFORMATION PtrBuffer, IN OUT LONG *PtrReturnedLength)
NTSTATUS UDFGetNetworkInformation(IN PtrUDFFCB Fcb, IN PFILE_NETWORK_OPEN_INFORMATION PtrBuffer, IN OUT PLONG PtrReturnedLength)
NTSTATUS UDFGetStandardInformation(IN PtrUDFFCB Fcb, IN PFILE_STANDARD_INFORMATION PtrBuffer, IN OUT LONG *PtrReturnedLength)
BOOLEAN NTAPI FsRtlFastCheckLockForWrite(IN PFILE_LOCK FileLock, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, IN ULONG Key, IN PFILE_OBJECT FileObject, IN PVOID Process)
BOOLEAN NTAPI FsRtlFastCheckLockForRead(IN PFILE_LOCK FileLock, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, IN ULONG Key, IN PFILE_OBJECT FileObject, IN PVOID Process)
struct _FILE_NETWORK_OPEN_INFORMATION FILE_NETWORK_OPEN_INFORMATION
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
#define FsRtlAreThereCurrentFileLocks(FL)
#define FSRTL_CACHE_TOP_LEVEL_IRP
enum _FAST_IO_POSSIBLE FAST_IO_POSSIBLE
#define FILE_STANDARD_INFORMATION
#define FILE_BASIC_INFORMATION
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
_In_ ULONG _In_ ULONG _In_ ULONG Length
BOOLEAN NTAPI ExIsResourceAcquiredExclusiveLite(IN PERESOURCE Resource)
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)
PIRP NTAPI IoGetTopLevelIrp(VOID)
VOID NTAPI IoSetTopLevelIrp(IN PIRP Irp)
#define _SEH2_EXCEPT(...)
#define _SEH2_GetExceptionInformation()
#define UDF_FCB_PAGE_FILE
struct _UDFNTRequiredFCB * PtrUDFNTRequiredFCB
struct _UDFContextControlBlock * PtrUDFCCB
#define UDF_NODE_TYPE_VCB
#define UDF_FCB_DIRECTORY
struct _FCB::@729::@732 Fcb
#define UDF_VCB_FLAGS_VOLUME_MOUNTED
#define UDF_MAX_VERIFY_CACHE
#define STATUS_INVALID_PARAMETER
#define UDF_CHECK_PAGING_IO_RESOURCE(NTReqFCB)
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_In_ WDFDPC _In_ BOOLEAN Wait
_In_ PLARGE_INTEGER _Out_ struct _ERESOURCE ** ResourceToRelease
_In_ PLARGE_INTEGER EndingOffset
#define PsGetCurrentProcess