- Rewrite DriverEntry.

- Start cleaning up structures.

svn path=/trunk/; revision=38700
This commit is contained in:
Aleksey Bragin 2009-01-11 15:58:57 +00:00
parent 981645312e
commit a2c47e5c86
13 changed files with 168 additions and 159 deletions

View file

@ -24,7 +24,7 @@ VfatReadDisk (IN PDEVICE_OBJECT pDeviceObject,
} }
NTSTATUS NTSTATUS
VfatReadDiskPartial (IN PVFAT_IRP_CONTEXT IrpContext, VfatReadDiskPartial (IN PFAT_IRP_CONTEXT IrpContext,
IN PLARGE_INTEGER ReadOffset, IN PLARGE_INTEGER ReadOffset,
IN ULONG ReadLength, IN ULONG ReadLength,
ULONG BufferOffset, ULONG BufferOffset,
@ -35,7 +35,7 @@ VfatReadDiskPartial (IN PVFAT_IRP_CONTEXT IrpContext,
NTSTATUS NTSTATUS
VfatWriteDiskPartial (IN PVFAT_IRP_CONTEXT IrpContext, VfatWriteDiskPartial (IN PFAT_IRP_CONTEXT IrpContext,
IN PLARGE_INTEGER WriteOffset, IN PLARGE_INTEGER WriteOffset,
IN ULONG WriteLength, IN ULONG WriteLength,
IN ULONG BufferOffset, IN ULONG BufferOffset,

View file

@ -14,7 +14,7 @@
/* FUNCTIONS ****************************************************************/ /* FUNCTIONS ****************************************************************/
NTSTATUS NTSTATUS
VfatCleanup(PVFAT_IRP_CONTEXT IrpContext) VfatCleanup(PFAT_IRP_CONTEXT IrpContext)
{ {
DPRINT("VfatCleanup(DeviceObject %p, Irp %p)\n", IrpContext->DeviceObject, IrpContext->Irp); DPRINT("VfatCleanup(DeviceObject %p, Irp %p)\n", IrpContext->DeviceObject, IrpContext->Irp);

View file

@ -14,7 +14,7 @@
/* FUNCTIONS ****************************************************************/ /* FUNCTIONS ****************************************************************/
NTSTATUS NTSTATUS
VfatClose(PVFAT_IRP_CONTEXT IrpContext) VfatClose(PFAT_IRP_CONTEXT IrpContext)
{ {
DPRINT("VfatClose(DeviceObject %p, Irp %p)\n", IrpContext->DeviceObject, IrpContext->Irp); DPRINT("VfatClose(DeviceObject %p, Irp %p)\n", IrpContext->DeviceObject, IrpContext->Irp);

View file

@ -14,7 +14,7 @@
/* FUNCTIONS *****************************************************************/ /* FUNCTIONS *****************************************************************/
NTSTATUS NTSTATUS
VfatCreate(PVFAT_IRP_CONTEXT IrpContext) VfatCreate(PFAT_IRP_CONTEXT IrpContext)
{ {
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }

View file

@ -14,7 +14,7 @@
/* FUNCTIONS *****************************************************************/ /* FUNCTIONS *****************************************************************/
NTSTATUS NTSTATUS
VfatDirectoryControl(PVFAT_IRP_CONTEXT IrpContext) VfatDirectoryControl(PFAT_IRP_CONTEXT IrpContext)
{ {
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }

View file

@ -1,26 +1,9 @@
/* /*
* ReactOS kernel * PROJECT: ReactOS FAT file system driver
* Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team * LICENSE: GPL - See COPYING in the top level directory
* * FILE: drivers/filesystems/fastfat/fastfat.c
* This program is free software; you can redistribute it and/or modify * PURPOSE: Initialization routines
* it under the terms of the GNU General Public License as published by * PROGRAMMERS: Aleksey Bragin (aleksey@reactos.org)
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
* PROJECT: ReactOS kernel
* FILE: drivers/fs/vfat/iface.c
* PURPOSE: VFAT Filesystem
* PROGRAMMER: Jason Filby (jasonfilby@yahoo.com)
*/ */
/* INCLUDES *****************************************************************/ /* INCLUDES *****************************************************************/
@ -28,103 +11,104 @@
#define NDEBUG #define NDEBUG
#include "fastfat.h" #include "fastfat.h"
/* GLOBALS *****************************************************************/ /* GLOBALS ******************************************************************/
PVFAT_GLOBAL_DATA VfatGlobalData; FAT_GLOBAL_DATA FatGlobalData;
/* FUNCTIONS ****************************************************************/ /* FUNCTIONS ****************************************************************/
NTSTATUS NTAPI NTSTATUS
NTAPI
DriverEntry(PDRIVER_OBJECT DriverObject, DriverEntry(PDRIVER_OBJECT DriverObject,
PUNICODE_STRING RegistryPath) PUNICODE_STRING RegistryPath)
/*
* FUNCTION: Called by the system to initialize the driver
* ARGUMENTS:
* DriverObject = object describing this driver
* RegistryPath = path to our configuration entries
* RETURNS: Success or failure
*/
{ {
PDEVICE_OBJECT DeviceObject; PDEVICE_OBJECT DeviceObject;
UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Fat"); UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Fat");
NTSTATUS Status; NTSTATUS Status;
Status = IoCreateDevice(DriverObject, /* Create a device object */
sizeof(VFAT_GLOBAL_DATA), Status = IoCreateDevice(DriverObject,
&DeviceName, 0,
FILE_DEVICE_DISK_FILE_SYSTEM, &DeviceName,
0, FILE_DEVICE_DISK_FILE_SYSTEM,
FALSE, 0,
&DeviceObject); FALSE,
&DeviceObject);
if (Status == STATUS_OBJECT_NAME_EXISTS || if (!NT_SUCCESS(Status)) return Status;
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);
}
/* Zero global storage */
RtlZeroMemory(&FatGlobalData, sizeof(FAT_GLOBAL_DATA));
FatGlobalData.DriverObject = DriverObject;
FatGlobalData.DiskDeviceObject = DeviceObject;
// TODO: Fill major function handlers
#if 0
DriverObject->MajorFunction[IRP_MJ_CLOSE] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_CREATE] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_READ] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_WRITE] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] =
VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_SET_VOLUME_INFORMATION] =
VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = VfatShutdown;
DriverObject->MajorFunction[IRP_MJ_LOCK_CONTROL] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_CLEANUP] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_FLUSH_BUFFERS] = VfatBuildRequest;
#endif
if (!NT_SUCCESS(Status)) DriverObject->DriverUnload = NULL;
{
return (Status);
}
VfatGlobalData = DeviceObject->DeviceExtension; /* Initialize cache manager callbacks */
RtlZeroMemory (VfatGlobalData, sizeof(VFAT_GLOBAL_DATA)); FatGlobalData.CacheMgrCallbacks.AcquireForLazyWrite = FatAcquireForLazyWrite;
VfatGlobalData->DriverObject = DriverObject; FatGlobalData.CacheMgrCallbacks.ReleaseFromLazyWrite = FatReleaseFromLazyWrite;
VfatGlobalData->DeviceObject = DeviceObject; FatGlobalData.CacheMgrCallbacks.AcquireForReadAhead = FatAcquireForReadAhead;
FatGlobalData.CacheMgrCallbacks.ReleaseFromReadAhead = FatReleaseFromReadAhead;
DeviceObject->Flags |= DO_DIRECT_IO; FatGlobalData.CacheMgrCallbacks.AcquireForLazyWrite = FatNoopAcquire;
/*DriverObject->MajorFunction[IRP_MJ_CLOSE] = VfatBuildRequest; FatGlobalData.CacheMgrCallbacks.ReleaseFromLazyWrite = FatNoopRelease;
DriverObject->MajorFunction[IRP_MJ_CREATE] = VfatBuildRequest; FatGlobalData.CacheMgrCallbacks.AcquireForReadAhead = FatNoopAcquire;
DriverObject->MajorFunction[IRP_MJ_READ] = VfatBuildRequest; FatGlobalData.CacheMgrCallbacks.ReleaseFromReadAhead = FatNoopRelease;
DriverObject->MajorFunction[IRP_MJ_WRITE] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] =
VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_SET_VOLUME_INFORMATION] =
VfatBuildRequest;*/
DriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = VfatShutdown;
/*DriverObject->MajorFunction[IRP_MJ_LOCK_CONTROL] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_CLEANUP] = VfatBuildRequest;
DriverObject->MajorFunction[IRP_MJ_FLUSH_BUFFERS] = VfatBuildRequest;*/
DriverObject->DriverUnload = NULL; /* Initialize Fast I/O dispatchers */
FatInitFastIoRoutines(&FatGlobalData.FastIoDispatch);
DriverObject->FastIoDispatch = &FatGlobalData.FastIoDispatch;
/* Cache manager */ /* Initialize lookaside lists */
VfatGlobalData->CacheMgrCallbacks.AcquireForLazyWrite = VfatAcquireForLazyWrite; ExInitializeNPagedLookasideList(&FatGlobalData.NonPagedFcbList,
VfatGlobalData->CacheMgrCallbacks.ReleaseFromLazyWrite = VfatReleaseFromLazyWrite; NULL,
VfatGlobalData->CacheMgrCallbacks.AcquireForReadAhead = VfatAcquireForReadAhead; NULL,
VfatGlobalData->CacheMgrCallbacks.ReleaseFromReadAhead = VfatReleaseFromReadAhead; 0,
sizeof(VFATFCB),
TAG_FCB,
0);
/* Fast I/O */ ExInitializeNPagedLookasideList(&FatGlobalData.ResourceList,
VfatInitFastIoRoutines(&VfatGlobalData->FastIoDispatch); NULL,
DriverObject->FastIoDispatch = &VfatGlobalData->FastIoDispatch; NULL,
0,
sizeof(ERESOURCE),
TAG_CCB,
0);
/* Private lists */ ExInitializeNPagedLookasideList(&FatGlobalData.IrpContextList,
ExInitializeNPagedLookasideList(&VfatGlobalData->FcbLookasideList, NULL,
NULL, NULL, 0, sizeof(VFATFCB), TAG_FCB, 0); NULL,
ExInitializeNPagedLookasideList(&VfatGlobalData->CcbLookasideList, 0,
NULL, NULL, 0, sizeof(VFATCCB), TAG_CCB, 0); sizeof(FAT_IRP_CONTEXT),
ExInitializeNPagedLookasideList(&VfatGlobalData->IrpContextLookasideList, TAG_IRP,
NULL, NULL, 0, sizeof(VFAT_IRP_CONTEXT), TAG_IRP, 0); 0);
ExInitializeResourceLite(&VfatGlobalData->VolumeListLock); /* Register and reference our filesystem */
InitializeListHead(&VfatGlobalData->VolumeListHead); IoRegisterFileSystem(DeviceObject);
IoRegisterFileSystem(DeviceObject); ObReferenceObject(DeviceObject);
return(STATUS_SUCCESS);
return STATUS_SUCCESS;
} }
/* EOF */ /* EOF */

View file

@ -296,19 +296,17 @@ typedef struct DEVICE_EXTENSION
typedef struct typedef struct
{ {
PDRIVER_OBJECT DriverObject; PDRIVER_OBJECT DriverObject;
PDEVICE_OBJECT DeviceObject; PDEVICE_OBJECT DiskDeviceObject;
ULONG Flags; NPAGED_LOOKASIDE_LIST NonPagedFcbList;
ERESOURCE VolumeListLock; NPAGED_LOOKASIDE_LIST ResourceList;
LIST_ENTRY VolumeListHead; NPAGED_LOOKASIDE_LIST IrpContextList;
NPAGED_LOOKASIDE_LIST FcbLookasideList; FAST_IO_DISPATCH FastIoDispatch;
NPAGED_LOOKASIDE_LIST CcbLookasideList; CACHE_MANAGER_CALLBACKS CacheMgrCallbacks;
NPAGED_LOOKASIDE_LIST IrpContextLookasideList; CACHE_MANAGER_CALLBACKS CacheMgrNoopCallbacks;
FAST_IO_DISPATCH FastIoDispatch; } FAT_GLOBAL_DATA, *VFAT_GLOBAL_DATA;
CACHE_MANAGER_CALLBACKS CacheMgrCallbacks;
} VFAT_GLOBAL_DATA, *PVFAT_GLOBAL_DATA;
extern PVFAT_GLOBAL_DATA VfatGlobalData; extern VFAT_GLOBAL_DATA VfatGlobalData;
#define FCB_CACHE_INITIALIZED 0x0001 #define FCB_CACHE_INITIALIZED 0x0001
#define FCB_DELETE_PENDING 0x0002 #define FCB_DELETE_PENDING 0x0002
@ -449,7 +447,7 @@ typedef struct
PFILE_OBJECT FileObject; PFILE_OBJECT FileObject;
ULONG RefCount; ULONG RefCount;
KEVENT Event; KEVENT Event;
} VFAT_IRP_CONTEXT, *PVFAT_IRP_CONTEXT; } FAT_IRP_CONTEXT, *PFAT_IRP_CONTEXT;
typedef struct _VFAT_DIRENTRY_CONTEXT typedef struct _VFAT_DIRENTRY_CONTEXT
{ {
@ -469,9 +467,9 @@ NTSTATUS NTAPI VfatShutdown (PDEVICE_OBJECT DeviceObject,
/* -------------------------------------------------------- volume.c */ /* -------------------------------------------------------- volume.c */
NTSTATUS VfatQueryVolumeInformation (PVFAT_IRP_CONTEXT IrpContext); NTSTATUS VfatQueryVolumeInformation (PFAT_IRP_CONTEXT IrpContext);
NTSTATUS VfatSetVolumeInformation (PVFAT_IRP_CONTEXT IrpContext); NTSTATUS VfatSetVolumeInformation (PFAT_IRP_CONTEXT IrpContext);
/* ------------------------------------------------------ blockdev.c */ /* ------------------------------------------------------ blockdev.c */
@ -481,13 +479,13 @@ NTSTATUS VfatReadDisk(IN PDEVICE_OBJECT pDeviceObject,
IN PUCHAR Buffer, IN PUCHAR Buffer,
IN BOOLEAN Override); IN BOOLEAN Override);
NTSTATUS VfatReadDiskPartial (IN PVFAT_IRP_CONTEXT IrpContext, NTSTATUS VfatReadDiskPartial (IN PFAT_IRP_CONTEXT IrpContext,
IN PLARGE_INTEGER ReadOffset, IN PLARGE_INTEGER ReadOffset,
IN ULONG ReadLength, IN ULONG ReadLength,
IN ULONG BufferOffset, IN ULONG BufferOffset,
IN BOOLEAN Wait); IN BOOLEAN Wait);
NTSTATUS VfatWriteDiskPartial(IN PVFAT_IRP_CONTEXT IrpContext, NTSTATUS VfatWriteDiskPartial(IN PFAT_IRP_CONTEXT IrpContext,
IN PLARGE_INTEGER WriteOffset, IN PLARGE_INTEGER WriteOffset,
IN ULONG WriteLength, IN ULONG WriteLength,
IN ULONG BufferOffset, IN ULONG BufferOffset,
@ -503,7 +501,7 @@ NTSTATUS VfatBlockDeviceIoControl (IN PDEVICE_OBJECT DeviceObject,
/* ----------------------------------------------------------- dir.c */ /* ----------------------------------------------------------- dir.c */
NTSTATUS VfatDirectoryControl (PVFAT_IRP_CONTEXT); NTSTATUS VfatDirectoryControl (PFAT_IRP_CONTEXT);
BOOLEAN FsdDosDateTimeToSystemTime (PDEVICE_EXTENSION DeviceExt, BOOLEAN FsdDosDateTimeToSystemTime (PDEVICE_EXTENSION DeviceExt,
USHORT DosDate, USHORT DosDate,
@ -517,7 +515,7 @@ BOOLEAN FsdSystemTimeToDosDateTime (PDEVICE_EXTENSION DeviceExt,
/* -------------------------------------------------------- create.c */ /* -------------------------------------------------------- create.c */
NTSTATUS VfatCreate (PVFAT_IRP_CONTEXT IrpContext); NTSTATUS VfatCreate (PFAT_IRP_CONTEXT IrpContext);
NTSTATUS FindFile (PDEVICE_EXTENSION DeviceExt, NTSTATUS FindFile (PDEVICE_EXTENSION DeviceExt,
PVFATFCB Parent, PVFATFCB Parent,
@ -533,43 +531,51 @@ NTSTATUS ReadVolumeLabel(PDEVICE_EXTENSION DeviceExt,
/* --------------------------------------------------------- close.c */ /* --------------------------------------------------------- close.c */
NTSTATUS VfatClose (PVFAT_IRP_CONTEXT IrpContext); NTSTATUS VfatClose (PFAT_IRP_CONTEXT IrpContext);
NTSTATUS VfatCloseFile(PDEVICE_EXTENSION DeviceExt, NTSTATUS VfatCloseFile(PDEVICE_EXTENSION DeviceExt,
PFILE_OBJECT FileObject); PFILE_OBJECT FileObject);
/* ------------------------------------------------------- cleanup.c */ /* ------------------------------------------------------- cleanup.c */
NTSTATUS VfatCleanup (PVFAT_IRP_CONTEXT IrpContext); NTSTATUS VfatCleanup (PFAT_IRP_CONTEXT IrpContext);
/* --------------------------------------------------------- fastio.c */ /* --------------------------------------------------------- fastio.c */
VOID VOID
VfatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch); FatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch);
BOOLEAN NTAPI BOOLEAN NTAPI
VfatAcquireForLazyWrite(IN PVOID Context, FatAcquireForLazyWrite(IN PVOID Context,
IN BOOLEAN Wait); IN BOOLEAN Wait);
VOID NTAPI VOID NTAPI
VfatReleaseFromLazyWrite(IN PVOID Context); FatReleaseFromLazyWrite(IN PVOID Context);
BOOLEAN NTAPI BOOLEAN NTAPI
VfatAcquireForReadAhead(IN PVOID Context, FatAcquireForReadAhead(IN PVOID Context,
IN BOOLEAN Wait); IN BOOLEAN Wait);
VOID NTAPI VOID NTAPI
VfatReleaseFromReadAhead(IN PVOID Context); FatReleaseFromReadAhead(IN PVOID Context);
BOOLEAN NTAPI
FatNoopAcquire(IN PVOID Context,
IN BOOLEAN Wait);
VOID NTAPI
FatNoopRelease(IN PVOID Context);
/* --------------------------------------------------------- fsctl.c */ /* --------------------------------------------------------- fsctl.c */
NTSTATUS VfatFileSystemControl (PVFAT_IRP_CONTEXT IrpContext); NTSTATUS VfatFileSystemControl (PFAT_IRP_CONTEXT IrpContext);
/* --------------------------------------------------------- finfo.c */ /* --------------------------------------------------------- finfo.c */
NTSTATUS VfatQueryInformation (PVFAT_IRP_CONTEXT IrpContext); NTSTATUS VfatQueryInformation (PFAT_IRP_CONTEXT IrpContext);
NTSTATUS VfatSetInformation (PVFAT_IRP_CONTEXT IrpContext); NTSTATUS VfatSetInformation (PFAT_IRP_CONTEXT IrpContext);
NTSTATUS NTSTATUS
VfatSetAllocationSizeInformation(PFILE_OBJECT FileObject, VfatSetAllocationSizeInformation(PFILE_OBJECT FileObject,
@ -745,9 +751,9 @@ NTSTATUS vfatMakeFCBFromDirEntry (PVCB vcb,
/* ------------------------------------------------------------ rw.c */ /* ------------------------------------------------------------ rw.c */
NTSTATUS VfatRead (PVFAT_IRP_CONTEXT IrpContext); NTSTATUS VfatRead (PFAT_IRP_CONTEXT IrpContext);
NTSTATUS VfatWrite (PVFAT_IRP_CONTEXT IrpContext); NTSTATUS VfatWrite (PFAT_IRP_CONTEXT IrpContext);
NTSTATUS NextCluster(PDEVICE_EXTENSION DeviceExt, NTSTATUS NextCluster(PDEVICE_EXTENSION DeviceExt,
ULONG FirstCluster, ULONG FirstCluster,
@ -756,12 +762,12 @@ NTSTATUS NextCluster(PDEVICE_EXTENSION DeviceExt,
/* ----------------------------------------------------------- misc.c */ /* ----------------------------------------------------------- misc.c */
NTSTATUS VfatQueueRequest(PVFAT_IRP_CONTEXT IrpContext); NTSTATUS VfatQueueRequest(PFAT_IRP_CONTEXT IrpContext);
PVFAT_IRP_CONTEXT VfatAllocateIrpContext(PDEVICE_OBJECT DeviceObject, PFAT_IRP_CONTEXT VfatAllocateIrpContext(PDEVICE_OBJECT DeviceObject,
PIRP Irp); PIRP Irp);
VOID VfatFreeIrpContext(PVFAT_IRP_CONTEXT IrpContext); VOID VfatFreeIrpContext(PFAT_IRP_CONTEXT IrpContext);
DRIVER_DISPATCH VfatBuildRequest; DRIVER_DISPATCH VfatBuildRequest;
NTSTATUS NTAPI VfatBuildRequest (PDEVICE_OBJECT DeviceObject, NTSTATUS NTAPI VfatBuildRequest (PDEVICE_OBJECT DeviceObject,
@ -778,7 +784,7 @@ VfatSetExtendedAttributes(PFILE_OBJECT FileObject,
ULONG EaLength); ULONG EaLength);
/* ------------------------------------------------------------- flush.c */ /* ------------------------------------------------------------- flush.c */
NTSTATUS VfatFlush(PVFAT_IRP_CONTEXT IrpContext); NTSTATUS VfatFlush(PFAT_IRP_CONTEXT IrpContext);
NTSTATUS VfatFlushVolume(PDEVICE_EXTENSION DeviceExt, PVFATFCB VolumeFcb); NTSTATUS VfatFlushVolume(PDEVICE_EXTENSION DeviceExt, PVFATFCB VolumeFcb);

View file

@ -326,8 +326,9 @@ VfatReleaseForCcFlush(IN PFILE_OBJECT FileObject,
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
BOOLEAN NTAPI BOOLEAN
VfatAcquireForLazyWrite(IN PVOID Context, NTAPI
FatAcquireForLazyWrite(IN PVOID Context,
IN BOOLEAN Wait) IN BOOLEAN Wait)
{ {
PVFATFCB Fcb = (PVFATFCB)Context; PVFATFCB Fcb = (PVFATFCB)Context;
@ -342,8 +343,9 @@ VfatAcquireForLazyWrite(IN PVOID Context,
return TRUE; return TRUE;
} }
VOID NTAPI VOID
VfatReleaseFromLazyWrite(IN PVOID Context) NTAPI
FatReleaseFromLazyWrite(IN PVOID Context)
{ {
PVFATFCB Fcb = (PVFATFCB)Context; PVFATFCB Fcb = (PVFATFCB)Context;
ASSERT(Fcb); ASSERT(Fcb);
@ -352,8 +354,9 @@ VfatReleaseFromLazyWrite(IN PVOID Context)
ExReleaseResourceLite(&(Fcb->MainResource)); ExReleaseResourceLite(&(Fcb->MainResource));
} }
BOOLEAN NTAPI BOOLEAN
VfatAcquireForReadAhead(IN PVOID Context, NTAPI
FatAcquireForReadAhead(IN PVOID Context,
IN BOOLEAN Wait) IN BOOLEAN Wait)
{ {
PVFATFCB Fcb = (PVFATFCB)Context; PVFATFCB Fcb = (PVFATFCB)Context;
@ -368,8 +371,9 @@ VfatAcquireForReadAhead(IN PVOID Context,
return TRUE; return TRUE;
} }
VOID NTAPI VOID
VfatReleaseFromReadAhead(IN PVOID Context) NTAPI
FatReleaseFromReadAhead(IN PVOID Context)
{ {
PVFATFCB Fcb = (PVFATFCB)Context; PVFATFCB Fcb = (PVFATFCB)Context;
ASSERT(Fcb); ASSERT(Fcb);
@ -378,8 +382,23 @@ VfatReleaseFromReadAhead(IN PVOID Context)
ExReleaseResourceLite(&(Fcb->MainResource)); ExReleaseResourceLite(&(Fcb->MainResource));
} }
BOOLEAN
NTAPI
FatNoopAcquire(IN PVOID Context,
IN BOOLEAN Wait)
{
return TRUE;
}
VOID VOID
VfatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch) NTAPI
FatNoopRelease(IN PVOID Context)
{
}
VOID
FatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch)
{ {
FastIoDispatch->SizeOfFastIoDispatch = sizeof(FAST_IO_DISPATCH); FastIoDispatch->SizeOfFastIoDispatch = sizeof(FAST_IO_DISPATCH);
FastIoDispatch->FastIoCheckIfPossible = VfatFastIoCheckIfPossible; FastIoDispatch->FastIoCheckIfPossible = VfatFastIoCheckIfPossible;

View file

@ -13,12 +13,12 @@
/* FUNCTIONS ****************************************************************/ /* FUNCTIONS ****************************************************************/
NTSTATUS VfatQueryInformation(PVFAT_IRP_CONTEXT IrpContext) NTSTATUS VfatQueryInformation(PFAT_IRP_CONTEXT IrpContext)
{ {
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }
NTSTATUS VfatSetInformation(PVFAT_IRP_CONTEXT IrpContext) NTSTATUS VfatSetInformation(PFAT_IRP_CONTEXT IrpContext)
{ {
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }

View file

@ -21,7 +21,7 @@ NTSTATUS VfatFlushVolume(PDEVICE_EXTENSION DeviceExt, PVFATFCB VolumeFcb)
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }
NTSTATUS VfatFlush(PVFAT_IRP_CONTEXT IrpContext) NTSTATUS VfatFlush(PFAT_IRP_CONTEXT IrpContext)
{ {
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }

View file

@ -14,7 +14,7 @@
/* FUNCTIONS ****************************************************************/ /* FUNCTIONS ****************************************************************/
NTSTATUS NTSTATUS
VfatFileSystemControl(PVFAT_IRP_CONTEXT IrpContext) VfatFileSystemControl(PFAT_IRP_CONTEXT IrpContext)
{ {
DPRINT("VfatFileSystemControl(IrpContext %p)\n", IrpContext); DPRINT("VfatFileSystemControl(IrpContext %p)\n", IrpContext);

View file

@ -14,13 +14,13 @@
/* FUNCTIONS *****************************************************************/ /* FUNCTIONS *****************************************************************/
NTSTATUS NTSTATUS
VfatRead(PVFAT_IRP_CONTEXT IrpContext) VfatRead(PFAT_IRP_CONTEXT IrpContext)
{ {
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }
NTSTATUS NTSTATUS
VfatWrite(PVFAT_IRP_CONTEXT IrpContext) VfatWrite(PFAT_IRP_CONTEXT IrpContext)
{ {
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }

View file

@ -14,13 +14,13 @@
/* FUNCTIONS ****************************************************************/ /* FUNCTIONS ****************************************************************/
NTSTATUS NTSTATUS
VfatQueryVolumeInformation(PVFAT_IRP_CONTEXT IrpContext) VfatQueryVolumeInformation(PFAT_IRP_CONTEXT IrpContext)
{ {
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }
NTSTATUS NTSTATUS
VfatSetVolumeInformation(PVFAT_IRP_CONTEXT IrpContext) VfatSetVolumeInformation(PFAT_IRP_CONTEXT IrpContext)
{ {
return STATUS_NOT_IMPLEMENTED; return STATUS_NOT_IMPLEMENTED;
} }