- Allow the second device name RosFat to make it possible to load vfatfs on W2k if fastfat is already loaded. - Moved the initialisation of the callback and fast io functions to fastio.c. Modified: trunk/reactos/drivers/fs/vfat/iface.c Modified: trunk/reactos/drivers/fs/vfat/vfat.h _____
Modified: trunk/reactos/drivers/fs/vfat/iface.c --- trunk/reactos/drivers/fs/vfat/iface.c 2005-01-25 21:11:46 UTC (rev 13281) +++ trunk/reactos/drivers/fs/vfat/iface.c 2005-01-25 21:12:52 UTC (rev 13282) @@ -49,7 +49,6 @@
{ PDEVICE_OBJECT DeviceObject; UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\Fat"); - PFAST_IO_DISPATCH pFastIoDispatch; NTSTATUS Status;
Status = IoCreateDevice(DriverObject, @@ -61,7 +60,23 @@ &DeviceObject); if (!NT_SUCCESS(Status)) { - return (Status); + if (Status == STATUS_OBJECT_NAME_EXISTS || + Status == STATUS_OBJECT_NAME_COLLISION) + { + /* Try an other name, if 'Fat' is already in use. 'Fat' is also used by fastfat.sys on W2K */ + RtlInitUnicodeString(&DeviceName, L"\RosFat"); + Status = IoCreateDevice(DriverObject, + sizeof(VFAT_GLOBAL_DATA), + &DeviceName, + FILE_DEVICE_DISK_FILE_SYSTEM, + 0, + FALSE, + &DeviceObject); + if (!NT_SUCCESS(Status)) + { + return (Status); + } + } } VfatGlobalData = DeviceObject->DeviceExtension; RtlZeroMemory (VfatGlobalData, sizeof(VFAT_GLOBAL_DATA)); @@ -95,9 +110,8 @@ VfatGlobalData->CacheMgrCallbacks.ReleaseFromReadAhead = VfatReleaseFromReadAhead;
/* Fast I/O */ - DriverObject->FastIoDispatch = pFastIoDispatch = &VfatGlobalData->FastIoDispatch; - pFastIoDispatch->SizeOfFastIoDispatch = sizeof(FAST_IO_DISPATCH); - pFastIoDispatch->FastIoCheckIfPossible = VfatFastIoCheckIfPossible; + VfatInitFastIoRoutines(&VfatGlobalData->FastIoDispatch); + DriverObject->FastIoDispatch = &VfatGlobalData->FastIoDispatch;
/* Private lists */ ExInitializeNPagedLookasideList(&VfatGlobalData->FcbLookasideList, _____
Modified: trunk/reactos/drivers/fs/vfat/vfat.h --- trunk/reactos/drivers/fs/vfat/vfat.h 2005-01-25 21:11:46 UTC (rev 13281) +++ trunk/reactos/drivers/fs/vfat/vfat.h 2005-01-25 21:12:52 UTC (rev 13282) @@ -511,15 +511,8 @@
/* --------------------------------------------------------- fastio.c */
-BOOLEAN NTAPI -VfatFastIoCheckIfPossible(IN PFILE_OBJECT FileObject, - IN PLARGE_INTEGER FileOffset, - IN ULONG Lenght, - IN BOOLEAN Wait, - IN ULONG LockKey, - IN BOOLEAN CheckForReadOperation, - OUT PIO_STATUS_BLOCK IoStatus, - IN PDEVICE_OBJECT DeviceObject); +VOID +VfatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch);
BOOLEAN NTAPI VfatAcquireForLazyWrite(IN PVOID Context,