- Implemented dummy stubs for all fast io entry points. W2K does ignore the IsFastIoPossible variable of the fcb. - Fixed the directory index of a file for FATX. Modified: trunk/reactos/drivers/fs/vfat/fastio.c _____
Modified: trunk/reactos/drivers/fs/vfat/fastio.c --- trunk/reactos/drivers/fs/vfat/fastio.c 2005-01-25 21:08:54 UTC (rev 13278) +++ trunk/reactos/drivers/fs/vfat/fastio.c 2005-01-25 21:09:55 UTC (rev 13279) @@ -1,4 +1,4 @@
-/* $Id: +/* $Id$ * * * FILE: drivers/fs/vfat/fastio.c @@ -6,12 +6,13 @@ * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * PROGRAMMER: Herve Poussineau (reactos@poussine.freesurf.fr) + * Hartmut Birr */
#define NDEBUG #include "vfat.h"
-BOOLEAN NTAPI +BOOLEAN STDCALL VfatFastIoCheckIfPossible(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Lenght, @@ -26,7 +27,291 @@ return FALSE; }
-BOOLEAN NTAPI +BOOLEAN STDCALL +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, + IN PDEVICE_OBJECT DeviceObject) +{ + DPRINT("VfatFastIoRead()\n"); + return FALSE; +} + +BOOLEAN STDCALL +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) +{ + DPRINT("VfatFastIoWrite()\n"); + return FALSE; +} + +BOOLEAN STDCALL +VfatFastIoQueryBasicInfo(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; +} + +BOOLEAN STDCALL +VfatFastIoQueryStandardInfo(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; +} + +BOOLEAN STDCALL +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) +{ + DPRINT("VfatFastIoLock\n"); + return FALSE; +} + +BOOLEAN STDCALL +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) +{ + DPRINT("VfatFastIoUnlockSingle\n"); + return FALSE; +} + +BOOLEAN STDCALL +VfatFastIoUnlockAll(IN PFILE_OBJECT FileObject, + PEPROCESS ProcessId, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject) +{ + DPRINT("VfatFastIoUnlockAll\n"); + return FALSE; +} + +BOOLEAN STDCALL +VfatFastIoUnlockAllByKey(IN PFILE_OBJECT FileObject, + PEPROCESS ProcessId, + ULONG Key, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject) +{ + DPRINT("VfatFastIoUnlockAllByKey\n"); + return FALSE; +} + +BOOLEAN STDCALL +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; +} + +VOID STDCALL +VfatAcquireFileForNtCreateSection(IN PFILE_OBJECT FileObject) +{ + DPRINT("VfatAcquireFileForNtCreateSection\n"); +} + +VOID STDCALL +VfatReleaseFileForNtCreateSection(IN PFILE_OBJECT FileObject) +{ + DPRINT("VfatReleaseFileForNtCreateSection\n"); +} + +VOID STDCALL +VfatFastIoDetachDevice(IN PDEVICE_OBJECT SourceDevice, + IN PDEVICE_OBJECT TargetDevice) +{ + DPRINT("VfatFastIoDetachDevice\n"); +} + +BOOLEAN STDCALL +VfatFastIoQueryNetworkOpenInfo(IN PFILE_OBJECT FileObject, + IN BOOLEAN Wait, + OUT PFILE_NETWORK_OPEN_INFORMATION Buffer, + OUT PIO_STATUS_BLOCK IoStatus, + IN PDEVICE_OBJECT DeviceObject) +{ + DPRINT("VfatFastIoQueryNetworkOpenInfo\n"); + return FALSE; +} + +NTSTATUS STDCALL +VfatAcquireForModWrite(IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER EndingOffset, + OUT PERESOURCE* ResourceToRelease, + IN PDEVICE_OBJECT DeviceObject) +{ + DPRINT("VfatAcquireForModWrite\n"); + return STATUS_UNSUCCESSFUL; +} + +BOOLEAN STDCALL +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) +{ + DPRINT("VfatMdlRead\n"); + return FALSE; +} + +BOOLEAN STDCALL +VfatMdlReadComplete(IN PFILE_OBJECT FileObject, + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject) +{ + DPRINT("VfatMdlReadComplete\n"); + return FALSE; +} + +BOOLEAN STDCALL +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) +{ + DPRINT("VfatPrepareMdlWrite\n"); + return FALSE; +} + +BOOLEAN STDCALL +VfatMdlWriteComplete(IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject) +{ + DPRINT("VfatMdlWriteComplete\n"); + return FALSE; +} + +BOOLEAN STDCALL +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) +{ + DPRINT("VfatFastIoReadCompressed\n"); + return FALSE; +} + +BOOLEAN STDCALL +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; +} + +BOOLEAN STDCALL +VfatMdlReadCompleteCompressed(IN PFILE_OBJECT FileObject, + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject) +{ + DPRINT("VfatMdlReadCompleteCompressed\n"); + return FALSE; +} + +BOOLEAN STDCALL +VfatMdlWriteCompleteCompressed(IN PFILE_OBJECT FileObject, + IN PLARGE_INTEGER FileOffset, + IN PMDL MdlChain, + IN PDEVICE_OBJECT DeviceObject) +{ + DPRINT("VfatMdlWriteCompleteCompressed\n"); + return FALSE; +} + +BOOLEAN STDCALL +VfatFastIoQueryOpen(IN PIRP Irp, + OUT PFILE_NETWORK_OPEN_INFORMATION NetworkInformation, + IN PDEVICE_OBJECT DeviceObject) +{ + DPRINT("VfatFastIoQueryOpen\n"); + return FALSE; +} + +NTSTATUS STDCALL +VfatReleaseForModWrite(IN PFILE_OBJECT FileObject, + IN PERESOURCE ResourceToRelease, + IN PDEVICE_OBJECT DeviceObject) +{ + DPRINT("VfatReleaseForModWrite\n"); + return STATUS_UNSUCCESSFUL; +} + +NTSTATUS STDCALL +VfatAcquireForCcFlush(IN PFILE_OBJECT FileObject, + IN PDEVICE_OBJECT DeviceObject) +{ + DPRINT("VfatAcquireForCcFlush\n"); + return STATUS_UNSUCCESSFUL; +} + +NTSTATUS STDCALL +VfatReleaseForCcFlush(IN PFILE_OBJECT FileObject, + IN PDEVICE_OBJECT DeviceObject) +{ + DPRINT("VfatReleaseForCcFlush\n"); + return STATUS_UNSUCCESSFUL; +} + +BOOLEAN STDCALL VfatAcquireForLazyWrite(IN PVOID Context, IN BOOLEAN Wait) { @@ -42,7 +327,7 @@ return TRUE; }
-VOID NTAPI +VOID STDCALL VfatReleaseFromLazyWrite(IN PVOID Context) { PVFATFCB Fcb = (PVFATFCB)Context; @@ -52,7 +337,7 @@ ExReleaseResourceLite(&(Fcb->MainResource)); }
-BOOLEAN NTAPI +BOOLEAN STDCALL VfatAcquireForReadAhead(IN PVOID Context, IN BOOLEAN Wait) { @@ -68,7 +353,7 @@ return TRUE; }
-VOID NTAPI +VOID STDCALL VfatReleaseFromReadAhead(IN PVOID Context) { PVFATFCB Fcb = (PVFATFCB)Context; @@ -77,3 +362,38 @@ ExReleaseResourceLite(&(Fcb->MainResource)); } + +VOID +VfatInitFastIoRoutines(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->AcquireForModWrite = VfatAcquireForModWrite; + 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->ReleaseForModWrite = VfatReleaseForModWrite; + FastIoDispatch->AcquireForCcFlush = VfatAcquireForCcFlush; + FastIoDispatch->ReleaseForCcFlush = VfatReleaseForCcFlush; +} + +