Added request routine for IRP_MJ_CLEANUP

svn path=/trunk/; revision=1672
This commit is contained in:
Eric Kohl 2001-03-07 13:44:41 +00:00
parent 3073e95ed9
commit 05428a2fea
5 changed files with 96 additions and 44 deletions

View file

@ -0,0 +1,58 @@
/* $Id: cleanup.c,v 1.1 2001/03/07 13:44:40 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* FILE: services/fs/vfat/cleanup.c
* PURPOSE: VFAT Filesystem
* PROGRAMMER: Jason Filby (jasonfilby@yahoo.com)
*/
/* INCLUDES *****************************************************************/
#include <ddk/ntddk.h>
#define NDEBUG
#include <debug.h>
#include "vfat.h"
/* FUNCTIONS ****************************************************************/
static NTSTATUS
VfatCleanupFile(PDEVICE_EXTENSION DeviceExt,
PFILE_OBJECT FileObject)
/*
* FUNCTION: Cleans up after a file has been closed.
*/
{
DPRINT("VfatCleanupFile(DeviceExt %x, FileObject %x)\n",
DeviceExt, FileObject);
/* FIXME: handle file/directory deletion here */
return STATUS_SUCCESS;
}
NTSTATUS STDCALL
VfatCleanup (PDEVICE_OBJECT DeviceObject, PIRP Irp)
/*
* FUNCTION: Cleans up after a file has been closed.
*/
{
PIO_STACK_LOCATION Stack = IoGetCurrentIrpStackLocation (Irp);
PFILE_OBJECT FileObject = Stack->FileObject;
PDEVICE_EXTENSION DeviceExtension = DeviceObject->DeviceExtension;
NTSTATUS Status;
DPRINT1("VfatCleanup(DeviceObject %x, Irp %x)\n", DeviceObject, Irp);
Status = VfatCleanupFile(DeviceExtension, FileObject);
Irp->IoStatus.Status = Status;
Irp->IoStatus.Information = 0;
IoCompleteRequest (Irp, IO_NO_INCREMENT);
return (Status);
}
/* EOF */

View file

