📄 ffsdrv.h
字号:
IN PUNICODE_STRING FileName);
NTSTATUS
FFSRemoveEntry(
IN PFFS_IRP_CONTEXT IrpContext,
IN PFFS_VCB Vcb,
IN PFFS_FCB Dcb,
IN ULONG FileType,
IN ULONG Inode);
NTSTATUS
FFSSetParentEntry(
IN PFFS_IRP_CONTEXT IrpContext,
IN PFFS_VCB Vcb,
IN PFFS_FCB Dcb,
IN ULONG OldParent,
IN ULONG NewParent);
BOOLEAN
FFSTruncateBlock(
IN PFFS_IRP_CONTEXT IrpContext,
IN PFFS_VCB Vcb,
IN PFFS_FCB Fcb,
IN ULONG dwContent,
IN ULONG Index,
IN ULONG layer,
OUT BOOLEAN *bFreed);
BOOLEAN
FFSTruncateInode(
IN PFFS_IRP_CONTEXT IrpContext,
IN PFFS_VCB Vcb,
IN PFFS_FCB Fcb);
BOOLEAN
FFSAddMcbEntry(
IN PFFS_VCB Vcb,
IN LONGLONG Lba,
IN LONGLONG Length);
VOID
FFSRemoveMcbEntry(
IN PFFS_VCB Vcb,
IN LONGLONG Lba,
IN LONGLONG Length);
BOOLEAN
FFSLookupMcbEntry(
IN PFFS_VCB Vcb,
IN LONGLONG Lba,
OUT PLONGLONG pLba,
OUT PLONGLONG pLength,
OUT PLONGLONG RunStart,
OUT PLONGLONG RunLength,
OUT PULONG Index);
ULONG
FFSDataBlocks(
PFFS_VCB Vcb,
ULONG TotalBlocks);
ULONG
FFSTotalBlocks(
PFFS_VCB Vcb,
ULONG DataBlocks);
//
// Fastio.c
//
BOOLEAN
FFSFastIoCheckIfPossible(
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);
BOOLEAN
FFSFastIoRead(
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);
BOOLEAN
FFSFastIoWrite(
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);
BOOLEAN
FFSFastIoQueryBasicInfo(
IN PFILE_OBJECT FileObject,
IN BOOLEAN Wait,
OUT PFILE_BASIC_INFORMATION Buffer,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject);
BOOLEAN
FFSFastIoQueryStandardInfo(
IN PFILE_OBJECT FileObject,
IN BOOLEAN Wait,
OUT PFILE_STANDARD_INFORMATION Buffer,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject);
BOOLEAN
FFSFastIoLock(
IN PFILE_OBJECT FileObject,
IN PLARGE_INTEGER FileOffset,
IN PLARGE_INTEGER Length,
IN PEPROCESS Process,
IN ULONG Key,
IN BOOLEAN FailImmediately,
IN BOOLEAN ExclusiveLock,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject);
BOOLEAN
FFSFastIoUnlockSingle(
IN PFILE_OBJECT FileObject,
IN PLARGE_INTEGER FileOffset,
IN PLARGE_INTEGER Length,
IN PEPROCESS Process,
IN ULONG Key,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject);
BOOLEAN
FFSFastIoUnlockAll(
IN PFILE_OBJECT FileObject,
IN PEPROCESS Process,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject);
BOOLEAN
FFSFastIoUnlockAllByKey(
IN PFILE_OBJECT FileObject,
IN PEPROCESS Process,
IN ULONG Key,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject);
BOOLEAN
FFSFastIoQueryNetworkOpenInfo(
IN PFILE_OBJECT FileObject,
IN BOOLEAN Wait,
OUT PFILE_NETWORK_OPEN_INFORMATION Buffer,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject);
BOOLEAN
FFSFastIoQueryNetworkOpenInfo(
IN PFILE_OBJECT FileObject,
IN BOOLEAN Wait,
OUT PFILE_NETWORK_OPEN_INFORMATION Buffer,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject);
//
// FileInfo.c
//
NTSTATUS
FFSQueryInformation(
IN PFFS_IRP_CONTEXT IrpContext);
NTSTATUS
FFSSetInformation(
IN PFFS_IRP_CONTEXT IrpContext);
BOOLEAN
FFSExpandFile(
PFFS_IRP_CONTEXT IrpContext,
PFFS_VCB Vcb,
PFFS_FCB Fcb,
PLARGE_INTEGER AllocationSize);
BOOLEAN
FFSTruncateFile(
PFFS_IRP_CONTEXT IrpContext,
PFFS_VCB Vcb,
PFFS_FCB Fcb,
PLARGE_INTEGER AllocationSize);
NTSTATUS
FFSSetDispositionInfo(
PFFS_IRP_CONTEXT IrpContext,
PFFS_VCB Vcb,
PFFS_FCB Fcb,
BOOLEAN bDelete);
NTSTATUS
FFSSetRenameInfo(
PFFS_IRP_CONTEXT IrpContext,
PFFS_VCB Vcb,
PFFS_FCB Fcb);
BOOLEAN
FFSDeleteFile(
PFFS_IRP_CONTEXT IrpContext,
PFFS_VCB Vcb,
PFFS_FCB Fcb);
//
// Flush.c
//
NTSTATUS
FFSFlushFiles(
IN PFFS_VCB Vcb,
BOOLEAN bShutDown);
NTSTATUS
FFSFlushVolume(
IN PFFS_VCB Vcb,
BOOLEAN bShutDown);
NTSTATUS
FFSFlushFile(
IN PFFS_FCB Fcb);
NTSTATUS
FFSFlush(
IN PFFS_IRP_CONTEXT IrpContext);
//
// Fsctl.c
//
VOID
FFSSetVpbFlag(
IN PVPB Vpb,
IN USHORT Flag);
VOID
FFSClearVpbFlag(
IN PVPB Vpb,
IN USHORT Flag);
NTSTATUS
FFSGetPartition(
IN PDEVICE_OBJECT DeviceObject,
OUT ULONGLONG *StartOffset);
NTSTATUS
FFSLoadDiskLabel(
PDEVICE_OBJECT DeviceObject,
IN PFFS_VCB Vcb);
BOOLEAN
FFSCheckDismount(
IN PFFS_IRP_CONTEXT IrpContext,
IN PFFS_VCB Vcb,
IN BOOLEAN bForce);
NTSTATUS
FFSPurgeVolume(
IN PFFS_VCB Vcb,
IN BOOLEAN FlushBeforePurge);
NTSTATUS
FFSPurgeFile(
IN PFFS_FCB Fcb,
IN BOOLEAN FlushBeforePurge);
BOOLEAN
FFSIsHandleCountZero(
IN PFFS_VCB Vcb);
NTSTATUS
FFSLockVcb(
IN PFFS_VCB Vcb,
IN PFILE_OBJECT FileObject);
NTSTATUS
FFSLockVolume(
IN PFFS_IRP_CONTEXT IrpContext);
NTSTATUS
FFSUnlockVcb(
IN PFFS_VCB Vcb,
IN PFILE_OBJECT FileObject);
NTSTATUS
FFSUnlockVolume(
IN PFFS_IRP_CONTEXT IrpContext);
NTSTATUS
FFSAllowExtendedDasdIo(
IN PFFS_IRP_CONTEXT IrpContext);
NTSTATUS
FFSUserFsRequest(
IN PFFS_IRP_CONTEXT IrpContext);
NTSTATUS
FFSMountVolume(
IN PFFS_IRP_CONTEXT IrpContext);
NTSTATUS
FFSVerifyVolume(
IN PFFS_IRP_CONTEXT IrpContext);
NTSTATUS
FFSIsVolumeMounted(
IN PFFS_IRP_CONTEXT IrpContext);
NTSTATUS
FFSDismountVolume(
IN PFFS_IRP_CONTEXT IrpContext);
NTSTATUS
FFSSelectBSDPartition(
IN PFFS_IRP_CONTEXT IrpContext);
NTSTATUS
FFSFileSystemControl(
IN PFFS_IRP_CONTEXT IrpContext);
//
// Init.c
//
BOOLEAN
FFSQueryParameters(
IN PUNICODE_STRING RegistryPath);
VOID
DriverUnload(
IN PDRIVER_OBJECT DriverObject);
//
// Lock.c
//
NTSTATUS
FFSLockControl(
IN PFFS_IRP_CONTEXT IrpContext);
//
// Memory.c
//
PFFS_IRP_CONTEXT
FFSAllocateIrpContext(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
VOID
FFSFreeIrpContext(
IN PFFS_IRP_CONTEXT IrpContext);
PFFS_FCB
FFSv1AllocateFcb(
IN PFFS_VCB Vcb,
IN PFFS_MCB FFSMcb,
IN PFFSv1_INODE dinode1);
PFFS_FCB
FFSv2AllocateFcb(
IN PFFS_VCB Vcb,
IN PFFS_MCB FFSMcb,
IN PFFSv2_INODE dinode2);
VOID
FFSFreeFcb(
IN PFFS_FCB Fcb);
PFFS_CCB
FFSAllocateCcb(
VOID);
VOID
FFSFreeMcb(
IN PFFS_MCB Mcb);
PFFS_FCB
FFSCreateFcbFromMcb(
PFFS_VCB Vcb,
PFFS_MCB Mcb);
VOID
FFSFreeCcb(
IN PFFS_CCB Ccb);
PFFS_MCB
FFSAllocateMcb(
PFFS_VCB Vcb,
PUNICODE_STRING FileName,
ULONG FileAttr);
PFFS_MCB
FFSSearchMcbTree(
PFFS_VCB Vcb,
PFFS_MCB FFSMcb,
ULONG Inode);
PFFS_MCB
FFSSearchMcb(
PFFS_VCB Vcb,
PFFS_MCB Parent,
PUNICODE_STRING FileName);
BOOLEAN
FFSGetFullFileName(
PFFS_MCB Mcb,
PUNICODE_STRING FileName);
VOID
FFSRefreshMcb(
PFFS_VCB Vcb, PFFS_MCB Mcb);
VOID
FFSAddMcbNode(
PFFS_VCB Vcb,
PFFS_MCB Parent,
PFFS_MCB Child);
BOOLEAN
FFSDeleteMcbNode(
PFFS_VCB Vcb,
PFFS_MCB McbTree,
PFFS_MCB FFSMcb);
VOID
FFSFreeMcbTree(
PFFS_MCB McbTree);
BOOLEAN
FFSCheckSetBlock(
PFFS_IRP_CONTEXT IrpContext,
PFFS_VCB Vcb,
ULONG Block);
BOOLEAN
FFSCheckBitmapConsistency(
PFFS_IRP_CONTEXT IrpContext,
PFFS_VCB Vcb);
VOID
FFSInsertVcb(
PFFS_VCB Vcb);
VOID
FFSRemoveVcb(
PFFS_VCB Vcb);
NTSTATUS
FFSInitializeVcb(
IN PFFS_IRP_CONTEXT IrpContext,
IN PFFS_VCB Vcb,
IN PFFS_SUPER_BLOCK FFSSb,
IN PDEVICE_OBJECT TargetDevice,
IN PDEVICE_OBJECT VolumeDevice,
IN PVPB Vpb);
VOID
FFSFreeVcb(
IN PFFS_VCB Vcb);
VOID
FFSRepinBcb(
IN PFFS_IRP_CONTEXT IrpContext,
IN PBCB Bcb);
VOID
FFSUnpinRepinnedBcbs(
IN PFFS_IRP_CONTEXT IrpContext);
NTSTATUS
FFSCompleteIrpContext(
IN PFFS_IRP_CONTEXT IrpContext,
IN NTSTATUS Status);
VOID
FFSSyncUninitializeCacheMap(
IN PFILE_OBJECT FileObject);
//
// Misc.c
//
ULONG
FFSLog2(
ULONG Value);
LARGE_INTEGER
FFSSysTime(
IN ULONG i_time);
ULONG
FFSInodeTime(
IN LARGE_INTEGER SysTime);
NTSTATUS
FFSOEMToUnicode(
IN OUT PUNICODE_STRING Unicode,
IN POEM_STRING Oem);
NTSTATUS
FFSUnicodeToOEM(
IN OUT POEM_STRING Oem,
IN PUNICODE_STRING Unicode);
//
// Pnp.c
//
NTSTATUS
FFSPnp(
IN PFFS_IRP_CONTEXT IrpContext);
NTSTATUS
FFSPnpQueryRemove(
PFFS_IRP_CONTEXT IrpContext,
PFFS_VCB Vcb);
NTSTATUS
FFSPnpRemove(
PFFS_IRP_CONTEXT IrpContext,
PFFS_VCB Vcb);
NTSTATUS
FFSPnpCancelRemove(
PFFS_IRP_CONTEXT IrpContext,
PFFS_VCB Vcb);
NTSTATUS
FFSPnpSurpriseRemove(
PFFS_IRP_CONTEXT IrpContext,
PFFS_VCB Vcb);
//
// Read.c
//
BOOLEAN
FFSCopyRead(
IN PFILE_OBJECT FileObject,
IN PLARGE_INTEGER FileOffset,
IN ULONG Length,
IN BOOLEAN Wait,
OUT PVOID Buffer,
OUT PIO_STATUS_BLOCK IoStatus);
NTSTATUS
FFSv1ReadInode(
IN PFFS_IRP_CONTEXT IrpContext,
IN PFFS_VCB Vcb,
IN PFFSv1_INODE dinode1,
IN ULONGLONG offset,
IN PVOID Buffer,
IN ULONG size,
OUT PULONG dwRet);
NTSTATUS
FFSv2ReadInode(
IN PFFS_IRP_CONTEXT IrpContext,
IN PFFS_VCB Vcb,
IN PFFSv2_INODE dinode2,
IN ULONGLONG offset,
IN PVOID Buffer,
IN ULONG size,
OUT PULONG dwRet);
NTSTATUS
FFSRead(
IN PFFS_IRP_CONTEXT IrpContext);
//
// Shutdown.c
//
NTSTATUS
FFSShutDown(
IN PFFS_IRP_CONTEXT IrpContext);
//
// Volinfo.c
//
NTSTATUS
FFSQueryVolumeInformation(
IN PFFS_IRP_CONTEXT IrpContext);
NTSTATUS
FFSSetVolumeInformation(
IN PFFS_IRP_CONTEXT IrpContext);
//
// Write.c
//
NTSTATUS
FFSv1WriteInode(
IN PFFS_IRP_CONTEXT IrpContext,
IN PFFS_VCB Vcb,
IN PFFSv1_INODE dinode1,
IN ULONGLONG offset,
IN PVOID Buffer,
IN ULONG size,
IN BOOLEAN bWriteToDisk,
OUT PULONG dwRet);
NTSTATUS
FFSv2WriteInode(
IN PFFS_IRP_CONTEXT IrpContext,
IN PFFS_VCB Vcb,
IN PFFSv2_INODE dinode2,
IN ULONGLONG offset,
IN PVOID Buffer,
IN ULONG size,
IN BOOLEAN bWriteToDisk,
OUT PULONG dwRet);
VOID
FFSStartFloppyFlushDpc(
PFFS_VCB Vcb,
PFFS_FCB Fcb,
PFILE_OBJECT FileObject);
BOOLEAN
FFSZeroHoles(
IN PFFS_IRP_CONTEXT IrpContext,
IN PFFS_VCB Vcb,
IN PFILE_OBJECT FileObject,
IN LONGLONG Offset,
IN LONGLONG Count);
NTSTATUS
FFSWrite(
IN PFFS_IRP_CONTEXT IrpContext);
NTSTATUS
DeviceControl(
IN PDEVICE_OBJECT pDeviceObject,
IN PIRP pIrp);
#endif /* _FFS_HEADER_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -