mirror of
https://github.com/reactos/reactos.git
synced 2024-11-19 13:33:42 +00:00
527f2f9057
* Create a branch for some evul shell experiments. svn path=/branches/shell-experiments/; revision=61927
288 lines
7.6 KiB
C
288 lines
7.6 KiB
C
/*
|
|
* PROJECT: ReactOS FAT file system driver
|
|
* LICENSE: GNU GPLv3 as published by the Free Software Foundation
|
|
* FILE: drivers/filesystems/fastfat/fastio.c
|
|
* PURPOSE: Fast IO routines
|
|
* PROGRAMMERS: Herve Poussineau (hpoussin@reactos.org)
|
|
*/
|
|
|
|
/* INCLUDES *****************************************************************/
|
|
|
|
#define NDEBUG
|
|
#include "fastfat.h"
|
|
|
|
/* FUNCTIONS ****************************************************************/
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatFastIoCheckIfPossible(IN PFILE_OBJECT FileObject,
|
|
IN PLARGE_INTEGER FileOffset,
|
|
IN ULONG Length,
|
|
IN BOOLEAN Wait,
|
|
IN ULONG LockKey,
|
|
IN BOOLEAN CheckForReadOperation,
|
|
OUT PIO_STATUS_BLOCK IoStatus,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
/* Prevent all Fast I/O requests */
|
|
DPRINT("FatFastIoCheckIfPossible(): returning FALSE.\n");
|
|
return FALSE;
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatFastIoRead(IN PFILE_OBJECT FileObject,
|
|
IN PLARGE_INTEGER FileOffset,
|
|
IN ULONG Length,
|
|
IN BOOLEAN Wait,
|
|
IN ULONG LockKey,
|
|
OUT PVOID Buffer,
|
|
OUT PIO_STATUS_BLOCK IoStatus,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatFastIoRead()\n");
|
|
return FALSE;
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatFastIoWrite(IN PFILE_OBJECT FileObject,
|
|
IN PLARGE_INTEGER FileOffset,
|
|
IN ULONG Length,
|
|
IN BOOLEAN Wait,
|
|
IN ULONG LockKey,
|
|
OUT PVOID Buffer,
|
|
OUT PIO_STATUS_BLOCK IoStatus,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatFastIoWrite()\n");
|
|
return FALSE;
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatFastIoQueryBasicInfo(IN PFILE_OBJECT FileObject,
|
|
IN BOOLEAN Wait,
|
|
OUT PFILE_BASIC_INFORMATION Buffer,
|
|
OUT PIO_STATUS_BLOCK IoStatus,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatFastIoQueryBasicInfo()\n");
|
|
return FALSE;
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatFastIoQueryStandardInfo(IN PFILE_OBJECT FileObject,
|
|
IN BOOLEAN Wait,
|
|
OUT PFILE_STANDARD_INFORMATION Buffer,
|
|
OUT PIO_STATUS_BLOCK IoStatus,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatFastIoQueryStandardInfo\n");
|
|
return FALSE;
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatFastIoLock(IN PFILE_OBJECT FileObject,
|
|
IN PLARGE_INTEGER FileOffset,
|
|
IN PLARGE_INTEGER Length,
|
|
PEPROCESS ProcessId,
|
|
ULONG Key,
|
|
BOOLEAN FailImmediately,
|
|
BOOLEAN ExclusiveLock,
|
|
OUT PIO_STATUS_BLOCK IoStatus,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatFastIoLock\n");
|
|
return FALSE;
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatFastIoUnlockSingle(IN PFILE_OBJECT FileObject,
|
|
IN PLARGE_INTEGER FileOffset,
|
|
IN PLARGE_INTEGER Length,
|
|
PEPROCESS ProcessId,
|
|
ULONG Key,
|
|
OUT PIO_STATUS_BLOCK IoStatus,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatFastIoUnlockSingle\n");
|
|
return FALSE;
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatFastIoUnlockAll(IN PFILE_OBJECT FileObject,
|
|
PEPROCESS ProcessId,
|
|
OUT PIO_STATUS_BLOCK IoStatus,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatFastIoUnlockAll\n");
|
|
return FALSE;
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatFastIoUnlockAllByKey(IN PFILE_OBJECT FileObject,
|
|
PVOID ProcessId,
|
|
ULONG Key,
|
|
OUT PIO_STATUS_BLOCK IoStatus,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatFastIoUnlockAllByKey\n");
|
|
return FALSE;
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatFastIoQueryNetworkOpenInfo(IN PFILE_OBJECT FileObject,
|
|
IN BOOLEAN Wait,
|
|
OUT PFILE_NETWORK_OPEN_INFORMATION Buffer,
|
|
OUT PIO_STATUS_BLOCK IoStatus,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatFastIoQueryNetworkOpenInfo\n");
|
|
return FALSE;
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatMdlRead(IN PFILE_OBJECT FileObject,
|
|
IN PLARGE_INTEGER FileOffset,
|
|
IN ULONG Length,
|
|
IN ULONG LockKey,
|
|
OUT PMDL* MdlChain,
|
|
OUT PIO_STATUS_BLOCK IoStatus,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatMdlRead\n");
|
|
return FALSE;
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatMdlReadComplete(IN PFILE_OBJECT FileObject,
|
|
IN PMDL MdlChain,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatMdlReadComplete\n");
|
|
return FALSE;
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatPrepareMdlWrite(IN PFILE_OBJECT FileObject,
|
|
IN PLARGE_INTEGER FileOffset,
|
|
IN ULONG Length,
|
|
IN ULONG LockKey,
|
|
OUT PMDL* MdlChain,
|
|
OUT PIO_STATUS_BLOCK IoStatus,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatPrepareMdlWrite\n");
|
|
return FALSE;
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatMdlWriteComplete(IN PFILE_OBJECT FileObject,
|
|
IN PLARGE_INTEGER FileOffset,
|
|
IN PMDL MdlChain,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatMdlWriteComplete\n");
|
|
return FALSE;
|
|
}
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
FatAcquireForCcFlush(IN PFILE_OBJECT FileObject,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatAcquireForCcFlush\n");
|
|
return STATUS_SUCCESS;
|
|
}
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
FatReleaseForCcFlush(IN PFILE_OBJECT FileObject,
|
|
IN PDEVICE_OBJECT DeviceObject)
|
|
{
|
|
DPRINT("FatReleaseForCcFlush\n");
|
|
return STATUS_SUCCESS;
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatAcquireForLazyWrite(IN PVOID Context,
|
|
IN BOOLEAN Wait)
|
|
{
|
|
DPRINT("FatAcquireForLazyWrite()\n");
|
|
return FALSE;
|
|
}
|
|
|
|
VOID
|
|
NTAPI
|
|
FatReleaseFromLazyWrite(IN PVOID Context)
|
|
{
|
|
DPRINT("FatReleaseFromLazyWrite()\n");
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatAcquireForReadAhead(IN PVOID Context,
|
|
IN BOOLEAN Wait)
|
|
{
|
|
DPRINT("FatAcquireForReadAhead()\n");
|
|
return FALSE;
|
|
}
|
|
|
|
VOID
|
|
NTAPI
|
|
FatReleaseFromReadAhead(IN PVOID Context)
|
|
{
|
|
DPRINT("FatReleaseFromReadAhead()\n");
|
|
}
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
FatNoopAcquire(IN PVOID Context,
|
|
IN BOOLEAN Wait)
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
VOID
|
|
NTAPI
|
|
FatNoopRelease(IN PVOID Context)
|
|
{
|
|
}
|
|
|
|
|
|
VOID
|
|
FatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch)
|
|
{
|
|
/* Set Fast I/O dispatcher callbacks */
|
|
FastIoDispatch->SizeOfFastIoDispatch = sizeof(FAST_IO_DISPATCH);
|
|
FastIoDispatch->FastIoCheckIfPossible = FatFastIoCheckIfPossible;
|
|
FastIoDispatch->FastIoRead = FatFastIoRead;
|
|
FastIoDispatch->FastIoWrite = FatFastIoWrite;
|
|
FastIoDispatch->FastIoQueryBasicInfo = FatFastIoQueryBasicInfo;
|
|
FastIoDispatch->FastIoQueryStandardInfo = FatFastIoQueryStandardInfo;
|
|
FastIoDispatch->FastIoLock = FatFastIoLock;
|
|
FastIoDispatch->FastIoUnlockSingle = FatFastIoUnlockSingle;
|
|
FastIoDispatch->FastIoUnlockAll = FatFastIoUnlockAll;
|
|
FastIoDispatch->FastIoUnlockAllByKey = FatFastIoUnlockAllByKey;
|
|
FastIoDispatch->FastIoQueryNetworkOpenInfo = FatFastIoQueryNetworkOpenInfo;
|
|
FastIoDispatch->MdlRead = FatMdlRead;
|
|
FastIoDispatch->MdlReadComplete = FatMdlReadComplete;
|
|
FastIoDispatch->PrepareMdlWrite = FatPrepareMdlWrite;
|
|
FastIoDispatch->MdlWriteComplete = FatMdlWriteComplete;
|
|
FastIoDispatch->AcquireForCcFlush = FatAcquireForCcFlush;
|
|
FastIoDispatch->ReleaseForCcFlush = FatReleaseForCcFlush;
|
|
}
|
|
|
|
/* EOF */
|