@ -1,4 +1,4 @@
/* $Id: finfo.c,v 1.6 2001/03/06 23:36:35 cnettel Exp $
/* $Id: finfo.c,v 1.7 2001/03/07 13:44:40 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
@ -20,8 +20,9 @@
/* FUNCTIONS ****************************************************************/
NTSTATUS
VfatGetStandardInformation (PVFATFCB FCB, PDEVICE_OBJECT DeviceObject,
static NTSTATUS
VfatGetStandardInformation(PVFATFCB FCB,
PDEVICE_OBJECT DeviceObject,
PFILE_STANDARD_INFORMATION StandardInfo)
/*
* FUNCTION: Retrieve the standard file information
@ -61,8 +62,8 @@ VfatGetStandardInformation (PVFATFCB FCB, PDEVICE_OBJECT DeviceObject,
return STATUS_SUCCESS;
}
NTSTATUS
VfatSetPositionInformation (PFILE_OBJECT FileObject,
static NTSTATUS
VfatSetPositionInformation(PFILE_OBJECT FileObject,
PVFATFCB FCB,
PDEVICE_OBJECT DeviceObject,
PFILE_POSITION_INFORMATION PositionInfo)
@ -77,8 +78,8 @@ VfatSetPositionInformation (PFILE_OBJECT FileObject,
return (STATUS_SUCCESS);
}
NTSTATUS
VfatGetPositionInformation (PFILE_OBJECT FileObject,
static NTSTATUS
VfatGetPositionInformation(PFILE_OBJECT FileObject,
PVFATFCB FCB,
PDEVICE_OBJECT DeviceObject,
PFILE_POSITION_INFORMATION PositionInfo)
@ -91,8 +92,8 @@ VfatGetPositionInformation (PFILE_OBJECT FileObject,
return (STATUS_SUCCESS);
}
NTSTATUS
VfatGetBasicInformation (PFILE_OBJECT FileObject,
static NTSTATUS
VfatGetBasicInformation(PFILE_OBJECT FileObject,
PVFATFCB FCB,
PDEVICE_OBJECT DeviceObject,
PFILE_BASIC_INFORMATION BasicInfo)
@ -116,8 +117,8 @@ VfatGetBasicInformation (PFILE_OBJECT FileObject,
}
NTSTATUS
VfatSetDispositionInformation (PFILE_OBJECT FileObject,
static NTSTATUS
VfatSetDispositionInformation(PFILE_OBJECT FileObject,
PVFATFCB FCB,
PDEVICE_OBJECT DeviceObject,
PFILE_DISPOSITION_INFORMATION DispositionInfo)
@ -257,6 +258,11 @@ VfatSetInformation (PDEVICE_OBJECT DeviceObject, PIRP Irp)
RC = VfatSetDispositionInformation (FileObject,
FCB, DeviceObject, SystemBuffer);
break;
// case FileBasicInformation:
// case FileAllocationInformation:
// case FileEndOfFileInformation:
// case FileRenameInformation:
// case FileLinkInformation:
default:
RC = STATUS_NOT_IMPLEMENTED;
}

View file

@ -1,4 +1,4 @@
/* $Id: iface.c,v 1.50 2001/03/06 08:19:58 ekohl Exp $
/* $Id: iface.c,v 1.51 2001/03/07 13:44:40 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
@ -330,6 +330,7 @@ DriverEntry (PDRIVER_OBJECT _DriverObject, PUNICODE_STRING RegistryPath)
VfatDriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] =
VfatQueryVolumeInformation;
VfatDriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = VfatShutdown;
VfatDriverObject->MajorFunction[IRP_MJ_CLEANUP] = VfatCleanup;
VfatDriverObject->DriverUnload = NULL;

View file

@ -1,4 +1,4 @@
# $Id: makefile,v 1.27 2001/01/14 15:05:53 dwelch Exp $
# $Id: makefile,v 1.28 2001/03/07 13:44:41 ekohl Exp $
#
#
PATH_TO_TOP = ../../..
@ -6,7 +6,7 @@ PATH_TO_TOP = ../../..
TARGET=vfatfs
OBJECTS = blockdev.o close.o create.o dir.o dirwr.o iface.o string.o fat.o \
rw.o finfo.o volume.o shutdown.o $(TARGET).coff
rw.o finfo.o volume.o shutdown.o cleanup.o $(TARGET).coff
LIBS = ../../../ntoskrnl/ntoskrnl.a
CFLAGS = -g -Wall -Werror

View file

@ -1,4 +1,4 @@
/* $Id: vfat.h,v 1.26 2001/03/02 15:59:16 cnettel Exp $ */
/* $Id: vfat.h,v 1.27 2001/03/07 13:44:41 ekohl Exp $ */
#include <ddk/ntifs.h>
@ -154,6 +154,14 @@ NTSTATUS STDCALL
VfatFileSystemControl(PDEVICE_OBJECT DeviceObject, PIRP Irp);
NTSTATUS STDCALL
VfatQueryInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
NTSTATUS STDCALL
VfatSetInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
NTSTATUS STDCALL
VfatCleanup (PDEVICE_OBJECT DeviceObject, PIRP Irp);
NTSTATUS STDCALL
VfatShutdown(PDEVICE_OBJECT DeviceObject, PIRP Irp);
NTSTATUS STDCALL
VfatQueryVolumeInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
NTSTATUS
@ -186,9 +194,6 @@ FindFile(PDEVICE_EXTENSION DeviceExt, PVFATFCB Fcb,
NTSTATUS
VfatCloseFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject);
NTSTATUS
VfatGetStandardInformation(PVFATFCB FCB, PDEVICE_OBJECT DeviceObject,
PFILE_STANDARD_INFORMATION StandardInfo);
NTSTATUS
VfatOpenFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject,
PWSTR FileName);
NTSTATUS
@ -270,18 +275,6 @@ NTSTATUS
WriteCluster (PDEVICE_EXTENSION DeviceExt, ULONG ClusterToWrite,
ULONG NewValue);
/*
* functions from volume.c
*/
NTSTATUS STDCALL
VfatQueryVolumeInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
/*
* functions from finfo.c
*/
NTSTATUS STDCALL
VfatSetInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
/*
* From create.c
*/
@ -290,9 +283,3 @@ ReadVolumeLabel(PDEVICE_EXTENSION DeviceExt, PVPB Vpb);
NTSTATUS
VfatOpenFile (PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject,
PWSTR FileName);
/*
* functions from shutdown.c
*/
NTSTATUS STDCALL VfatShutdown(PDEVICE_OBJECT DeviceObject, PIRP Irp);