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

📄 struct.h

📁 NTFS(NT文件系统) for Linux的一个实现源码
💻 H
字号:
/* * struct.h * Structure definitions * *  Copyright (C) 1997 R間is Duchesne *//* Necessary forward definition */struct ntfs_inode;#ifdef __FreeBSD__#include <sys/queue.h>/* Define the struct ntfs_head type */LIST_HEAD(ntfs_head,ntfs_inode);#endif/* which files should be returned from a director listing *//* only short names, no hidden files */#define ngt_dos   1/* only long names, all-uppercase becomes all-lowercase, no hidden files */#define ngt_nt    2/* all names except hidden files */#define ngt_posix 3/* all entries */#define ngt_full  4#ifdef NTFS_IN_LINUX_KERNELtypedef struct ntfs_sb_info ntfs_volume;#elsetypedef struct _ntfs_volume{	/* NTFS_SB_INFO_START */	/* Configuration provided by user at mount time */	ntfs_uid_t uid;	ntfs_gid_t gid;	ntmode_t umask;        unsigned int nct;	void *nls_map;	unsigned int ngt;	/* Configuration provided by user with ntfstools */	ntfs_size_t partition_bias;	/* for access to underlying device */	/* Attribute definitions */	ntfs_u32 at_standard_information;	ntfs_u32 at_attribute_list;	ntfs_u32 at_file_name;	ntfs_u32 at_security_descriptor;	ntfs_u32 at_data;	ntfs_u32 at_index_root;	ntfs_u32 at_index_allocation;	ntfs_u32 at_bitmap;	ntfs_u32 at_symlink; /* aka SYMBOLIC_LINK or REPARSE_POINT */	/* Data read from the boot file */	int blocksize;	int clusterfactor;	int clustersize;	int mft_recordsize;	int mft_clusters_per_record;	int index_recordsize;	int index_clusters_per_record;	int mft_cluster;	/* data read from special files */	unsigned char *mft;	unsigned short *upcase;	unsigned int upcase_length;	/* inodes we always hold onto */	struct ntfs_inode *mft_ino;	struct ntfs_inode *mftmirr;	struct ntfs_inode *bitmap;	/* NTFS_SB_INFO_END */	union{		int fd;		/* file descriptor for the tools */		void *sb;	/* pointer to super block for the kernel */	}u;#ifdef __FreeBSD__	dev_t rdev;	struct vnode *devvp;	struct ntfs_head *inode_hash;   /* not really a hash */#endif}ntfs_volume;#endiftypedef struct {	ntfs_cluster_t cluster;	ntfs_cluster_t len;}ntfs_runlist;typedef struct ntfs_attribute{	int type;	ntfs_u16 *name;	int namelen;	int attrno;	int size,allocated,initialized,compsize;	int compressed,resident,indexed;	int cengine;	union{		void *data;             /* if resident */		struct {			ntfs_runlist *runlist;			int len;		}r;	}d;}ntfs_attribute;/* Structure to define IO to user buffer. do_read means that   the destination has to be written using fn_put, do_write means   that the destination has to read using fn_get. So, do_read is   from a user's point of view, while put and get are from the driver's   point of view. The first argument is always the destination of the IO*/#ifdef NTFS_IN_LINUX_KERNELtypedef struct ntfs_inode_info ntfs_inode;#elsetypedef struct ntfs_inode{	ntfs_volume *vol;	/* NTFS_INODE_INFO_START */	int i_number;                /* should be really 48 bits */	unsigned sequence_number;	unsigned char* attr;         /* array of the attributes */	int attr_count;              /* size of attrs[] */	struct ntfs_attribute *attrs;	int record_count;            /* size of records[] */	/* array of the record numbers of the MFT 	   whose attributes have been inserted in the inode */	int *records;	union{		struct{			int recordsize;			int clusters_per_record;		}index;	} u;		/* NTFS_INODE_INFO_END */#ifdef __FreeBSD__	struct vnode *vp;	LIST_ENTRY(ntfs_inode) h_next;#endif}ntfs_inode;#endiftypedef struct ntfs_io{	int do_read;	void (*fn_put)(struct ntfs_io *dest, void *buf, ntfs_size_t);	void (*fn_get)(void *buf, struct ntfs_io *src, ntfs_size_t len);	void *param;	int size;}ntfs_io;#if 0typedef struct {	ntfs_volume *vol;	ntfs_inode *ino;	int type;	char *name;	int mftno;	int start_vcn;} ntfs_attrlist_item;#endif

⌨️ 快捷键说明

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