mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 17:05:46 +00:00
- Rewrite DriverEntry.
- Start cleaning up structures. svn path=/trunk/; revision=38700
This commit is contained in:
parent
981645312e
commit
a2c47e5c86
13 changed files with 168 additions and 159 deletions
|
@ -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,
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue