📄 ext2fs.h
字号:
// linux.c: linux lib implemenation
//
int
ext2_init_linux();
void
ext2_destroy_linux();
//
// Lock.c
//
NTSTATUS
Ext2LockControl (IN PEXT2_IRP_CONTEXT IrpContext);
//
// Memory.c
//
PEXT2_IRP_CONTEXT
Ext2AllocateIrpContext (IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp );
VOID
Ext2FreeIrpContext (IN PEXT2_IRP_CONTEXT IrpContext);
PEXT2_FCB
Ext2AllocateFcb (
IN PEXT2_VCB Vcb,
IN PEXT2_MCB Mcb
);
VOID
Ext2FreeFcb (IN PEXT2_FCB Fcb);
VOID
Ext2InsertFcb(PEXT2_VCB Vcb, PEXT2_FCB Fcb);
VOID
Ext2RemoveFcb(PEXT2_VCB Vcb, PEXT2_FCB Fcb);
PEXT2_CCB
Ext2AllocateCcb (PEXT2_MCB SymLink);
VOID
Ext2FreeMcb (
IN PEXT2_VCB Vcb,
IN PEXT2_MCB Mcb
);
VOID
Ext2FreeCcb (IN PEXT2_CCB Ccb);
PEXT2_INODE
Ext2AllocateInode (PEXT2_VCB Vcb);
VOID
Ext2DestroyInode (IN PEXT2_VCB Vcb, IN PEXT2_INODE inode);
PEXT2_EXTENT
Ext2AllocateExtent ();
VOID
Ext2FreeExtent (IN PEXT2_EXTENT Extent);
ULONG
Ext2CountExtents(IN PEXT2_EXTENT Chain);
VOID
Ext2JointExtents(
IN PEXT2_EXTENT Chain,
IN PEXT2_EXTENT Extent
);
VOID
Ext2DestroyExtentChain(IN PEXT2_EXTENT Chain);
NTSTATUS
Ext2BuildExtents(
IN PEXT2_IRP_CONTEXT IrpContext,
IN PEXT2_VCB Vcb,
IN PEXT2_MCB Mcb,
IN ULONGLONG Offset,
IN ULONG Size,
IN BOOLEAN bAlloc,
OUT PEXT2_EXTENT * Chain
);
BOOLEAN
Ext2ListExtents(PLARGE_MCB Extents);
VOID
Ext2CheckExtent(
PLARGE_MCB Zone,
LONGLONG Vbn,
LONGLONG Lbn,
LONGLONG Length,
BOOLEAN bAdded
);
VOID
Ext2ClearAllExtents(PLARGE_MCB Zone);
BOOLEAN
Ext2AddVcbExtent (
IN PEXT2_VCB Vcb,
IN LONGLONG Vbn,
IN LONGLONG Length
);
BOOLEAN
Ext2RemoveVcbExtent (
IN PEXT2_VCB Vcb,
IN LONGLONG Vbn,
IN LONGLONG Length
);
BOOLEAN
Ext2LookupVcbExtent (
IN PEXT2_VCB Vcb,
IN LONGLONG Vbn,
OUT PLONGLONG Lbn,
OUT PLONGLONG Length
);
BOOLEAN
Ext2AddMcbExtent (
IN PEXT2_VCB Vcb,
IN PEXT2_MCB Mcb,
IN LONGLONG Vbn,
IN LONGLONG Lbn,
IN LONGLONG Length
);
BOOLEAN
Ext2RemoveMcbExtent (
IN PEXT2_VCB Vcb,
IN PEXT2_MCB Mcb,
IN LONGLONG Vbn,
IN LONGLONG Length
);
BOOLEAN
Ext2LookupMcbExtent (
IN PEXT2_VCB Vcb,
IN PEXT2_MCB Mcb,
IN LONGLONG Vbn,
OUT PLONGLONG Lbn,
OUT PLONGLONG Length
);
BOOLEAN
Ext2AddBlockExtent(
IN PEXT2_VCB Vcb,
IN PEXT2_MCB Mcb,
IN ULONG Start,
IN ULONG Block,
IN ULONG Number
);
BOOLEAN
Ext2LookupBlockExtent(
IN PEXT2_VCB Vcb,
IN PEXT2_MCB Mcb,
IN ULONG Start,
IN PULONG Block,
IN PULONG Mapped
);
BOOLEAN
Ext2RemoveBlockExtent(
IN PEXT2_VCB Vcb,
IN PEXT2_MCB Mcb,
IN ULONG Start,
IN ULONG Number
);
NTSTATUS
Ext2InitializeZone(
IN PEXT2_IRP_CONTEXT IrpContext,
IN PEXT2_VCB Vcb,
IN PEXT2_MCB Mcb
);
BOOLEAN
Ext2BuildName(
IN OUT PUNICODE_STRING Target,
IN PUNICODE_STRING File,
IN PUNICODE_STRING Parent
);
PEXT2_MCB
Ext2AllocateMcb (
IN PEXT2_VCB Vcb,
IN PUNICODE_STRING FileName,
IN PUNICODE_STRING Parent,
IN ULONG FileAttr
);
PEXT2_MCB
Ext2SearchMcb(
PEXT2_VCB Vcb,
PEXT2_MCB Parent,
PUNICODE_STRING FileName
);
PEXT2_MCB
Ext2SearchMcbWithoutLock(
PEXT2_MCB Parent,
PUNICODE_STRING FileName
);
VOID
Ext2InsertMcb(
PEXT2_VCB Vcb,
PEXT2_MCB Parent,
PEXT2_MCB Child
);
BOOLEAN
Ext2RemoveMcb(
PEXT2_VCB Vcb,
PEXT2_MCB Mcb
);
VOID
Ext2CleanupAllMcbs(
PEXT2_VCB Vcb
);
BOOLEAN
Ext2CheckSetBlock(
PEXT2_IRP_CONTEXT IrpContext,
PEXT2_VCB Vcb, ULONG Block
);
BOOLEAN
Ext2CheckBitmapConsistency(
PEXT2_IRP_CONTEXT IrpContext,
PEXT2_VCB Vcb
);
VOID
Ext2InsertVcb(PEXT2_VCB Vcb);
VOID
Ext2RemoveVcb(PEXT2_VCB Vcb);
NTSTATUS
Ext2InitializeLabel(
IN PEXT2_VCB Vcb,
IN PEXT2_SUPER_BLOCK Sb
);
NTSTATUS
Ext2InitializeVcb(
PEXT2_IRP_CONTEXT IrpContext,
PEXT2_VCB Vcb,
PEXT2_SUPER_BLOCK Ext2Sb,
PDEVICE_OBJECT TargetDevice,
PDEVICE_OBJECT VolumeDevice,
PVPB Vpb );
VOID
Ext2DestroyVcb (IN PEXT2_VCB Vcb );
NTSTATUS
Ext2CompleteIrpContext (
IN PEXT2_IRP_CONTEXT IrpContext,
IN NTSTATUS Status );
VOID
Ext2SyncUninitializeCacheMap (
IN PFILE_OBJECT FileObject );
VOID
Ext2LinkTailMcb(PEXT2_VCB Vcb, PEXT2_MCB Mcb);
VOID
Ext2LinkHeadMcb(PEXT2_VCB Vcb, PEXT2_MCB Mcb);
VOID
Ext2UnlinkMcb(PEXT2_VCB Vcb, PEXT2_MCB Mcb);
PEXT2_MCB
Ext2FirstUnusedMcb(
PEXT2_VCB Vcb,
BOOLEAN Wait,
ULONG Number
);
VOID
Ext2ReaperThread(
PVOID Context
);
NTSTATUS
Ext2StartReaperThread();
//
// Misc.c
//
ULONG
Ext2Log2(ULONG Value);
LARGE_INTEGER
Ext2NtTime (IN ULONG i_time);
ULONG
Ext2LinuxTime (IN LARGE_INTEGER SysTime);
ULONG
Ext2OEMToUnicodeSize(
IN PEXT2_VCB Vcb,
IN PANSI_STRING Oem
);
NTSTATUS
Ext2OEMToUnicode(
IN PEXT2_VCB Vcb,
IN OUT PUNICODE_STRING Oem,
IN POEM_STRING Unicode
);
ULONG
Ext2UnicodeToOEMSize(
IN PEXT2_VCB Vcb,
IN PUNICODE_STRING Unicode
);
NTSTATUS
Ext2UnicodeToOEM (
IN PEXT2_VCB Vcb,
IN OUT POEM_STRING Oem,
IN PUNICODE_STRING Unicode
);
VOID
Ext2Sleep(ULONG ms);
//
// nls/nls_rtl.c
//
int
Ext2LoadAllNls();
VOID
Ext2UnloadAllNls();
//
// Pnp.c
//
NTSTATUS
Ext2Pnp(IN PEXT2_IRP_CONTEXT IrpContext);
NTSTATUS
Ext2PnpQueryRemove(
PEXT2_IRP_CONTEXT IrpContext,
PEXT2_VCB Vcb );
NTSTATUS
Ext2PnpRemove(
PEXT2_IRP_CONTEXT IrpContext,
PEXT2_VCB Vcb );
NTSTATUS
Ext2PnpCancelRemove(
PEXT2_IRP_CONTEXT IrpContext,
PEXT2_VCB Vcb );
NTSTATUS
Ext2PnpSurpriseRemove(
PEXT2_IRP_CONTEXT IrpContext,
PEXT2_VCB Vcb );
//
// Read.c
//
NTSTATUS
Ext2ReadInode (
IN PEXT2_IRP_CONTEXT IrpContext,
IN PEXT2_VCB Vcb,
IN PEXT2_MCB Mcb,
IN ULONGLONG Offset,
IN PVOID Buffer,
IN ULONG Size,
IN BOOLEAN bDirectIo,
OUT PULONG dwReturn
);
NTSTATUS
Ext2Read (IN PEXT2_IRP_CONTEXT IrpContext);
//
// ext3\recover.c
//
PEXT2_MCB
Ext2LoadInternalJournal(
PEXT2_VCB Vcb,
ULONG jNo
);
INT
Ext2CheckJournal(
PEXT2_VCB Vcb,
PULONG jNo
);
INT
Ext2RecoverJournal(
PEXT2_IRP_CONTEXT IrpContext,
PEXT2_VCB Vcb
);
//
// Shutdown.c
//
NTSTATUS
Ext2ShutDown (IN PEXT2_IRP_CONTEXT IrpContext);
//
// Volinfo.c
//
NTSTATUS
Ext2QueryVolumeInformation (IN PEXT2_IRP_CONTEXT IrpContext);
NTSTATUS
Ext2SetVolumeInformation (IN PEXT2_IRP_CONTEXT IrpContext);
//
// Write.c
//
typedef struct _EXT2_RW_CONTEXT {
ULONG Flags;
PIRP MasterIrp;
KEVENT Event;
BOOLEAN Wait;
ULONG Blocks;
ULONG Length;
PERESOURCE Resource;
ERESOURCE_THREAD ThreadId;
PFILE_OBJECT FileObject;
} EXT2_RW_CONTEXT, *PEXT2_RW_CONTEXT;
#define EXT2_RW_CONTEXT_WRITE 1
NTSTATUS
Ext2WriteInode (
IN PEXT2_IRP_CONTEXT IrpContext,
IN PEXT2_VCB Vcb,
IN PEXT2_MCB Mcb,
IN ULONGLONG Offset,
IN PVOID Buffer,
IN ULONG Size,
IN BOOLEAN bDirectIo,
OUT PULONG dwReturn
);
VOID
Ext2StartFloppyFlushDpc (
PEXT2_VCB Vcb,
PEXT2_FCB Fcb,
PFILE_OBJECT FileObject );
BOOLEAN
Ext2ZeroHoles (
IN PEXT2_IRP_CONTEXT IrpContext,
IN PEXT2_VCB Vcb,
IN PFILE_OBJECT FileObject,
IN LONGLONG Offset,
IN LONGLONG Count );
NTSTATUS
Ext2Write (IN PEXT2_IRP_CONTEXT IrpContext);
#endif /* _EXT2_HEADER_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -