interfaces.h

来自「samba最新软件」· C头文件 代码 · 共 2,736 行 · 第 1/4 页

H
2,736
字号
			uint32_t access_mask;			uint64_t position;			uint32_t mode;			uint32_t alignment_requirement;			struct smb_wire_string fname;		} out;	} all_info2;	/* RAW_FILEINFO_ALT_NAME_INFO and RAW_FILEINFO_ALT_NAME_INFORMATION interfaces */	struct {		enum smb_fileinfo_level level;		struct {			union smb_handle_or_path file;		} in;		struct {			struct smb_wire_string fname;		} out;	} alt_name_info;	/* RAW_FILEINFO_STREAM_INFO and RAW_FILEINFO_STREAM_INFORMATION interfaces */	struct {		enum smb_fileinfo_level level;		struct {			union smb_handle_or_path file;		} in;		struct stream_information {			uint_t num_streams;			struct stream_struct *streams;		} out;	} stream_info;		/* RAW_FILEINFO_COMPRESSION_INFO and RAW_FILEINFO_COMPRESSION_INFORMATION interfaces */	struct {		enum smb_fileinfo_level level;		struct {			union smb_handle_or_path file;		} in;		struct {			uint64_t compressed_size;			uint16_t format;			uint8_t unit_shift;			uint8_t chunk_shift;			uint8_t cluster_shift;		} out;	} compression_info;	/* RAW_FILEINFO_UNIX_BASIC interface */	struct {		enum smb_fileinfo_level level;		struct {			union smb_handle_or_path file;		} in;		struct {			uint64_t end_of_file;			uint64_t num_bytes;			NTTIME status_change_time;			NTTIME access_time;			NTTIME change_time;			uint64_t uid;			uint64_t gid;			uint32_t file_type;			uint64_t dev_major;			uint64_t dev_minor;			uint64_t unique_id;			uint64_t permissions;			uint64_t nlink;		} out;	} unix_basic_info;	/* RAW_FILEINFO_UNIX_INFO2 interface */	struct {		enum smb_fileinfo_level level;		struct {			union smb_handle_or_path file;		} in;		struct {			uint64_t end_of_file;			uint64_t num_bytes;			NTTIME status_change_time;			NTTIME access_time;			NTTIME change_time;			uint64_t uid;			uint64_t gid;			uint32_t file_type;			uint64_t dev_major;			uint64_t dev_minor;			uint64_t unique_id;			uint64_t permissions;			uint64_t nlink;			NTTIME create_time;			uint32_t file_flags;			uint32_t flags_mask;		} out;	} unix_info2;	/* RAW_FILEINFO_UNIX_LINK interface */	struct {		enum smb_fileinfo_level level;		struct {			union smb_handle_or_path file;		} in;		struct {			struct smb_wire_string link_dest;		} out;	} unix_link_info;	/* RAW_FILEINFO_INTERNAL_INFORMATION interface */	struct {		enum smb_fileinfo_level level;		struct {			union smb_handle_or_path file;		} in;		struct {			uint64_t file_id;		} out;	} internal_information;	/* RAW_FILEINFO_ACCESS_INFORMATION interface */	struct {		enum smb_fileinfo_level level;		struct {			union smb_handle_or_path file;		} in;		struct {			uint32_t access_flags;		} out;	} access_information;	/* RAW_FILEINFO_POSITION_INFORMATION interface */	struct {		enum smb_fileinfo_level level;		struct {			union smb_handle_or_path file;		} in;		struct {			uint64_t position;		} out;	} position_information;	/* RAW_FILEINFO_MODE_INFORMATION interface */	struct {		enum smb_fileinfo_level level;		struct {			union smb_handle_or_path file;		} in;		struct {			uint32_t mode;		} out;	} mode_information;	/* RAW_FILEINFO_ALIGNMENT_INFORMATION interface */	struct {		enum smb_fileinfo_level level;		struct {			union smb_handle_or_path file;		} in;		struct {			uint32_t alignment_requirement;		} out;	} alignment_information;	/* RAW_FILEINFO_NETWORK_OPEN_INFORMATION interface */	struct {		enum smb_fileinfo_level level;		struct {			union smb_handle_or_path file;		} in;		struct {			NTTIME create_time;			NTTIME access_time;			NTTIME write_time;			NTTIME change_time;			uint64_t alloc_size;			uint64_t size;			uint32_t attrib;		} out;	} network_open_information;	/* RAW_FILEINFO_ATTRIBUTE_TAG_INFORMATION interface */	struct {		enum smb_fileinfo_level level;		struct {			union smb_handle_or_path file;		} in;		struct {			uint32_t attrib;			uint32_t reparse_tag;		} out;	} attribute_tag_information;	/* RAW_FILEINFO_SEC_DESC */	struct {		enum smb_fileinfo_level level;		struct {			union smb_handle_or_path file;			uint32_t secinfo_flags;		} in;		struct {			struct security_descriptor *sd;		} out;	} query_secdesc;};enum smb_setfileinfo_level {	RAW_SFILEINFO_GENERIC		      = 0xF000, 	RAW_SFILEINFO_SETATTR,		      /* SMBsetatr */	RAW_SFILEINFO_SETATTRE,		      /* SMBsetattrE */	RAW_SFILEINFO_SEC_DESC,               /* NT_TRANSACT_SET_SECURITY_DESC */	RAW_SFILEINFO_STANDARD                = SMB_SFILEINFO_STANDARD,	RAW_SFILEINFO_EA_SET                  = SMB_SFILEINFO_EA_SET,	RAW_SFILEINFO_BASIC_INFO              = SMB_SFILEINFO_BASIC_INFO,	RAW_SFILEINFO_DISPOSITION_INFO        = SMB_SFILEINFO_DISPOSITION_INFO,	RAW_SFILEINFO_ALLOCATION_INFO         = SMB_SFILEINFO_ALLOCATION_INFO,	RAW_SFILEINFO_END_OF_FILE_INFO        = SMB_SFILEINFO_END_OF_FILE_INFO,	RAW_SFILEINFO_UNIX_BASIC              = SMB_SFILEINFO_UNIX_BASIC,	RAW_SFILEINFO_UNIX_INFO2              = SMB_SFILEINFO_UNIX_INFO2,	RAW_SFILEINFO_UNIX_LINK               = SMB_SFILEINFO_UNIX_LINK,	RAW_SFILEINFO_UNIX_HLINK	      = SMB_SFILEINFO_UNIX_HLINK,	RAW_SFILEINFO_BASIC_INFORMATION       = SMB_SFILEINFO_BASIC_INFORMATION,	RAW_SFILEINFO_RENAME_INFORMATION      = SMB_SFILEINFO_RENAME_INFORMATION,	RAW_SFILEINFO_DISPOSITION_INFORMATION = SMB_SFILEINFO_DISPOSITION_INFORMATION,	RAW_SFILEINFO_POSITION_INFORMATION    = SMB_SFILEINFO_POSITION_INFORMATION,	RAW_SFILEINFO_MODE_INFORMATION        = SMB_SFILEINFO_MODE_INFORMATION,	RAW_SFILEINFO_ALLOCATION_INFORMATION  = SMB_SFILEINFO_ALLOCATION_INFORMATION,	RAW_SFILEINFO_END_OF_FILE_INFORMATION = SMB_SFILEINFO_END_OF_FILE_INFORMATION,	RAW_SFILEINFO_1023                    = SMB_SFILEINFO_1023,	RAW_SFILEINFO_1025                    = SMB_SFILEINFO_1025,	RAW_SFILEINFO_1029                    = SMB_SFILEINFO_1029,	RAW_SFILEINFO_1032                    = SMB_SFILEINFO_1032,	RAW_SFILEINFO_1039                    = SMB_SFILEINFO_1039,	RAW_SFILEINFO_1040                    = SMB_SFILEINFO_1040,		/* cope with breakage in SMB2 */	RAW_SFILEINFO_RENAME_INFORMATION_SMB2 = SMB_SFILEINFO_RENAME_INFORMATION|0x80000000,};/* union used in setfileinfo() and setpathinfo() calls */union smb_setfileinfo {	/* generic interface */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;		} in;	} generic;	/* RAW_SFILEINFO_SETATTR (SMBsetatr) interface - only via setpathinfo() */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;			uint16_t attrib;			time_t write_time;		} in;	} setattr;	/* RAW_SFILEINFO_SETATTRE (SMBsetattrE) interface - only via setfileinfo() 	   also RAW_SFILEINFO_STANDARD */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;			time_t create_time;			time_t access_time;			time_t write_time;			/* notice that size, alloc_size and attrib are not settable,			   unlike the corresponding qfileinfo level */		} in;	} setattre, standard;	/* RAW_SFILEINFO_EA_SET interface */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;			uint_t num_eas;			struct ea_struct *eas;					} in;	} ea_set;	/* RAW_SFILEINFO_BASIC_INFO and	   RAW_SFILEINFO_BASIC_INFORMATION interfaces */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;			NTTIME create_time;			NTTIME access_time;			NTTIME write_time;			NTTIME change_time;			uint32_t attrib;		} in;	} basic_info;	/* RAW_SFILEINFO_DISPOSITION_INFO and 	   RAW_SFILEINFO_DISPOSITION_INFORMATION interfaces */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;			bool delete_on_close;		} in;	} disposition_info;	/* RAW_SFILEINFO_ALLOCATION_INFO and 	   RAW_SFILEINFO_ALLOCATION_INFORMATION interfaces */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;			/* w2k3 rounds this up to nearest 4096 */			uint64_t alloc_size;		} in;	} allocation_info;		/* RAW_SFILEINFO_END_OF_FILE_INFO and 	   RAW_SFILEINFO_END_OF_FILE_INFORMATION interfaces */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;			uint64_t size;		} in;	} end_of_file_info;	/* RAW_SFILEINFO_RENAME_INFORMATION interface */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;			uint8_t overwrite;			uint64_t root_fid;			const char *new_name;		} in;	} rename_information;	/* RAW_SFILEINFO_POSITION_INFORMATION interface */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;			uint64_t position;		} in;	} position_information;	/* RAW_SFILEINFO_MODE_INFORMATION interface */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;			/* valid values seem to be 0, 2, 4 and 6 */			uint32_t mode;		} in;	} mode_information;	/* RAW_SFILEINFO_UNIX_BASIC interface */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;			uint32_t mode; /* yuck - this field remains to fix compile of libcli/clifile.c */			uint64_t end_of_file;			uint64_t num_bytes;			NTTIME status_change_time;			NTTIME access_time;			NTTIME change_time;			uint64_t uid;			uint64_t gid;			uint32_t file_type;			uint64_t dev_major;			uint64_t dev_minor;			uint64_t unique_id;			uint64_t permissions;			uint64_t nlink;		} in;	} unix_basic;	/* RAW_SFILEINFO_UNIX_INFO2 interface */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;			uint64_t end_of_file;			uint64_t num_bytes;			NTTIME status_change_time;			NTTIME access_time;			NTTIME change_time;			uint64_t uid;			uint64_t gid;			uint32_t file_type;			uint64_t dev_major;			uint64_t dev_minor;			uint64_t unique_id;			uint64_t permissions;			uint64_t nlink;			NTTIME create_time;			uint32_t file_flags;			uint32_t flags_mask;		} in;	} unix_info2;	/* RAW_SFILEINFO_UNIX_LINK, RAW_SFILEINFO_UNIX_HLINK interface */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;			const char *link_dest;		} in;	} unix_link, unix_hlink;	/* RAW_FILEINFO_SET_SEC_DESC */	struct {		enum smb_setfileinfo_level level;		struct {			union smb_handle_or_path file;			uint32_t secinfo_flags;			struct security_descriptor *sd;		} in;	} set_secdesc;};enum smb_fsinfo_level {		   RAW_QFS_GENERIC                        = 0xF000, 		   RAW_QFS_DSKATTR,                         /* SMBdskattr */		   RAW_QFS_ALLOCATION                     = SMB_QFS_ALLOCATION,		   RAW_QFS_VOLUME                         = SMB_QFS_VOLUME,		   RAW_QFS_VOLUME_INFO                    = SMB_QFS_VOLUME_INFO,		   RAW_QFS_SIZE_INFO                      = SMB_QFS_SIZE_INFO,		   RAW_QFS_DEVICE_INFO                    = SMB_QFS_DEVICE_INFO,		   RAW_QFS_ATTRIBUTE_INFO                 = SMB_QFS_ATTRIBUTE_INFO,		   RAW_QFS_UNIX_INFO                      = SMB_QFS_UNIX_INFO,		   RAW_QFS_VOLUME_INFORMATION		  = SMB_QFS_VOLUME_INFORMATION,		   RAW_QFS_SIZE_INFORMATION               = SMB_QFS_SIZE_INFORMATION,		   RAW_QFS_DEVICE_INFORMATION             = SMB_QFS_DEVICE_INFORMATION,		   RAW_QFS_ATTRIBUTE_INFORMATION          = SMB_QFS_ATTRIBUTE_INFORMATION,		   RAW_QFS_QUOTA_INFORMATION              = SMB_QFS_QUOTA_INFORMATION,		   RAW_QFS_FULL_SIZE_INFORMATION          = SMB_QFS_FULL_SIZE_INFORMATION,		   RAW_QFS_OBJECTID_INFORMATION           = SMB_QFS_OBJECTID_INFORMATION};/* union for fsinfo() backend call. Note that there are no in   structures, as this call only contains out parameters */union smb_fsinfo {	/* generic interface */	struct {		enum smb_fsinfo_level level;		struct smb2_handle handle; /* only for smb2 */		struct {			uint32_t block_size;			uint64_t blocks_total;			uint64_t blocks_free;			uint32_t fs_id;			NTTIME create_time;			uint32_t serial_number;			uint32_t fs_attr;			uint32_t max_file_component_length;			uint32_t device_type;			uint32_t device_characteristics;			uint64_t quota_soft;			uint64_t quota_hard;			uint64_t quota_flags;			struct GUID guid;			char *volume_name;			char *fs_type;		} out;	} generic;	/* SMBdskattr interface */	struct {		enum smb_fsinfo_level level;		struct {			uint16_t units_total;			uint16_t blocks_per_unit;			uint16_t block_size;			uint16_t units_free;		} out;	} dskattr;	/* trans2 RAW_QFS_ALLOCATION interface */	struct {		enum smb_fsinfo_level level;		struct {			uint32_t fs_id;			uint32_t sectors_per_unit;			uint32_t total_alloc_units;			uint32_t avail_alloc_units;			uint16_t bytes_per_sector;		} out;	} allocation;	/* TRANS2 RAW_QFS_VOLUME interface */	struct {		enum smb_fsinfo_level level;		struct {			uint32_t serial_number;			struct smb_wire_string volume_name;		} out;	} volume;	/* TRANS2 RAW_QFS_VOLUME_INFO and RAW_QFS_VOLUME_INFORMATION interfaces */	struct {		enum smb_fsinfo_level level;		struct smb2_handle handle; /* only for smb2 */		struct {			NTTIME create_time;			uint32_t serial_number;			struct smb_wire_string volume_name;		} out;	} volume_info;	/* trans2 RAW_QFS_SIZE_INFO and RAW_QFS_SIZE_INFORMATION interfaces */	struct {		enum smb_fsinfo_level level;		struct smb2_handle handle; /* only for smb2 */		struct {			uint64_t total_alloc_units;			uint64_t avail_alloc_units; /* maps to call_avail_alloc_units */			uint32_t sectors_per_unit;			uint32_t bytes_per_sector;		} out;	} size_info;	/* TRANS2 RAW_QFS_DEVICE_INFO and RAW_QFS_DEVICE_INFORMATION interfaces */	struct {		enum smb_fsinfo_level level;		struct smb2_handle handle; /* only for smb2 */		struct {			uint32_t device_type;			uint32_t characteristics;		} out;	} device_info;	/* TRANS2 RAW_QFS_ATTRIBUTE_INFO and RAW_QFS_ATTRIBUTE_INFORMATION interfaces */	struct {		enum smb_fsinfo_level level;		struct smb2_handle handle; /* only for smb2 */		struct {			uint32_t fs_attr;			uint32_t max_file_component_length;			struct smb_wire_string fs_type;		} out;	} attribute_info;	/* TRANS2 RAW_QFS_UNIX_INFO interface */	struct {		enum smb_fsinfo_level level;		struct {			uint16_t major_version;			uint16_t minor_version;			uint64_t capability;		} out;	} unix_info;	/* trans2 RAW_QFS_QUOTA_INFORMATION interface */	struct {		enum smb_fsinfo_level level;		struct smb2_handle handle; /* only for smb2 */		struct {			uint64_t unknown[3];			uint64_t quota_soft;			uint64_t quota_hard;			uint64_t quota_flags;		} out;	} quota_information;		/* trans2 RAW_QFS_FULL_SIZE_INFORMATION interface */	struct {		enum smb_fsinfo_level level;		struct smb2_handle handle; /* only for smb2 */		struct {			uint64_t total_alloc_units;			uint64_t call_avail_alloc_units;			uint64_t actual_avail_alloc_units;			uint32_t sectors_per_unit;			uint32_t bytes_per_sector;		} out;	} full_size_information;	/* trans2 RAW_QFS_OBJECTID_INFORMATION interface */	struct {		enum smb_fsinfo_level level;		struct smb2_handle handle; /* only for smb2 */		struct {			struct GUID  guid;			uint64_t unknown[6];		} out;	} objectid_information;	};enum smb_open_level {	RAW_OPEN_OPEN,	RAW_OPEN_OPENX, 	RAW_OPEN_MKNEW,	RAW_OPEN_CREATE, 	RAW_OPEN_CTEMP,	RAW_OPEN_SPLOPEN,	RAW_OPEN_NTCREATEX,	RAW_OPEN_T2OPEN,	RAW_OPEN_NTTRANS_CREATE, 	RAW_OPEN_OPENX_READX,	RAW_OPEN_SMB2};/* the generic interface is defined to be equal to the NTCREATEX interface */#define RAW_OPEN_GENERIC RAW_OPEN_NTCREATEX/* union for open() backend call */union smb_open {/*  * because the *.out.file structs are not aligned to the same offset for each level * we provide a hepler macro that should be used to find the current smb_handle structure */#define SMB_OPEN_OUT_FILE(op, file) do { \	switch (op->generic.level) { \	case RAW_OPEN_OPEN: \		file = &op->openold.out.file; \		break; \	case RAW_OPEN_OPENX: \		file = &op->openx.out.file; \		break; \	case RAW_OPEN_MKNEW: \		file = &op->mknew.out.file; \		break; \	case RAW_OPEN_CREATE: \		file = &op->create.out.file; \		break; \	case RAW_OPEN_CTEMP: \		file = &op->ctemp.out.file; \		break; \	case RAW_OPEN_SPLOPEN: \		file = &op->splopen.out.file; \		break; \	case RAW_OPEN_NTCREATEX: \		file = &op->ntcreatex.out.file; \		break; \	case RAW_OPEN_T2OPEN: \		file = &op->t2open.out.file; \		break; \	case RAW_OPEN_NTTRANS_CREATE: \		file = &op->nttrans.out.file; \		break; \	case RAW_OPEN_OPENX_READX: \		file = &op->openxreadx.out.file; \		break; \	case RAW_OPEN_SMB2: \		file = &op->smb2.out.file; \		break; \	default: \		/* this must be a programmer error */ \		file = NULL; \		break; \	} \} while (0)	/* SMBNTCreateX, nttrans and generic interface */	struct {		enum smb_open_level level;		struct {			uint32_t flags;			uint32_t root_fid;			uint32_t access_mask;			uint64_t alloc_size;			uint32_t file_attr;			uint32_t share_access;			uint32_t open_disposition;			uint32_t create_options;

⌨️ 快捷键说明

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