diff --git a/reactos/drivers/filesystems/fastfat_new/fastio.c b/reactos/drivers/filesystems/fastfat_new/fastio.c index c7d3d552502..ab9ea61abf3 100644 --- a/reactos/drivers/filesystems/fastfat_new/fastio.c +++ b/reactos/drivers/filesystems/fastfat_new/fastio.c @@ -1,16 +1,21 @@ /* - * FILE: drivers/fs/vfat/fastio.c - * PURPOSE: Fast IO routines. - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * PROGRAMMER: Herve Poussineau (hpoussin@reactos.org) + * PROJECT: ReactOS FAT file system driver + * LICENSE: GPL - See COPYING in the top level directory + * FILE: drivers/filesystems/fastfat/fastio.c + * PURPOSE: Fast IO routines + * PROGRAMMERS: Herve Poussineau (hpoussin@reactos.org) */ +/* INCLUDES *****************************************************************/ + #define NDEBUG #include "fastfat.h" -static BOOLEAN NTAPI -VfatFastIoCheckIfPossible(IN PFILE_OBJECT FileObject, +/* FUNCTIONS ****************************************************************/ + +BOOLEAN +NTAPI +FatFastIoCheckIfPossible(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Lenght, IN BOOLEAN Wait, @@ -19,311 +24,195 @@ VfatFastIoCheckIfPossible(IN PFILE_OBJECT FileObject, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject) { - /* Prevent all Fast I/O requests */ - DPRINT("VfatFastIoCheckIfPossible(): returning FALSE.\n"); - return FALSE; + /* Prevent all Fast I/O requests */ + DPRINT("FatFastIoCheckIfPossible(): returning FALSE.\n"); + return FALSE; } -static BOOLEAN NTAPI -VfatFastIoRead(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, +BOOLEAN +NTAPI +FatFastIoRead(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) { - DPRINT("VfatFastIoRead()\n"); - return FALSE; + DPRINT("FatFastIoRead()\n"); + return FALSE; } -static BOOLEAN NTAPI -VfatFastIoWrite(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) +BOOLEAN +NTAPI +FatFastIoWrite(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) { - DPRINT("VfatFastIoWrite()\n"); - return FALSE; + DPRINT("FatFastIoWrite()\n"); + return FALSE; } -static BOOLEAN NTAPI -VfatFastIoQueryBasicInfo(IN PFILE_OBJECT FileObject, - IN BOOLEAN Wait, - OUT PFILE_BASIC_INFORMATION Buffer, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject) +BOOLEAN +NTAPI +FatFastIoQueryBasicInfo(IN PFILE_OBJECT FileObject, + IN BOOLEAN Wait, + OUT PFILE_BASIC_INFORMATION Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject) { - DPRINT("VfatFastIoQueryBasicInfo()\n"); - return FALSE; + DPRINT("FatFastIoQueryBasicInfo()\n"); + return FALSE; } -static BOOLEAN NTAPI -VfatFastIoQueryStandardInfo(IN PFILE_OBJECT FileObject, - IN BOOLEAN Wait, - OUT PFILE_STANDARD_INFORMATION Buffer, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject) +BOOLEAN +NTAPI +FatFastIoQueryStandardInfo(IN PFILE_OBJECT FileObject, + IN BOOLEAN Wait, + OUT PFILE_STANDARD_INFORMATION Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject) { - DPRINT("VfatFastIoQueryStandardInfo\n"); - return FALSE; + DPRINT("FatFastIoQueryStandardInfo\n"); + return FALSE; } -static BOOLEAN NTAPI -VfatFastIoLock(IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN PLARGE_INTEGER Length, - PEPROCESS ProcessId, - ULONG Key, - BOOLEAN FailImmediately, - BOOLEAN ExclusiveLock, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject) +BOOLEAN +NTAPI +FatFastIoLock(IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PLARGE_INTEGER Length, + PEPROCESS ProcessId, + ULONG Key, + BOOLEAN FailImmediately, + BOOLEAN ExclusiveLock, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject) { - DPRINT("VfatFastIoLock\n"); - return FALSE; + DPRINT("FatFastIoLock\n"); + return FALSE; } -static BOOLEAN NTAPI -VfatFastIoUnlockSingle(IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN PLARGE_INTEGER Length, - PEPROCESS ProcessId, - ULONG Key, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject) +BOOLEAN +NTAPI +FatFastIoUnlockSingle(IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PLARGE_INTEGER Length, + PEPROCESS ProcessId, + ULONG Key, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject) { - DPRINT("VfatFastIoUnlockSingle\n"); - return FALSE; + DPRINT("FatFastIoUnlockSingle\n"); + return FALSE; } -static BOOLEAN NTAPI -VfatFastIoUnlockAll(IN PFILE_OBJECT FileObject, - PEPROCESS ProcessId, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject) +BOOLEAN +NTAPI +FatFastIoUnlockAll(IN PFILE_OBJECT FileObject, + PEPROCESS ProcessId, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject) { - DPRINT("VfatFastIoUnlockAll\n"); - return FALSE; + DPRINT("FatFastIoUnlockAll\n"); + return FALSE; } -static BOOLEAN NTAPI -VfatFastIoUnlockAllByKey(IN PFILE_OBJECT FileObject, - PVOID ProcessId, - ULONG Key, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject) +BOOLEAN +NTAPI +FatFastIoUnlockAllByKey(IN PFILE_OBJECT FileObject, + PVOID ProcessId, + ULONG Key, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject) { - DPRINT("VfatFastIoUnlockAllByKey\n"); - return FALSE; + DPRINT("FatFastIoUnlockAllByKey\n"); + return FALSE; } -static BOOLEAN NTAPI -VfatFastIoDeviceControl(IN PFILE_OBJECT FileObject, - IN BOOLEAN Wait, - IN PVOID InputBuffer OPTIONAL, - IN ULONG InputBufferLength, - OUT PVOID OutputBuffer OPTIONAL, - IN ULONG OutputBufferLength, - IN ULONG IoControlCode, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject) -{ - DPRINT("VfatFastIoDeviceControl\n"); - return FALSE; -} - -static VOID NTAPI -VfatAcquireFileForNtCreateSection(IN PFILE_OBJECT FileObject) -{ - DPRINT("VfatAcquireFileForNtCreateSection\n"); -} - -static VOID NTAPI -VfatReleaseFileForNtCreateSection(IN PFILE_OBJECT FileObject) -{ - DPRINT("VfatReleaseFileForNtCreateSection\n"); -} - -static VOID NTAPI -VfatFastIoDetachDevice(IN PDEVICE_OBJECT SourceDevice, - IN PDEVICE_OBJECT TargetDevice) -{ - DPRINT("VfatFastIoDetachDevice\n"); -} - -static BOOLEAN NTAPI -VfatFastIoQueryNetworkOpenInfo(IN PFILE_OBJECT FileObject, +BOOLEAN +NTAPI +FatFastIoQueryNetworkOpenInfo(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, - OUT PFILE_NETWORK_OPEN_INFORMATION Buffer, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject) + OUT PFILE_NETWORK_OPEN_INFORMATION Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject) { - DPRINT("VfatFastIoQueryNetworkOpenInfo\n"); - return FALSE; + DPRINT("FatFastIoQueryNetworkOpenInfo\n"); + return FALSE; } -static NTSTATUS NTAPI -VfatAcquireForModWrite(IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER EndingOffset, - OUT PERESOURCE* ResourceToRelease, - IN PDEVICE_OBJECT DeviceObject) +BOOLEAN +NTAPI +FatMdlRead(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) { - DPRINT("VfatAcquireForModWrite\n"); - return STATUS_INVALID_DEVICE_REQUEST; + DPRINT("FatMdlRead\n"); + return FALSE; } -static BOOLEAN NTAPI -VfatMdlRead(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) +BOOLEAN +NTAPI +FatMdlReadComplete(IN PFILE_OBJECT FileObject, + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject) { - DPRINT("VfatMdlRead\n"); - return FALSE; + DPRINT("FatMdlReadComplete\n"); + return FALSE; } -static BOOLEAN NTAPI -VfatMdlReadComplete(IN PFILE_OBJECT FileObject, - IN PMDL MdlChain, - IN PDEVICE_OBJECT DeviceObject) +BOOLEAN +NTAPI +FatPrepareMdlWrite(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) { - DPRINT("VfatMdlReadComplete\n"); - return FALSE; + DPRINT("FatPrepareMdlWrite\n"); + return FALSE; } -static BOOLEAN NTAPI -VfatPrepareMdlWrite(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) +BOOLEAN +NTAPI +FatMdlWriteComplete(IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject) { - DPRINT("VfatPrepareMdlWrite\n"); - return FALSE; + DPRINT("FatMdlWriteComplete\n"); + return FALSE; } -static BOOLEAN NTAPI -VfatMdlWriteComplete(IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN PMDL MdlChain, - IN PDEVICE_OBJECT DeviceObject) +NTSTATUS +NTAPI +FatAcquireForCcFlush(IN PFILE_OBJECT FileObject, + IN PDEVICE_OBJECT DeviceObject) { - DPRINT("VfatMdlWriteComplete\n"); - return FALSE; + DPRINT("FatAcquireForCcFlush\n"); + return STATUS_SUCCESS; } -static BOOLEAN NTAPI -VfatFastIoReadCompressed(IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG LockKey, - OUT PVOID Buffer, - OUT PMDL* MdlChain, - OUT PIO_STATUS_BLOCK IoStatus, - OUT PCOMPRESSED_DATA_INFO CompressedDataInfo, - IN ULONG CompressedDataInfoLength, - IN PDEVICE_OBJECT DeviceObject) +NTSTATUS +NTAPI +FatReleaseForCcFlush(IN PFILE_OBJECT FileObject, + IN PDEVICE_OBJECT DeviceObject) { - DPRINT("VfatFastIoReadCompressed\n"); - return FALSE; -} - -static BOOLEAN NTAPI -VfatFastIoWriteCompressed(IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Length, - IN ULONG LockKey, - IN PVOID Buffer, - OUT PMDL* MdlChain, - OUT PIO_STATUS_BLOCK IoStatus, - IN PCOMPRESSED_DATA_INFO CompressedDataInfo, - IN ULONG CompressedDataInfoLength, - IN PDEVICE_OBJECT DeviceObject) -{ - DPRINT("VfatFastIoWriteCompressed\n"); - return FALSE; -} - -static BOOLEAN NTAPI -VfatMdlReadCompleteCompressed(IN PFILE_OBJECT FileObject, - IN PMDL MdlChain, - IN PDEVICE_OBJECT DeviceObject) -{ - DPRINT("VfatMdlReadCompleteCompressed\n"); - return FALSE; -} - -static BOOLEAN NTAPI -VfatMdlWriteCompleteCompressed(IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN PMDL MdlChain, - IN PDEVICE_OBJECT DeviceObject) -{ - DPRINT("VfatMdlWriteCompleteCompressed\n"); - return FALSE; -} - -static BOOLEAN NTAPI -VfatFastIoQueryOpen(IN PIRP Irp, - OUT PFILE_NETWORK_OPEN_INFORMATION NetworkInformation, - IN PDEVICE_OBJECT DeviceObject) -{ - DPRINT("VfatFastIoQueryOpen\n"); - return FALSE; -} - -static NTSTATUS NTAPI -VfatReleaseForModWrite(IN PFILE_OBJECT FileObject, - IN PERESOURCE ResourceToRelease, - IN PDEVICE_OBJECT DeviceObject) -{ - DPRINT("VfatReleaseForModWrite\n"); - return STATUS_INVALID_DEVICE_REQUEST; -} - -static NTSTATUS NTAPI -VfatAcquireForCcFlush(IN PFILE_OBJECT FileObject, - IN PDEVICE_OBJECT DeviceObject) -{ - PVFATFCB Fcb = (PVFATFCB)FileObject->FsContext; - - DPRINT("VfatAcquireForCcFlush\n"); - - /* Make sure it is not a volume lock */ - ASSERT(!(Fcb->Flags & FCB_IS_VOLUME)); - - /* Acquire the resource */ - ExAcquireResourceExclusiveLite(&(Fcb->MainResource), TRUE); - - return STATUS_SUCCESS; -} - -static NTSTATUS NTAPI -VfatReleaseForCcFlush(IN PFILE_OBJECT FileObject, - IN PDEVICE_OBJECT DeviceObject) -{ - PVFATFCB Fcb = (PVFATFCB)FileObject->FsContext; - - DPRINT("VfatReleaseForCcFlush\n"); - - /* Make sure it is not a volume lock */ - ASSERT(!(Fcb->Flags & FCB_IS_VOLUME)); - - /* Release the resource */ - ExReleaseResourceLite(&(Fcb->MainResource)); - - return STATUS_SUCCESS; + DPRINT("FatReleaseForCcFlush\n"); + return STATUS_SUCCESS; } BOOLEAN @@ -331,27 +220,15 @@ NTAPI FatAcquireForLazyWrite(IN PVOID Context, IN BOOLEAN Wait) { - PVFATFCB Fcb = (PVFATFCB)Context; - ASSERT(Fcb); - DPRINT("VfatAcquireForLazyWrite(): Fcb %p\n", Fcb); - - if (!ExAcquireResourceExclusiveLite(&(Fcb->MainResource), Wait)) - { - DPRINT("VfatAcquireForLazyWrite(): ExReleaseResourceLite failed.\n"); - return FALSE; - } - return TRUE; + DPRINT("FatAcquireForLazyWrite()\n"); + return FALSE; } VOID NTAPI FatReleaseFromLazyWrite(IN PVOID Context) { - PVFATFCB Fcb = (PVFATFCB)Context; - ASSERT(Fcb); - DPRINT("VfatReleaseFromLazyWrite(): Fcb %p\n", Fcb); - - ExReleaseResourceLite(&(Fcb->MainResource)); + DPRINT("FatReleaseFromLazyWrite()\n"); } BOOLEAN @@ -359,27 +236,15 @@ NTAPI FatAcquireForReadAhead(IN PVOID Context, IN BOOLEAN Wait) { - PVFATFCB Fcb = (PVFATFCB)Context; - ASSERT(Fcb); - DPRINT("VfatAcquireForReadAhead(): Fcb %p\n", Fcb); - - if (!ExAcquireResourceExclusiveLite(&(Fcb->MainResource), Wait)) - { - DPRINT("VfatAcquireForReadAhead(): ExReleaseResourceLite failed.\n"); - return FALSE; - } - return TRUE; + DPRINT("FatAcquireForReadAhead()\n"); + return FALSE; } VOID NTAPI FatReleaseFromReadAhead(IN PVOID Context) { - PVFATFCB Fcb = (PVFATFCB)Context; - ASSERT(Fcb); - DPRINT("VfatReleaseFromReadAhead(): Fcb %p\n", Fcb); - - ExReleaseResourceLite(&(Fcb->MainResource)); + DPRINT("FatReleaseFromReadAhead()\n"); } BOOLEAN @@ -400,33 +265,24 @@ FatNoopRelease(IN PVOID Context) VOID FatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch) { - FastIoDispatch->SizeOfFastIoDispatch = sizeof(FAST_IO_DISPATCH); - FastIoDispatch->FastIoCheckIfPossible = VfatFastIoCheckIfPossible; - FastIoDispatch->FastIoRead = VfatFastIoRead; - FastIoDispatch->FastIoWrite = VfatFastIoWrite; - FastIoDispatch->FastIoQueryBasicInfo = VfatFastIoQueryBasicInfo; - FastIoDispatch->FastIoQueryStandardInfo = VfatFastIoQueryStandardInfo; - FastIoDispatch->FastIoLock = VfatFastIoLock; - FastIoDispatch->FastIoUnlockSingle = VfatFastIoUnlockSingle; - FastIoDispatch->FastIoUnlockAll = VfatFastIoUnlockAll; - FastIoDispatch->FastIoUnlockAllByKey = VfatFastIoUnlockAllByKey; - FastIoDispatch->FastIoDeviceControl = VfatFastIoDeviceControl; - FastIoDispatch->AcquireFileForNtCreateSection = VfatAcquireFileForNtCreateSection; - FastIoDispatch->ReleaseFileForNtCreateSection = VfatReleaseFileForNtCreateSection; - FastIoDispatch->FastIoDetachDevice = VfatFastIoDetachDevice; - FastIoDispatch->FastIoQueryNetworkOpenInfo = VfatFastIoQueryNetworkOpenInfo; - FastIoDispatch->MdlRead = VfatMdlRead; - FastIoDispatch->MdlReadComplete = VfatMdlReadComplete; - FastIoDispatch->PrepareMdlWrite = VfatPrepareMdlWrite; - FastIoDispatch->MdlWriteComplete = VfatMdlWriteComplete; - FastIoDispatch->FastIoReadCompressed = VfatFastIoReadCompressed; - FastIoDispatch->FastIoWriteCompressed = VfatFastIoWriteCompressed; - FastIoDispatch->MdlReadCompleteCompressed = VfatMdlReadCompleteCompressed; - FastIoDispatch->MdlWriteCompleteCompressed = VfatMdlWriteCompleteCompressed; - FastIoDispatch->FastIoQueryOpen = VfatFastIoQueryOpen; - FastIoDispatch->AcquireForModWrite = VfatAcquireForModWrite; - FastIoDispatch->ReleaseForModWrite = VfatReleaseForModWrite; - FastIoDispatch->AcquireForCcFlush = VfatAcquireForCcFlush; - FastIoDispatch->ReleaseForCcFlush = VfatReleaseForCcFlush; + /* Set Fast I/O dispatcher callbacks */ + FastIoDispatch->SizeOfFastIoDispatch = sizeof(FAST_IO_DISPATCH); + FastIoDispatch->FastIoCheckIfPossible = FatFastIoCheckIfPossible; + FastIoDispatch->FastIoRead = FatFastIoRead; + FastIoDispatch->FastIoWrite = FatFastIoWrite; + FastIoDispatch->FastIoQueryBasicInfo = FatFastIoQueryBasicInfo; + FastIoDispatch->FastIoQueryStandardInfo = FatFastIoQueryStandardInfo; + FastIoDispatch->FastIoLock = FatFastIoLock; + FastIoDispatch->FastIoUnlockSingle = FatFastIoUnlockSingle; + FastIoDispatch->FastIoUnlockAll = FatFastIoUnlockAll; + FastIoDispatch->FastIoUnlockAllByKey = FatFastIoUnlockAllByKey; + FastIoDispatch->FastIoQueryNetworkOpenInfo = FatFastIoQueryNetworkOpenInfo; + FastIoDispatch->MdlRead = FatMdlRead; + FastIoDispatch->MdlReadComplete = FatMdlReadComplete; + FastIoDispatch->PrepareMdlWrite = FatPrepareMdlWrite; + FastIoDispatch->MdlWriteComplete = FatMdlWriteComplete; + FastIoDispatch->AcquireForCcFlush = FatAcquireForCcFlush; + FastIoDispatch->ReleaseForCcFlush = FatReleaseForCcFlush; } +/* EOF */