+++ /dev/null
-/*************************************************************************
-*
-* File: protos.h
-*
-* Module: Ext2 File System Driver (Kernel mode execution only)
-*
-* Description:
-* Contains the prototypes for functions in this sample FSD.
-*
-* Author: Manoj Paul Joseph
-*
-*
-*************************************************************************/
-
-#ifndef _EXT2_PROTOS_H_
-#define _EXT2_PROTOS_H_
-
-#ifdef __REACTOS__
-typedef PIO_STACK_LOCATION PEXTENDED_IO_STACK_LOCATION;
-#endif
-
-/*************************************************************************
-* Prototypes for the file sfsdinit.c
-*************************************************************************/
-extern NTSTATUS NTAPI DriverEntry(
- PDRIVER_OBJECT DriverObject, // created by the I/O sub-system
- PUNICODE_STRING RegistryPath); // path to the registry key
-
-extern void NTAPI Ext2FsdInitializeFunctionPointers(
- PDRIVER_OBJECT DriverObject); // created by the I/O sub-system
-
-
-extern VOID NTAPI Ext2QueueHandlerThread(
- IN PVOID StartContext);
-
-/*************************************************************************
-* Prototypes for the file fsctrl.c
-*************************************************************************/
-
-extern NTSTATUS NTAPI Ext2FileSystemControl(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp
- );
-
-extern NTSTATUS NTAPI Ext2VerifyVolume (
- IN PIRP Irp,
- IN PIO_STACK_LOCATION IrpSp );
-
-
-/*************************************************************************
-* Prototypes for the file create.c
-*************************************************************************/
-extern NTSTATUS NTAPI Ext2Create(
-PDEVICE_OBJECT DeviceObject, // the logical volume device object
-PIRP Irp); // I/O Request Packet
-
-extern NTSTATUS NTAPI Ext2CommonCreate(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp,
-BOOLEAN FirstAttempt );
-
-extern NTSTATUS NTAPI Ext2OpenVolume(
- PtrExt2VCB PtrVCB, // volume to be opened
- PtrExt2IrpContext PtrIrpContext, // IRP context
- PIRP PtrIrp, // original/user IRP
- unsigned short ShareAccess, // share access
- PIO_SECURITY_CONTEXT PtrSecurityContext, // caller's context (incl access)
- PFILE_OBJECT PtrNewFileObject); // I/O Mgr. created file object
-
-extern NTSTATUS NTAPI Ext2OpenRootDirectory(
- PtrExt2VCB PtrVCB, // volume to be opened
- PtrExt2IrpContext PtrIrpContext, // IRP context
- PIRP PtrIrp, // original/user IRP
- unsigned short ShareAccess, // share access
- PIO_SECURITY_CONTEXT PtrSecurityContext, // caller's context (incl access)
- PFILE_OBJECT PtrNewFileObject); // I/O Mgr. created file object
-
-extern void NTAPI Ext2InitializeFCB(
- PtrExt2FCB PtrNewFCB, // FCB structure to be initialized
- PtrExt2VCB PtrVCB, // logical volume (VCB) pointer
- PtrExt2ObjectName PtrObjectName, // name of the object
- uint32 Flags, // is this a file/directory, etc.
- PFILE_OBJECT PtrFileObject);// optional file object to be initialized
-
-extern PtrExt2FCB NTAPI Ext2LocateChildFCBInCore(
- PtrExt2VCB PtrVCB,
- PUNICODE_STRING PtrName,
- ULONG ParentInodeNo );
-
-extern PtrExt2FCB NTAPI Ext2LocateFCBInCore(
- PtrExt2VCB PtrVCB,
- ULONG InodeNo );
-
-
-extern ULONG NTAPI Ext2LocateFileInDisk(
- PtrExt2VCB PtrVCB,
- PUNICODE_STRING PtrCurrentName,
- PtrExt2FCB PtrParentFCB,
- ULONG *Type );
-
-extern ULONG NTAPI Ext2CreateFile(
- PtrExt2IrpContext PtrIrpContext,
- PtrExt2VCB PtrVCB,
- PUNICODE_STRING PtrName,
- PtrExt2FCB PtrParentFCB,
- ULONG Type);
-
-extern BOOLEAN NTAPI Ext2OverwriteFile(
- PtrExt2FCB PtrFCB,
- PtrExt2IrpContext PtrIrpContext);
-
-extern BOOLEAN NTAPI Ext2SupersedeFile(
- PtrExt2FCB PtrFCB,
- PtrExt2IrpContext PtrIrpContext);
-
-/*************************************************************************
-* Prototypes for the file misc.c
-*************************************************************************/
-extern NTSTATUS NTAPI Ext2InitializeZones(
-void);
-
-extern void NTAPI Ext2DestroyZones(
-void);
-
-extern BOOLEAN NTAPI Ext2IsIrpTopLevel(
-PIRP Irp); // the IRP sent to our dispatch routine
-
-extern long NTAPI Ext2ExceptionFilter(
-PtrExt2IrpContext PtrIrpContext,
-PEXCEPTION_POINTERS PtrExceptionPointers);
-
-extern NTSTATUS NTAPI Ext2ExceptionHandler(
-PtrExt2IrpContext PtrIrpContext,
-PIRP Irp);
-
-extern void NTAPI Ext2LogEvent(
-NTSTATUS Ext2EventLogId, // the Ext2 private message id
-NTSTATUS RC); // any NT error code we wish to log ...
-
-extern PtrExt2ObjectName NTAPI Ext2AllocateObjectName(
-void);
-
-extern void NTAPI Ext2ReleaseObjectName(
-PtrExt2ObjectName PtrObjectName);
-
-extern PtrExt2CCB NTAPI Ext2AllocateCCB(
-void );
-
-extern PtrExt2FCB NTAPI Ext2GetUsedFCB(
-PtrExt2VCB PtrVCB );
-
-extern BOOLEAN NTAPI Ext2CloseClosableFCB(
-PtrExt2FCB PtrFCB );
-
-extern void NTAPI Ext2ReleaseCCB(
-PtrExt2CCB PtrCCB);
-
-extern PtrExt2FCB NTAPI Ext2AllocateFCB(
-void);
-
-extern NTSTATUS NTAPI Ext2CreateNewFCB(
-PtrExt2FCB *ReturnedFCB,
-LARGE_INTEGER AllocationSize,
-LARGE_INTEGER EndOfFile,
-PFILE_OBJECT PtrFileObject,
-PtrExt2VCB PtrVCB,
-PtrExt2ObjectName PtrObjectName);
-
-extern NTSTATUS NTAPI Ext2CreateNewCCB(
-PtrExt2CCB *ReturnedCCB,
-PtrExt2FCB PtrFCB,
-PFILE_OBJECT PtrFileObject);
-
-extern void NTAPI Ext2ReleaseFCB(
-PtrExt2FCB PtrFCB);
-
-extern PtrExt2FileLockInfo NTAPI Ext2AllocateByteLocks(
-void);
-
-extern void NTAPI Ext2ReleaseByteLocks(
-PtrExt2FileLockInfo PtrByteLocks);
-
-extern PtrExt2IrpContext NTAPI Ext2AllocateIrpContext(
-PIRP Irp,
-PDEVICE_OBJECT PtrTargetDeviceObject);
-
-extern void NTAPI Ext2ReleaseIrpContext(
-PtrExt2IrpContext PtrIrpContext);
-
-extern NTSTATUS NTAPI Ext2PostRequest(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp);
-
-extern void NTAPI Ext2CommonDispatch(
-void *Context); // actually an IRPContext structure
-
-extern void NTAPI Ext2InitializeVCB(
-PDEVICE_OBJECT PtrVolumeDeviceObject,
-PDEVICE_OBJECT PtrTargetDeviceObject,
-PVPB PtrVPB,
-PLARGE_INTEGER AllocationSize);
-
-extern void NTAPI Ext2CompleteRequest(
- IN PIRP Irp OPTIONAL,
- IN NTSTATUS Status
- );
-
-extern NTSTATUS NTAPI Ext2DenyAccess(
- IN PIRP Irp
- );
-extern NTSTATUS NTAPI Ext2GetFCB_CCB_VCB_FromFileObject(
- IN PFILE_OBJECT PtrFileObject,
- OUT PtrExt2FCB *PPtrFCB,
- OUT PtrExt2CCB *PPtrCCB,
- OUT PtrExt2VCB *PPtrVCB );
-
-extern void NTAPI Ext2CopyUnicodeString(
- IN OUT PUNICODE_STRING PtrDestinationString,
- IN PUNICODE_STRING PtrSourceString );
-
-extern void NTAPI Ext2CopyWideCharToUnicodeString(
- IN OUT PUNICODE_STRING PtrDestinationString,
- IN PCWSTR PtrSourceString );
-
-extern void NTAPI Ext2CopyCharToUnicodeString(
- IN OUT PUNICODE_STRING PtrDestinationString,
- IN PCSTR PtrSourceString,
- IN USHORT SourceStringLength );
-
-extern void NTAPI Ext2CopyZCharToUnicodeString(
- IN OUT PUNICODE_STRING PtrDestinationString,
- IN PCSTR PtrSourceString );
-
-extern void NTAPI Ext2DeallocateUnicodeString(
- PUNICODE_STRING PtrUnicodeString );
-
-extern void NTAPI Ext2ZerooutUnicodeString(
- PUNICODE_STRING PtrUnicodeString );
-
-extern BOOLEAN NTAPI Ext2SaveBCB(
- PtrExt2IrpContext PtrIrpContext,
- PBCB PtrBCB,
- PFILE_OBJECT PtrFileObject);
-
-extern BOOLEAN NTAPI Ext2FlushSavedBCBs(
- PtrExt2IrpContext PtrIrpContext);
-
-extern BOOLEAN NTAPI AssertBCB(
- PBCB PtrBCB);
-
-extern ULONG NTAPI Ext2Align(
- ULONG NumberToBeAligned,
- ULONG Alignment);
-
-extern LONGLONG NTAPI Ext2Align64(
- LONGLONG NumberToBeAligned,
- LONGLONG Alignment);
-
-extern ULONG NTAPI Ext2GetCurrentTime(VOID);
-
-/*************************************************************************
-* Prototypes for the file cleanup.c
-*************************************************************************/
-extern NTSTATUS NTAPI Ext2Cleanup(
-PDEVICE_OBJECT DeviceObject, // the logical volume device object
-PIRP Irp); // I/O Request Packet
-
-extern NTSTATUS NTAPI Ext2CommonCleanup(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp,
-BOOLEAN FirstAttempt );
-
-/*************************************************************************
-* Prototypes for the file close.c
-*************************************************************************/
-extern NTSTATUS NTAPI Ext2Close(
-PDEVICE_OBJECT DeviceObject, // the logical volume device object
-PIRP Irp); // I/O Request Packet
-
-extern NTSTATUS NTAPI Ext2CommonClose(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp,
-BOOLEAN FirstAttempt );
-
-/*************************************************************************
-* Prototypes for the file read.c
-*************************************************************************/
-extern NTSTATUS NTAPI Ext2Read(
-PDEVICE_OBJECT DeviceObject, // the logical volume device object
-PIRP Irp); // I/O Request Packet
-
-extern NTSTATUS NTAPI Ext2CommonRead(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp,
-BOOLEAN FirstAttempt );
-
-extern void * NTAPI Ext2GetCallersBuffer(
-PIRP PtrIrp);
-
-extern NTSTATUS NTAPI Ext2LockCallersBuffer(
-PIRP PtrIrp,
-BOOLEAN IsReadOperation,
-uint32 Length);
-
-extern void NTAPI Ext2MdlComplete(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp,
-PIO_STACK_LOCATION PtrIoStackLocation,
-BOOLEAN ReadCompletion);
-
-/*************************************************************************
-* Prototypes for the file write.c
-*************************************************************************/
-extern NTSTATUS NTAPI Ext2Write(
-PDEVICE_OBJECT DeviceObject, // the logical volume device object
-PIRP Irp); // I/O Request Packet
-
-extern NTSTATUS NTAPI Ext2CommonWrite(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp);
-
-extern void NTAPI Ext2DeferredWriteCallBack (
-void *Context1, // Should be PtrIrpContext
-void *Context2); // Should be PtrIrp
-
-/*************************************************************************
-* Prototypes for the file fileinfo.c
-*************************************************************************/
-extern NTSTATUS NTAPI Ext2FileInfo(
-PDEVICE_OBJECT DeviceObject, // the logical volume device object
-PIRP Irp); // I/O Request Packet
-
-extern NTSTATUS NTAPI Ext2CommonFileInfo(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp);
-
-extern NTSTATUS NTAPI Ext2GetBasicInformation(
- PtrExt2FCB PtrFCB,
- PFILE_BASIC_INFORMATION PtrBuffer,
- long *PtrReturnedLength);
-
-extern NTSTATUS NTAPI Ext2GetStandardInformation(
- PtrExt2FCB PtrFCB,
- PFILE_STANDARD_INFORMATION PtrStdInformation,
- long *PtrReturnedLength);
-
-extern NTSTATUS NTAPI Ext2GetNetworkOpenInformation(
- PtrExt2FCB PtrFCB,
- PFILE_NETWORK_OPEN_INFORMATION PtrNetworkOpenInformation,
- long *PtrReturnedLength );
-
-extern NTSTATUS NTAPI Ext2GetFullNameInformation(
- PtrExt2FCB PtrFCB,
- PtrExt2CCB PtrCCB,
- PFILE_NAME_INFORMATION PtrNameInformation,
- long *PtrReturnedLength);
-
-extern NTSTATUS NTAPI Ext2SetBasicInformation(
- PtrExt2IrpContext PtrIrpContext,
- PtrExt2FCB PtrFCB,
- PFILE_OBJECT PtrFileObject,
- PFILE_BASIC_INFORMATION PtrFileInformation );
-
-extern NTSTATUS NTAPI Ext2SetDispositionInformation(
-PtrExt2FCB PtrFCB,
-PtrExt2CCB PtrCCB,
-PtrExt2VCB PtrVCB,
-PFILE_OBJECT PtrFileObject,
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp,
-PFILE_DISPOSITION_INFORMATION PtrBuffer);
-
-extern NTSTATUS NTAPI Ext2SetAllocationInformation(
-PtrExt2FCB PtrFCB,
-PtrExt2CCB PtrCCB,
-PtrExt2VCB PtrVCB,
-PFILE_OBJECT PtrFileObject,
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp,
-PFILE_ALLOCATION_INFORMATION PtrBuffer);
-
-/*************************************************************************
-* Prototypes for the file flush.c
-*************************************************************************/
-extern NTSTATUS NTAPI Ext2Flush(
-PDEVICE_OBJECT DeviceObject, // the logical volume device object
-PIRP Irp); // I/O Request Packet
-
-extern NTSTATUS NTAPI Ext2CommonFlush(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp);
-
-extern void NTAPI Ext2FlushAFile(
-PtrExt2NTRequiredFCB PtrReqdFCB,
-PIO_STATUS_BLOCK PtrIoStatus);
-
-extern void NTAPI Ext2FlushLogicalVolume(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp,
-PtrExt2VCB PtrVCB);
-
-extern NTSTATUS NTAPI Ext2FlushCompletion(
-PDEVICE_OBJECT PtrDeviceObject,
-PIRP PtrIrp,
-PVOID Context);
-
-/*************************************************************************
-* Prototypes for the file dircntrl.c
-*************************************************************************/
-extern NTSTATUS NTAPI Ext2DirControl(
-PDEVICE_OBJECT DeviceObject, // the logical volume device object
-PIRP Irp); // I/O Request Packet
-
-extern NTSTATUS NTAPI Ext2CommonDirControl(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp);
-
-extern NTSTATUS NTAPI Ext2QueryDirectory(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp,
-PEXTENDED_IO_STACK_LOCATION PtrIoStackLocation,
-PFILE_OBJECT PtrFileObject,
-PtrExt2FCB PtrFCB,
-PtrExt2CCB PtrCCB);
-
-extern NTSTATUS NTAPI Ext2NotifyChangeDirectory(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp,
-PEXTENDED_IO_STACK_LOCATION PtrIoStackLocation,
-PFILE_OBJECT PtrFileObject,
-PtrExt2FCB PtrFCB,
-PtrExt2CCB PtrCCB);
-
-/*************************************************************************
-* Prototypes for the file devcntrl.c
-*************************************************************************/
-extern NTSTATUS NTAPI Ext2DeviceControl(
-PDEVICE_OBJECT DeviceObject, // the logical volume device object
-PIRP Irp); // I/O Request Packet
-
-extern NTSTATUS NTAPI Ext2CommonDeviceControl(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp);
-
-extern NTSTATUS NTAPI Ext2DevIoctlCompletion(
-PDEVICE_OBJECT PtrDeviceObject,
-PIRP PtrIrp,
-void *Context);
-
-extern NTSTATUS NTAPI Ext2HandleQueryPath(
-void *BufferPointer);
-
-/*************************************************************************
-* Prototypes for the file shutdown.c
-*************************************************************************/
-extern NTSTATUS NTAPI Ext2Shutdown(
-PDEVICE_OBJECT DeviceObject, // the logical volume device object
-PIRP Irp); // I/O Request Packet
-
-extern NTSTATUS NTAPI Ext2CommonShutdown(
-PtrExt2IrpContext PtrIrpContext,
-PIRP PtrIrp);
-
-/*************************************************************************
-* Prototypes for the file volinfo.c
-*************************************************************************/
-extern NTSTATUS NTAPI Ext2QueryVolInfo(
-PDEVICE_OBJECT DeviceObject, // the logical volume device object
-PIRP Irp); // I/O Request Packet
-
-NTSTATUS NTAPI Ext2SetVolInfo(
- IN PDEVICE_OBJECT DeviceObject, // the logical volume device object
- IN PIRP Irp); // I/O Request Packet
-
-
-/*************************************************************************
-* Prototypes for the file fastio.c
-*************************************************************************/
-extern BOOLEAN NTAPI Ext2FastIoCheckIfPossible(
-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);
-
-extern BOOLEAN NTAPI Ext2FastIoRead(
-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);
-
-extern BOOLEAN NTAPI Ext2FastIoWrite(
-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);
-
-extern BOOLEAN NTAPI Ext2FastIoQueryBasicInfo(
-IN PFILE_OBJECT FileObject,
-IN BOOLEAN Wait,
-OUT PFILE_BASIC_INFORMATION Buffer,
-OUT PIO_STATUS_BLOCK IoStatus,
-IN PDEVICE_OBJECT DeviceObject);
-
-extern BOOLEAN NTAPI Ext2FastIoQueryStdInfo(
-IN PFILE_OBJECT FileObject,
-IN BOOLEAN Wait,
-OUT PFILE_STANDARD_INFORMATION Buffer,
-OUT PIO_STATUS_BLOCK IoStatus,
-IN PDEVICE_OBJECT DeviceObject);
-
-extern BOOLEAN NTAPI Ext2FastIoLock(
-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);
-
-extern BOOLEAN NTAPI Ext2FastIoUnlockSingle(
-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);
-
-extern BOOLEAN NTAPI Ext2FastIoUnlockAll(
-IN PFILE_OBJECT FileObject,
-PEPROCESS ProcessId,
-OUT PIO_STATUS_BLOCK IoStatus,
-IN PDEVICE_OBJECT DeviceObject);
-
-extern BOOLEAN NTAPI Ext2FastIoUnlockAllByKey(
-IN PFILE_OBJECT FileObject,
-PVOID ProcessId,
-ULONG Key,
-OUT PIO_STATUS_BLOCK IoStatus,
-IN PDEVICE_OBJECT DeviceObject);
-
-extern void NTAPI Ext2FastIoAcqCreateSec(
-IN PFILE_OBJECT FileObject);
-
-extern void NTAPI Ext2FastIoRelCreateSec(
-IN PFILE_OBJECT FileObject);
-
-extern BOOLEAN NTAPI Ext2AcqLazyWrite(
-IN PVOID Context,
-IN BOOLEAN Wait);
-
-extern void NTAPI Ext2RelLazyWrite(
-IN PVOID Context);
-
-extern BOOLEAN NTAPI Ext2AcqReadAhead(
-IN PVOID Context,
-IN BOOLEAN Wait);
-
-extern void NTAPI Ext2RelReadAhead(
-IN PVOID Context);
-
-// the remaining are only valid under NT Version 4.0 and later
-#if(_WIN32_WINNT >= 0x0400)
-
-extern BOOLEAN NTAPI Ext2FastIoQueryNetInfo(
-IN PFILE_OBJECT FileObject,
-IN BOOLEAN Wait,
-OUT PFILE_NETWORK_OPEN_INFORMATION Buffer,
-OUT PIO_STATUS_BLOCK IoStatus,
-IN PDEVICE_OBJECT DeviceObject);
-
-extern BOOLEAN NTAPI Ext2FastIoMdlRead(
-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);
-
-extern BOOLEAN NTAPI Ext2FastIoMdlReadComplete(
-IN PFILE_OBJECT FileObject,
-OUT PMDL MdlChain,
-IN PDEVICE_OBJECT DeviceObject);
-
-extern BOOLEAN NTAPI Ext2FastIoPrepareMdlWrite(
-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);
-
-extern BOOLEAN NTAPI Ext2FastIoMdlWriteComplete(
-IN PFILE_OBJECT FileObject,
-IN PLARGE_INTEGER FileOffset,
-OUT PMDL MdlChain,
-IN PDEVICE_OBJECT DeviceObject);
-
-extern NTSTATUS NTAPI Ext2FastIoAcqModWrite(
-IN PFILE_OBJECT FileObject,
-IN PLARGE_INTEGER EndingOffset,
-OUT PERESOURCE *ResourceToRelease,
-IN PDEVICE_OBJECT DeviceObject);
-
-extern NTSTATUS NTAPI Ext2FastIoRelModWrite(
-IN PFILE_OBJECT FileObject,
-IN PERESOURCE ResourceToRelease,
-IN PDEVICE_OBJECT DeviceObject);
-
-extern NTSTATUS NTAPI Ext2FastIoAcqCcFlush(
-IN PFILE_OBJECT FileObject,
-IN PDEVICE_OBJECT DeviceObject);
-
-extern NTSTATUS NTAPI Ext2FastIoRelCcFlush(
-IN PFILE_OBJECT FileObject,
-IN PDEVICE_OBJECT DeviceObject);
-
-#endif // (_WIN32_WINNT >= 0x0400)
-
-/*************************************************************************
-* Prototypes for the file DiskIO.c
-*************************************************************************/
-extern NTSTATUS NTAPI Ext2ReadLogicalBlocks(
-PDEVICE_OBJECT PtrTargetDeviceObject, // the Target Device Object
-VOID *Buffer, // The Buffer that takes the data read in
-LARGE_INTEGER StartLogicalBlock, // The logical block from which reading is to start
-unsigned int NoOfLogicalBlocks); // The no. of logical blocks to be read
-
-extern NTSTATUS NTAPI Ext2ReadPhysicalBlocks(
- PDEVICE_OBJECT PtrTargetDeviceObject, // the Target Device Object
- VOID *Buffer, // The Buffer that takes the data read in
- LARGE_INTEGER StartBlock, // The Physical block from which reading is to start
- unsigned int NoOfBlocks); // The no. of Physical blocks to be read
-
-/*************************************************************************
-* Prototypes for the file metadata.c
-*************************************************************************/
-
-extern void NTAPI Ext2InitializeFCBInodeInfo (
- PtrExt2FCB PtrFCB );
-
-extern NTSTATUS NTAPI Ext2ReadInode(
- PtrExt2VCB PtrVcb, // the Volume Control Block
- uint32 InodeNo, // The Inode no
- PEXT2_INODE PtrInode ); // The Inode Buffer
-
-extern NTSTATUS NTAPI Ext2WriteInode(
- PtrExt2IrpContext PtrIrpContext,
- PtrExt2VCB PtrVcb, // the Volume Control Block
- uint32 InodeNo, // The Inode no
- PEXT2_INODE PtrInode // The Inode Buffer
- );
-
-extern ULONG NTAPI Ext2AllocInode(
- PtrExt2IrpContext PtrIrpContext,
- PtrExt2VCB PtrVCB,
- ULONG ParentINodeNo );
-
-extern BOOLEAN NTAPI Ext2DeallocInode(
- PtrExt2IrpContext PtrIrpContext,
- PtrExt2VCB PtrVCB,
- ULONG INodeNo );
-
-extern BOOLEAN NTAPI Ext2MakeNewDirectoryEntry(
- PtrExt2IrpContext PtrIrpContext, // The Irp context
- PtrExt2FCB PtrParentFCB, // Parent Folder FCB
- PFILE_OBJECT PtrFileObject, // Parent Folder Object
- PUNICODE_STRING PtrName, // New entry's name
- ULONG Type, // The type of the new entry
- ULONG NewInodeNo); // The inode no of the new entry...
-
-extern BOOLEAN NTAPI Ext2FreeDirectoryEntry(
- PtrExt2IrpContext PtrIrpContext,
- PtrExt2FCB PtrParentFCB,
- PUNICODE_STRING PtrName);
-
-extern BOOLEAN NTAPI Ext2AddBlockToFile(
- PtrExt2IrpContext PtrIrpContext,
- PtrExt2VCB PtrVCB,
- PtrExt2FCB PtrFCB,
- PFILE_OBJECT PtrFileObject,
- BOOLEAN UpdateFileSize);
-
-extern BOOLEAN NTAPI Ext2ReleaseDataBlocks(
- PtrExt2FCB PtrFCB,
- PtrExt2IrpContext PtrIrpContext);
-
-extern BOOLEAN NTAPI Ext2TruncateFileAllocationSize(
- PtrExt2IrpContext PtrIrpContext,
- PtrExt2FCB PtrFCB,
- PFILE_OBJECT PtrFileObject,
- PLARGE_INTEGER PtrAllocationSize );
-
-extern ULONG NTAPI Ext2AllocBlock(
- PtrExt2IrpContext PtrIrpContext,
- PtrExt2VCB PtrVCB,
- ULONG Count);
-
-extern BOOLEAN NTAPI Ext2DeallocBlock(
- PtrExt2IrpContext PtrIrpContext,
- PtrExt2VCB PtrVCB,
- ULONG BlockNo);
-
-extern BOOLEAN NTAPI Ext2UpdateFileSize(
- PtrExt2IrpContext PtrIrpContext,
- PFILE_OBJECT PtrFileObject,
- PtrExt2FCB PtrFCB);
-
-
-extern BOOLEAN NTAPI Ext2DeleteFile(
- PtrExt2FCB PtrFCB,
- PtrExt2IrpContext PtrIrpContext);
-
-extern BOOLEAN NTAPI Ext2IsDirectoryEmpty(
- PtrExt2FCB PtrFCB,
- PtrExt2CCB PtrCCB,
- PtrExt2IrpContext PtrIrpContext);
-
-extern NTSTATUS NTAPI Ext2RenameOrLinkFile(
- PtrExt2FCB PtrSourceFCB,
- PFILE_OBJECT PtrSourceFileObject,
- PtrExt2IrpContext PtrIrpContext,
- PIRP PtrIrp,
- PFILE_RENAME_INFORMATION PtrRenameInfo);
-/*************************************************************************
-* Prototypes for the file io.c
-*************************************************************************/
-extern NTSTATUS NTAPI Ext2PassDownSingleReadWriteIRP(
- PtrExt2IrpContext PtrIrpContext,
- PIRP PtrIrp,
- PtrExt2VCB PtrVCB,
- LARGE_INTEGER ByteOffset,
- uint32 ReadWriteLength,
- BOOLEAN SynchronousIo);
-
-extern NTSTATUS NTAPI Ext2PassDownMultiReadWriteIRP(
- PEXT2_IO_RUN PtrIoRuns,
- UINT Count,
- ULONG TotalReadWriteLength,
- PtrExt2IrpContext PtrIrpContext,
- PtrExt2FCB PtrFCB,
- BOOLEAN SynchronousIo);
-
-extern NTSTATUS NTAPI Ext2SingleSyncCompletionRoutine(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN PVOID Contxt
- );
-
-extern NTSTATUS NTAPI Ext2SingleAsyncCompletionRoutine (
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN PVOID Contxt
- );
-
-extern NTSTATUS NTAPI Ext2MultiSyncCompletionRoutine(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN PVOID Contxt);
-
-extern NTSTATUS NTAPI Ext2MultiAsyncCompletionRoutine(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp,
- IN PVOID Contxt);
-
-#endif // _EXT2_PROTOS_H_