⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ext2fs.h

📁 一个windows 文件系统驱动源码
💻 H
📖 第 1 页 / 共 3 页
字号:
 NTSTATUS
 Ext2InitializeVcb(
	IN PEXT2_IRP_CONTEXT	IrpContext, 
	PEXT2_VCB				Vcb, 
    PEXT2_SUPER_BLOCK		Ext2Sb, 
	PDEVICE_OBJECT			TargetDevice,
    PDEVICE_OBJECT			VolumeDevice, 
	PVPB					Vpb);

 VOID
 Ext2FreeVcb (
	IN PEXT2_VCB Vcb );

 // fastio.c

 BOOLEAN
 Ext2FastIoQueryBasicInfo (
	IN PFILE_OBJECT             FileObject,
	IN BOOLEAN                  Wait,
	OUT PFILE_BASIC_INFORMATION Buffer,
	OUT PIO_STATUS_BLOCK        IoStatus,
	IN PDEVICE_OBJECT           DeviceObject );

 BOOLEAN
 Ext2FastIoQueryStandardInfo (
	IN PFILE_OBJECT                 FileObject,
	IN BOOLEAN                      Wait,
	OUT PFILE_STANDARD_INFORMATION  Buffer,
	OUT PIO_STATUS_BLOCK            IoStatus,
	IN PDEVICE_OBJECT               DeviceObject );

 BOOLEAN
 Ext2FastIoLock (
	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
 Ext2FastIoUnlockSingle (
	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
 Ext2FastIoUnlockAll (
    IN PFILE_OBJECT         FileObject,
    IN PEPROCESS            Process,
    OUT PIO_STATUS_BLOCK    IoStatus,
    IN PDEVICE_OBJECT       DeviceObject  );

 BOOLEAN
 Ext2FastIoUnlockAllByKey (
	IN PFILE_OBJECT         FileObject,
	IN PEPROCESS            Process,
	IN ULONG                Key,
	OUT PIO_STATUS_BLOCK    IoStatus,
	IN PDEVICE_OBJECT       DeviceObject  );

 BOOLEAN
 Ext2FastIoQueryNetworkOpenInfo (
	IN PFILE_OBJECT                     FileObject,
	IN BOOLEAN                          Wait,
	OUT PFILE_NETWORK_OPEN_INFORMATION  Buffer,
	OUT PIO_STATUS_BLOCK                IoStatus,
	IN PDEVICE_OBJECT                   DeviceObject );

 BOOLEAN
 Ext2FastIoQueryNetworkOpenInfo (
	IN PFILE_OBJECT                     FileObject,
    IN BOOLEAN                          Wait,
    OUT PFILE_NETWORK_OPEN_INFORMATION  Buffer,
    OUT PIO_STATUS_BLOCK                IoStatus,
    IN PDEVICE_OBJECT                   DeviceObject );

 // lock.c

 NTSTATUS
 Ext2LockControl (
	IN PEXT2_IRP_CONTEXT IrpContext );

 // cmcb.c

 BOOLEAN
 Ext2AcquireForLazyWrite (
	IN PVOID    Context,
    IN BOOLEAN  Wait );

 VOID
 Ext2ReleaseFromLazyWrite (
	IN PVOID Context );

 BOOLEAN
 Ext2AcquireForReadAhead (
	IN PVOID    Context,
    IN BOOLEAN  Wait );

 BOOLEAN
 Ext2NoOpAcquire (
	IN PVOID Fcb,
    IN BOOLEAN Wait );

 VOID
 Ext2NoOpRelease (
	IN PVOID Fcb    );

 VOID
 Ext2ReleaseFromReadAhead (
	IN PVOID Context );

 NTSTATUS
 Ext2Close (
	IN PEXT2_IRP_CONTEXT IrpContext );

 VOID
 Ext2QueueCloseRequest (
	IN PEXT2_IRP_CONTEXT IrpContext );

 VOID
 Ext2DeQueueCloseRequest (
	IN PVOID Context );

 PEXT2_FCB
 Ext2SearchFcbList(	
	IN PEXT2_VCB    Vcb,
	IN ULONG        inode);

 NTSTATUS
 Ext2ScanDir (
	IN PEXT2_VCB		Vcb,
    IN PEXT2_MCB        ParentMcb,
    IN PUNICODE_STRING  FileName,
	IN OUT PULONG       Index,
	IN PEXT2_INODE      ext2_inode,
	IN PEXT2_DIR_ENTRY2 dir_entry);

 NTSTATUS
 Ext2LookupFileName (
	IN PEXT2_VCB    Vcb,
	IN PUNICODE_STRING		FullFileName,
    IN PEXT2_FCB            ParentFcb,
    OUT PEXT2_MCB *         Ext2Mcb,
	IN OUT PEXT2_INODE		ext2_inode);

 NTSTATUS
 Ext2CreateFile(
	IN PEXT2_IRP_CONTEXT IrpContext, 
	PEXT2_VCB			 Vcb );

 NTSTATUS
 Ext2CreateVolume(
	IN PEXT2_IRP_CONTEXT IrpContext, 
	PEXT2_VCB Vcb );

 NTSTATUS
 Ext2Create (
	IN PEXT2_IRP_CONTEXT IrpContext );

 NTSTATUS
 Ext2CreateInode(
    PEXT2_IRP_CONTEXT   IrpContext,
    PEXT2_VCB           Vcb,
    PEXT2_FCB           pParentFcb,
    ULONG               Type,
    ULONG               FileAttr,
    PUNICODE_STRING     FileName);

 NTSTATUS
 Ext2Read (
	IN PEXT2_IRP_CONTEXT IrpContext );

 // Fileinfo.c

 NTSTATUS
 Ext2QueryInformation (
	IN PEXT2_IRP_CONTEXT IrpContext );

 NTSTATUS
 Ext2SetInformation (
	IN PEXT2_IRP_CONTEXT IrpContext);

 BOOLEAN
 Ext2ExpandFileAllocation (
    PEXT2_IRP_CONTEXT IrpContext,
    PEXT2_VCB Vcb,
    PEXT2_FCB Fcb,
    PLARGE_INTEGER AllocationSize );

 BOOLEAN
 Ext2TruncateFileAllocation (
    PEXT2_IRP_CONTEXT IrpContext,
    PEXT2_VCB Vcb,
    PEXT2_FCB Fcb,
    PLARGE_INTEGER AllocationSize );

 NTSTATUS
 Ext2SetDispositionInfo(
    PEXT2_IRP_CONTEXT IrpContext,
    PEXT2_VCB Vcb,
    PEXT2_FCB Fcb,
    BOOLEAN bDelete );

 NTSTATUS
 Ext2SetRenameInfo(
    PEXT2_IRP_CONTEXT IrpContext,
    PEXT2_VCB Vcb,
    PEXT2_FCB Fcb );

 // Volinfo.c
 
 NTSTATUS
 Ext2QueryVolumeInformation (
	IN PEXT2_IRP_CONTEXT IrpContext );

 NTSTATUS
 Ext2SetVolumeInformation (
	IN PEXT2_IRP_CONTEXT IrpContext );

 NTSTATUS
 Ext2CharToWchar (
	IN OUT PWCHAR   Destination,
	IN PCHAR        Source,
	IN ULONG        Length );

 NTSTATUS
 Ext2WcharToChar (
	IN OUT PCHAR    Destination,
	IN PWCHAR       Source,
	IN ULONG        Length);

 NTSTATUS
 Ext2LockUserBuffer (
	IN PIRP             Irp,
    IN ULONG            Length,
    IN LOCK_OPERATION   Operation);

 PVOID
 Ext2GetUserBuffer (
	IN PIRP Irp );

 ULONG
 Ext2GetInfoLength(
	IN FILE_INFORMATION_CLASS  FileInformationClass );

 ULONG
 Ext2ProcessDirEntry(
	IN PEXT2_VCB         Vcb,
    IN FILE_INFORMATION_CLASS  FileInformationClass,
    IN ULONG         in,
    IN PVOID         Buffer,
    IN ULONG         UsedLength,
    IN ULONG         Length,
    IN ULONG         FileIndex,
    IN UNICODE_STRING*   pName,
    IN BOOLEAN       Single );

 NTSTATUS
 Ext2QueryDirectory (
	IN PEXT2_IRP_CONTEXT IrpContext );

 NTSTATUS
 Ext2NotifyChangeDirectory (
    IN PEXT2_IRP_CONTEXT IrpContext    );

 NTSTATUS
 Ext2DirectoryControl (
	IN PEXT2_IRP_CONTEXT IrpContext);

 NTSTATUS
 Ext2CompleteIrpContext (
    IN PEXT2_IRP_CONTEXT IrpContext,
    IN NTSTATUS Status );

 NTSTATUS
 Ext2QueueRequest (
	IN PEXT2_IRP_CONTEXT IrpContext );

 VOID
 Ext2DeQueueRequest (
	IN PVOID Context );

 NTSTATUS
 Ext2Cleanup (
	IN PEXT2_IRP_CONTEXT IrpContext );
 
 NTSTATUS
 Ext2DeviceControlNormal (
	IN PEXT2_IRP_CONTEXT IrpContext );

 NTSTATUS
 Ext2PrepareToUnload (
	IN PEXT2_IRP_CONTEXT IrpContext );

 NTSTATUS
 Ext2DeviceControl (
	IN PEXT2_IRP_CONTEXT IrpContext );

 NTSTATUS
 Ext2VerifyVolume (
	IN PEXT2_IRP_CONTEXT IrpContext );
 
 NTSTATUS
 Ext2IsVolumeMounted (
	IN PEXT2_IRP_CONTEXT IrpContext );
 
 NTSTATUS
 Ext2DismountVolume (
	IN PEXT2_IRP_CONTEXT IrpContext );
 
 NTSTATUS
 Ext2PurgeVolume (
	IN PEXT2_VCB Vcb,
    IN BOOLEAN  FlushBeforePurge);

 NTSTATUS
 Ext2PurgeFile (
	IN PEXT2_FCB Fcb,
    IN BOOLEAN   FlushBeforePurge);

 NTSTATUS
 Ext2LockVolume (
	IN PEXT2_IRP_CONTEXT IrpContext );
 
 NTSTATUS
 Ext2UnlockVolume (
	IN PEXT2_IRP_CONTEXT IrpContext );

 NTSTATUS
 Ext2UserFsRequest (
	IN PEXT2_IRP_CONTEXT IrpContext );

 NTSTATUS
 Ext2MountVolume (
	IN PEXT2_IRP_CONTEXT IrpContext );

 NTSTATUS
 Ext2FileSystemControl (
	IN PEXT2_IRP_CONTEXT IrpContext );

 NTSTATUS
 Ext2DispatchRequest (
	IN PEXT2_IRP_CONTEXT IrpContext );

 NTSTATUS
 Ext2ExceptionFilter (
	IN PEXT2_IRP_CONTEXT    IrpContext,
	IN NTSTATUS             ExceptionCode );

 NTSTATUS
 Ext2ExceptionHandler (
	IN PEXT2_IRP_CONTEXT IrpContext );

 VOID
 Ext2SetVpbFlag (
	IN PVPB     Vpb,
    IN USHORT   Flag );

 VOID
 Ext2ClearVpbFlag (
	IN PVPB     Vpb,
    IN USHORT   Flag );

 NTSTATUS
 Ext2BuildRequest (
	IN PDEVICE_OBJECT   DeviceObject,
    IN PIRP             Irp);

 // init.c

 extern PEXT2_GLOBAL	gExt2Global;

 BOOLEAN
 Ext2QueryRegistry( 
 	IN PUNICODE_STRING  RegistryPath, 
 	PULONG WritingSupport );

 NTSTATUS DriverEntry (
	IN PDRIVER_OBJECT   DriverObject,
	IN PUNICODE_STRING  RegistryPath );

 BOOLEAN
 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 );

 PSZ
 Ext2DbgNtStatusToString (
	IN NTSTATUS Status );

 #if DBG
  
	 BOOLEAN
	 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);
 
	 BOOLEAN
	 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 );

	#define Ext2CompleteRequest(Irp, PriorityBoost)		\
			Ext2DbgPrintComplete(Irp);					\
			IoCompleteRequest(Irp, PriorityBoost)

 #else

	 #define Ext2CompleteRequest(Irp, PriorityBoost)	\
		    IoCompleteRequest(Irp, PriorityBoost)

 #endif // DBG

 // Flush.c
 
 NTSTATUS
 Ext2FlushVolume (
	IN PEXT2_VCB	Vcb, 
	BOOLEAN			bShutDown );

 NTSTATUS
 Ext2FlushFile (
	IN PEXT2_FCB Fcb );

 NTSTATUS
 Ext2Flush (
	IN PEXT2_IRP_CONTEXT IrpContext );

 // Shutdown.c

 NTSTATUS
 Ext2ShutDown (
	IN PEXT2_IRP_CONTEXT IrpContext );

 // Write.c

 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 );

 BOOLEAN
 Ext2SupersedeOrOverWriteFile(
    PEXT2_IRP_CONTEXT	IrpContext,
    PEXT2_VCB			Vcb,
    PEXT2_FCB			Fcb,
    ULONG				Disposition );

 BOOLEAN Ext2IsDirectoryEmpty (
    PEXT2_VCB Vcb,
    PEXT2_FCB Fcb );

 BOOLEAN
 Ext2DeleteFile(
    PEXT2_IRP_CONTEXT IrpContext,
    PEXT2_VCB Vcb,
    PEXT2_FCB Fcb );

 //
 // These decls. are missed out at times.
 //

 #if (_WIN32_WINNT == 0x0500)

 USHORT
 FASTCALL
 RtlUshortByteSwap(
    IN USHORT Source    );

 ULONG
 FASTCALL
 RtlUlongByteSwap(
    IN ULONG Source    );

 ULONGLONG
 FASTCALL
 RtlUlonglongByteSwap(
    IN ULONGLONG Source    );

 #endif // (_WIN32_WINNT >= 0x0500)

 /////////////////////////////////////////////////////////////////////////////
 
 #endif		// __EXT2FS_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -