📄 rfsd.h
字号:
IN PDEVICE_OBJECT DeviceObject);
BOOLEAN
RfsdFastIoQueryBasicInfo (
IN PFILE_OBJECT FileObject,
IN BOOLEAN Wait,
OUT PFILE_BASIC_INFORMATION Buffer,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject);
BOOLEAN
RfsdFastIoQueryStandardInfo (
IN PFILE_OBJECT FileObject,
IN BOOLEAN Wait,
OUT PFILE_STANDARD_INFORMATION Buffer,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject);
BOOLEAN
RfsdFastIoLock (
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
RfsdFastIoUnlockSingle (
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
RfsdFastIoUnlockAll (
IN PFILE_OBJECT FileObject,
IN PEPROCESS Process,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject
);
BOOLEAN
RfsdFastIoUnlockAllByKey (
IN PFILE_OBJECT FileObject,
IN PEPROCESS Process,
IN ULONG Key,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject
);
BOOLEAN
RfsdFastIoQueryNetworkOpenInfo (
IN PFILE_OBJECT FileObject,
IN BOOLEAN Wait,
OUT PFILE_NETWORK_OPEN_INFORMATION Buffer,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject );
BOOLEAN
RfsdFastIoQueryNetworkOpenInfo (
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
RfsdQueryInformation (IN PRFSD_IRP_CONTEXT IrpContext);
NTSTATUS
RfsdSetInformation (IN PRFSD_IRP_CONTEXT IrpContext);
NTSTATUS
RfsdExpandFile (
PRFSD_IRP_CONTEXT IrpContext,
PRFSD_VCB Vcb,
PRFSD_FCB Fcb,
PLARGE_INTEGER AllocationSize );
NTSTATUS
RfsdTruncateFile (
PRFSD_IRP_CONTEXT IrpContext,
PRFSD_VCB Vcb,
PRFSD_FCB Fcb,
PLARGE_INTEGER AllocationSize );
NTSTATUS
RfsdSetDispositionInfo(
PRFSD_IRP_CONTEXT IrpContext,
PRFSD_VCB Vcb,
PRFSD_FCB Fcb,
BOOLEAN bDelete);
NTSTATUS
RfsdSetRenameInfo(
PRFSD_IRP_CONTEXT IrpContext,
PRFSD_VCB Vcb,
PRFSD_FCB Fcb );
NTSTATUS
RfsdDeleteFile(
PRFSD_IRP_CONTEXT IrpContext,
PRFSD_VCB Vcb,
PRFSD_FCB Fcb );
//
// Flush.c
//
NTSTATUS
RfsdFlushFiles (IN PRFSD_VCB Vcb, BOOLEAN bShutDown);
NTSTATUS
RfsdFlushVolume (IN PRFSD_VCB Vcb, BOOLEAN bShutDown);
NTSTATUS
RfsdFlushFile (IN PRFSD_FCB Fcb);
NTSTATUS
RfsdFlush (IN PRFSD_IRP_CONTEXT IrpContext);
//
// Fsctl.c
//
VOID
RfsdSetVpbFlag (IN PVPB Vpb,
IN USHORT Flag );
VOID
RfsdClearVpbFlag (IN PVPB Vpb,
IN USHORT Flag );
BOOLEAN
RfsdCheckDismount (
IN PRFSD_IRP_CONTEXT IrpContext,
IN PRFSD_VCB Vcb,
IN BOOLEAN bForce );
NTSTATUS
RfsdPurgeVolume (IN PRFSD_VCB Vcb,
IN BOOLEAN FlushBeforePurge);
NTSTATUS
RfsdPurgeFile (IN PRFSD_FCB Fcb,
IN BOOLEAN FlushBeforePurge);
BOOLEAN
RfsdIsHandleCountZero(IN PRFSD_VCB Vcb);
NTSTATUS
RfsdLockVcb (IN PRFSD_VCB Vcb,
IN PFILE_OBJECT FileObject);
NTSTATUS
RfsdLockVolume (IN PRFSD_IRP_CONTEXT IrpContext);
NTSTATUS
RfsdUnlockVcb (IN PRFSD_VCB Vcb,
IN PFILE_OBJECT FileObject);
NTSTATUS
RfsdUnlockVolume (IN PRFSD_IRP_CONTEXT IrpContext);
NTSTATUS
RfsdAllowExtendedDasdIo(IN PRFSD_IRP_CONTEXT IrpContext);
NTSTATUS
RfsdUserFsRequest (IN PRFSD_IRP_CONTEXT IrpContext);
NTSTATUS
RfsdMountVolume (IN PRFSD_IRP_CONTEXT IrpContext);
NTSTATUS
RfsdVerifyVolume (IN PRFSD_IRP_CONTEXT IrpContext);
NTSTATUS
RfsdIsVolumeMounted (IN PRFSD_IRP_CONTEXT IrpContext);
NTSTATUS
RfsdDismountVolume (IN PRFSD_IRP_CONTEXT IrpContext);
NTSTATUS
RfsdFileSystemControl (IN PRFSD_IRP_CONTEXT IrpContext);
//
// Init.c
//
BOOLEAN
RfsdQueryParameters (IN PUNICODE_STRING RegistryPath);
VOID
DriverUnload (IN PDRIVER_OBJECT DriverObject);
//
// Lock.c
//
NTSTATUS
RfsdLockControl (IN PRFSD_IRP_CONTEXT IrpContext);
//
// Memory.c
//
PRFSD_IRP_CONTEXT
RfsdAllocateIrpContext (IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp );
VOID
RfsdFreeIrpContext (IN PRFSD_IRP_CONTEXT IrpContext);
PRFSD_FCB
RfsdAllocateFcb (IN PRFSD_VCB Vcb,
IN PRFSD_MCB RfsdMcb,
IN PRFSD_INODE Inode );
VOID
RfsdFreeFcb (IN PRFSD_FCB Fcb);
PRFSD_CCB
RfsdAllocateCcb (VOID);
VOID
RfsdFreeMcb (IN PRFSD_MCB Mcb);
PRFSD_FCB
RfsdCreateFcbFromMcb(PRFSD_VCB Vcb, PRFSD_MCB Mcb);
VOID
RfsdFreeCcb (IN PRFSD_CCB Ccb);
PRFSD_MCB
RfsdAllocateMcb ( PRFSD_VCB,
PUNICODE_STRING FileName,
ULONG FileAttr);
PRFSD_MCB
RfsdSearchMcbTree( PRFSD_VCB Vcb,
PRFSD_MCB RfsdMcb,
PRFSD_KEY_IN_MEMORY Key);
PRFSD_MCB
RfsdSearchMcb( PRFSD_VCB Vcb, PRFSD_MCB Parent,
PUNICODE_STRING FileName);
BOOLEAN
RfsdGetFullFileName( PRFSD_MCB Mcb,
PUNICODE_STRING FileName);
VOID
RfsdRefreshMcb(PRFSD_VCB Vcb, PRFSD_MCB Mcb);
VOID
RfsdAddMcbNode( PRFSD_VCB Vcb,
PRFSD_MCB Parent,
PRFSD_MCB Child );
BOOLEAN
RfsdDeleteMcbNode(
PRFSD_VCB Vcb,
PRFSD_MCB McbTree,
PRFSD_MCB RfsdMcb);
VOID
RfsdFreeMcbTree(PRFSD_MCB McbTree);
#if DISABLED
BOOLEAN
RfsdCheckSetBlock( PRFSD_IRP_CONTEXT IrpContext,
PRFSD_VCB Vcb, ULONG Block);
#endif
#if DISABLED
BOOLEAN
RfsdCheckBitmapConsistency( PRFSD_IRP_CONTEXT IrpContext,
PRFSD_VCB Vcb);
#endif
VOID
RfsdInsertVcb(PRFSD_VCB Vcb);
VOID
RfsdRemoveVcb(PRFSD_VCB Vcb);
NTSTATUS
RfsdInitializeVcb(
PRFSD_IRP_CONTEXT IrpContext,
PRFSD_VCB Vcb,
PRFSD_SUPER_BLOCK RfsdSb,
PDEVICE_OBJECT TargetDevice,
PDEVICE_OBJECT VolumeDevice,
PVPB Vpb );
VOID
RfsdFreeVcb (IN PRFSD_VCB Vcb );
VOID
RfsdRepinBcb (
IN PRFSD_IRP_CONTEXT IrpContext,
IN PBCB Bcb );
VOID
RfsdUnpinRepinnedBcbs (
IN PRFSD_IRP_CONTEXT IrpContext);
NTSTATUS
RfsdCompleteIrpContext (
IN PRFSD_IRP_CONTEXT IrpContext,
IN NTSTATUS Status );
VOID
RfsdSyncUninitializeCacheMap (
IN PFILE_OBJECT FileObject );
//
// Misc.c
//
/** Returns the length of a string (not including a terminating null), or MaximumLength if no terminator is found within MaximumLength characters. */
static inline USHORT RfsdStringLength(PUCHAR buffer, USHORT MaximumLength)
{
USHORT i = 0;
while ((buffer[i] != '\0') && (i < MaximumLength)) { i++; }
return i;
}
ULONG
RfsdLog2(ULONG Value);
LARGE_INTEGER
RfsdSysTime (IN ULONG i_time);
ULONG
RfsdInodeTime (IN LARGE_INTEGER SysTime);
ULONG
RfsdOEMToUnicodeSize(
IN PANSI_STRING Oem
);
NTSTATUS
RfsdOEMToUnicode(
IN OUT PUNICODE_STRING Oem,
IN POEM_STRING Unicode
);
ULONG
RfsdUnicodeToOEMSize(
IN PUNICODE_STRING Unicode
);
NTSTATUS
RfsdUnicodeToOEM (
IN OUT POEM_STRING Oem,
IN PUNICODE_STRING Unicode
);
//
// nls/nls_rtl.c
//
int
RfsdLoadAllNls();
VOID
RfsdUnloadAllNls();
//
// Pnp.c
//
NTSTATUS
RfsdPnp(IN PRFSD_IRP_CONTEXT IrpContext);
NTSTATUS
RfsdPnpQueryRemove(
PRFSD_IRP_CONTEXT IrpContext,
PRFSD_VCB Vcb );
NTSTATUS
RfsdPnpRemove(
PRFSD_IRP_CONTEXT IrpContext,
PRFSD_VCB Vcb );
NTSTATUS
RfsdPnpCancelRemove(
PRFSD_IRP_CONTEXT IrpContext,
PRFSD_VCB Vcb );
NTSTATUS
RfsdPnpSurpriseRemove(
PRFSD_IRP_CONTEXT IrpContext,
PRFSD_VCB Vcb );
//
// Read.c
//
BOOLEAN
RfsdCopyRead(
IN PFILE_OBJECT FileObject,
IN PLARGE_INTEGER FileOffset,
IN ULONG Length,
IN BOOLEAN Wait,
OUT PVOID Buffer,
OUT PIO_STATUS_BLOCK IoStatus );
NTSTATUS
RfsdReadInode (
IN PRFSD_IRP_CONTEXT IrpContext,
IN PRFSD_VCB Vcb,
IN PRFSD_KEY_IN_MEMORY Key,
IN PRFSD_INODE Inode,
IN ULONGLONG Offset,
IN PVOID Buffer,
IN ULONG Size,
OUT PULONG dwReturn
);
NTSTATUS
RfsdRead (IN PRFSD_IRP_CONTEXT IrpContext);
//
// Shutdown.c
//
NTSTATUS
RfsdShutDown (IN PRFSD_IRP_CONTEXT IrpContext);
//
// Volinfo.c
//
NTSTATUS
RfsdQueryVolumeInformation (IN PRFSD_IRP_CONTEXT IrpContext);
NTSTATUS
RfsdSetVolumeInformation (IN PRFSD_IRP_CONTEXT IrpContext);
//
// Write.c
//
#if 0
NTSTATUS
RfsdWriteInode (
IN PRFSD_IRP_CONTEXT IrpContext,
IN PRFSD_VCB Vcb,
IN ULONG InodeNo,
IN PRFSD_INODE Inode,
IN ULONGLONG Offset,
IN PVOID Buffer,
IN ULONG Size,
IN BOOLEAN bWriteToDisk,
OUT PULONG dwReturn
);
VOID
RfsdStartFloppyFlushDpc (
PRFSD_VCB Vcb,
PRFSD_FCB Fcb,
PFILE_OBJECT FileObject );
BOOLEAN
RfsdZeroHoles (
IN PRFSD_IRP_CONTEXT IrpContext,
IN PRFSD_VCB Vcb,
IN PFILE_OBJECT FileObject,
IN LONGLONG Offset,
IN LONGLONG Count );
NTSTATUS
RfsdWrite (IN PRFSD_IRP_CONTEXT IrpContext);
#endif
#endif /* _RFSD_HEADER_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -