- 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,