- 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;
+}
+
+